## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 4 ) ## ----eval=FALSE--------------------------------------------------------------- # # From CRAN (when available) # install.packages("RegimeChange") # # # From GitHub # # devtools::install_github("yourusername/RegimeChange") ## ----message=FALSE, warning=FALSE--------------------------------------------- library(RegimeChange) # Generate example data with a changepoint at t=100 set.seed(123) data <- c(rnorm(100, mean = 0, sd = 1), rnorm(100, mean = 3, sd = 1)) # Detect changepoints using PELT (default) result <- detect_regimes(data) # Print results print(result) ## ----------------------------------------------------------------------------- # Basic plot plot(result) # Segment-colored plot plot(result, type = "segments") ## ----eval=FALSE--------------------------------------------------------------- # # PELT - Pruned Exact Linear Time (default) # result_pelt <- detect_regimes(data, method = "pelt") # # # Binary Segmentation # result_binseg <- detect_regimes(data, method = "binseg") # # # Wild Binary Segmentation # result_wbs <- detect_regimes(data, method = "wbs") # # # CUSUM # result_cusum <- detect_regimes(data, method = "cusum") ## ----eval=FALSE--------------------------------------------------------------- # # BOCPD - Bayesian Online Changepoint Detection # result_bocpd <- detect_regimes(data, method = "bocpd") # # # Shiryaev-Roberts # result_sr <- detect_regimes(data, method = "shiryaev", mu0 = 0, mu1 = 3, sigma = 1) ## ----eval=FALSE--------------------------------------------------------------- # # Mean changes (default) # detect_regimes(data, type = "mean") # # # Variance changes # detect_regimes(data, type = "variance") # # # Both mean and variance # detect_regimes(data, type = "both") # # # Trend changes # detect_regimes(data, type = "trend") ## ----eval=FALSE--------------------------------------------------------------- # # Normal-Gamma prior for unknown mean and variance # prior <- normal_gamma(mu0 = 0, kappa0 = 1, alpha0 = 1, beta0 = 1) # result <- detect_regimes(data, method = "bocpd", prior = prior) # # # Geometric hazard prior # hazard <- geometric_hazard(lambda = 0.01) # result <- detect_regimes(data, method = "bocpd", hazard = hazard) ## ----------------------------------------------------------------------------- # True changepoint is at position 100 evaluation <- evaluate(result, true_changepoints = 100, tolerance = 5) print(evaluation) ## ----eval=FALSE--------------------------------------------------------------- # comparison <- compare_methods( # data = data, # methods = c("pelt", "bocpd", "binseg"), # true_changepoints = 100 # ) # print(comparison) ## ----eval=FALSE--------------------------------------------------------------- # # Create online detector # detector <- regime_detector(method = "bocpd", prior = normal_gamma()) # # # Process observations one at a time # for (x in data) { # result <- update(detector, x) # detector <- result$detector # # if (result$alarm) { # cat("Changepoint detected at observation", length(detector$history), "\n") # } # } ## ----eval=FALSE--------------------------------------------------------------- # result <- detect_regimes(data, uncertainty = TRUE, bootstrap_reps = 100) # print(result$confidence_intervals)