Usage
To installtidychangepoint from CRAN:
install.packages("tidychangepoint")To install the development version oftidychangepoint:
remotes::install_github("beanumber/tidychangepoint")To load it:
Tidy methods for changepoint analysis
Thetidychangepoint package allows you to use any number of algorithms for detecting changepoint sets in univariate time series with a common,tidyverse-compliant interface. Currently, algorithms fromchangepoint,wbs, and several genetic algorithms made accessible viaGA are supported. It also provides model-fitting procedures for commonly-used parametric models, tools for computing various penalty functions, and graphical diagnostic displays.
Changepoint sets are computed using thesegment() function, which takes a numeric vector that is coercible into ats object, and a string indicating the algorithm you wish you use.segment() always returns atidycpt object.
Various methods are available fortidycpt objects. For example,as.ts() returns the original data asts object, andchangepoints() returns the set of changepoint indices.
changepoints(x)If the original time series has time labels, we can also retrieve that information.
changepoints(x, use_labels=TRUE)Thefitness() function returns the both the value and the name of the objective function that the algorithm used to find the optimal changepoint set.
fitness(x)Thetidy() method shows the fitted parameters values for each region.
tidy(x)## Registered S3 method overwritten by 'tsibble':## method from## as_tibble.grouped_df dplyr## # A tibble: 2 × 9## region num_obs min max mean sd begin end param_mu## <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>## 1 [1,330) 329 6.86 10.6 9.17 0.615 1 330 9.17## 2 [330,367) 37 8.95 11.2 10.3 0.528 330 367 10.3Algorithmic coverage
## # A tibble: 14 × 5## method pkg segmenter_class helper wraps## <chr> <chr> <chr> <chr> <chr>## 1 pelt changepoint cpt segment_pelt() changepoint:…## 2 binseg changepoint cpt <NA> changepoint:…## 3 segneigh changepoint cpt <NA> changepoint:…## 4 single-best changepoint cpt <NA> changepoint:…## 5 wbs wbs wbs <NA> wbs::wbs()## 6 ga GA tidyga segment_ga() GA::ga()## 7 ga-shi GA tidyga segment_ga_shi() segment_ga()## 8 ga-coen GA tidyga segment_ga_coen() segment_ga()## 9 coen tidychangepoint seg_basket segment_coen() <NA>## 10 random GA tidyga segment_ga_random() segment_ga()## 11 manual tidychangepoint seg_cpt segment_manual() <NA>## 12 null tidychangepoint seg_cpt segment_manual() <NA>## 13 segmented segmented segmented <NA> segmented::s…## 14 cptga changepointGA tidycptga segment_cptga() changepointG…ls_coverage()|>dplyr::group_by(method)|>dplyr::summarize( models=paste(unique(model), collapse=", "), penalties=paste(unique(penalty), collapse=", "))|>dplyr::arrange(method)|>knitr::kable()| method | models | penalties |
|---|---|---|
| binseg | fit_meanvar | None, SIC, BIC, MBIC, AIC, HQC, Asymptotic, Manual, CROPS |
| coen | fit_nhpp | BMDL |
| cptga | NA | NA |
| ga | fit_arima, fit_lmshift, fit_lmshift_ar1, fit_meanshift_lnorm, fit_meanshift_norm, fit_meanshift_norm_ar1, fit_meanvar, fit_nhpp, fit_trendshift, fit_trendshift_ar1 | SIC, AIC, BIC, HQC, MBIC, MDL |
| ga-coen | fit_nhpp | BMDL |
| ga-shi | fit_meanshift_norm_ar1 | BIC |
| manual | fit_meanshift_norm | BIC |
| null | fit_meanshift_norm | BIC |
| pelt | fit_meanshift_norm, fit_meanvar | None, SIC, BIC, MBIC, AIC, HQC, Asymptotic, Manual, CROPS |
| random | fit_arima, fit_lmshift, fit_lmshift_ar1, fit_meanshift_lnorm, fit_meanshift_norm, fit_meanshift_norm_ar1, fit_meanvar, fit_nhpp, fit_trendshift, fit_trendshift_ar1 | SIC, AIC, BIC, HQC, MBIC, MDL |
| segmented | NA | NA |
| segneigh | fit_meanvar | None, SIC, BIC, MBIC, AIC, HQC, Asymptotic, Manual, CROPS |
| single-best | fit_meanvar | None, SIC, BIC, MBIC, AIC, HQC, Asymptotic, Manual, CROPS |
| wbs | NA | NA |
References
Please readthe full paper for more details.
To cite the package, use the following information:
citation("tidychangepoint")## Warning in citation("tidychangepoint"): could not determine year for## 'tidychangepoint' from package DESCRIPTION file## To cite package 'tidychangepoint' in publications use:#### Baumer B, Suárez Sierra B, Coen A, Taimal C (????). _tidychangepoint:## A Tidy Framework for Changepoint Detection Analysis_. R package## version 1.0.2, <https://beanumber.github.io/tidychangepoint/>.#### A BibTeX entry for LaTeX users is#### @Manual{,## title = {tidychangepoint: A Tidy Framework for Changepoint Detection Analysis},## author = {Benjamin S. Baumer and Biviana Marcela {Suárez Sierra} and Arrigo Coen and Carlos A. Taimal},## note = {R package version 1.0.2},## url = {https://beanumber.github.io/tidychangepoint/},## }