To install tidychangepoint
from CRAN:
install.packages("tidychangepoint")
To install the development version of
tidychangepoint
:
::install_github("beanumber/tidychangepoint") remotes
To load it:
library(tidychangepoint)
The tidychangepoint
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 from changepoint
, wbs
, and several
genetic algorithms made accessible via GA
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 the segment()
function, which takes a numeric vector that is coercible into a
ts
object, and a string indicating the algorithm you wish
you use. segment()
always returns a tidycpt
object.
<- segment(CET, method = "pelt", model = fit_meanshift_norm, minseglen = 3)
x class(x)
## [1] "tidycpt"
Various methods are available for tidycpt
objects. For
example, as.ts()
returns the original data as
ts
object, and changepoints()
returns the set
of changepoint indices.
changepoints(x)
## [1] 330
If the original time series has time labels, we can also retrieve that information.
changepoints(x, use_labels = TRUE)
## [1] "1988-01-01"
The fitness()
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)
## MBIC
## 688.331
The tidy()
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.3
ls_methods()
## # A tibble: 12 × 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>
ls_coverage() |>
::group_by(method) |>
dplyr::summarize(
dplyrmodels = paste(unique(model), collapse = ", "),
penalties = paste(unique(penalty), collapse = ", ")
|>
) ::arrange(method) |>
dplyr::kable() knitr
method | models | penalties |
---|---|---|
binseg | fit_meanvar | None, SIC, BIC, MBIC, AIC, HQC, Asymptotic, Manual, CROPS |
coen | fit_nhpp | BMDL |
ga | 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_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 |
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 |
Please read the 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 0.0.1.9002, <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 0.0.1.9002},
## url = {https://beanumber.github.io/tidychangepoint/},
## }