a unified framework for analyzing changepoint detection in univariate time series
Universitat Politècnica de Catalunya
2025-06-27
Every solution includes three components:
\[ BIC(\tau, M(y|\hat{\theta}_\tau)) = \underbrace{k_M(\tau) \ln{n}}_{\text{penalty}} - 2 \ln{\underbrace{L_M(y | \hat{\theta}_\tau)}_{\text{likelihood}}}, \]
\[ \begin{aligned} P_{MDL}(\tau) &= \frac{a(\theta_\tau)}{2} \cdot \sum_{j=0}^m \log{(\tau_{j+1} - \tau_j)} + 2 \ln{m} \\ &+ \sum_{j=2}^m \ln{\tau_j} + \left( 2 + b(\theta_\tau) \right) \ln{n} \end{aligned} \]
changepoint
package changepointGA
package GA
package can be customized (foreshadowing…)wbs
, segmented
, strucchange
, qcc
, bcp
, ggchangepoint
, etc.)…tidychangepoint
tidychangepoint
tidychangepoint
do?tidyverse
segment()
segment()
wraps a variety of CDP algorithmschangepoints()
to recover the changepoint sets# A tibble: 5 × 10
region num_obs min max mean sd begin end param_mu
<chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 [1,15) 14 -0.0137 0.0158 -0.00173 0.00779 1 15 -0.00173
2 [15,18) 3 -0.00813 -0.00650 -0.00750 0.000872 15 18 -0.00750
3 [18,52) 34 -0.00923 0.0160 0.00335 0.00628 18 52 0.00335
4 [52,87) 35 -0.0147 -0.000943 -0.00719 0.00315 52 87 -0.00719
5 [87,96) 9 -0.00518 -0.00142 -0.00290 0.00135 87 96 -0.00290
# ℹ 1 more variable: param_sigma_hatsq <dbl>
fit_meanshift_norm()
[1] "fit_lmshift" "fit_lmshift_ar1" "fit_meanshift"
[4] "fit_meanshift_lnorm" "fit_meanshift_norm" "fit_meanshift_norm_ar1"
[7] "fit_meanvar" "fit_nhpp" "fit_trendshift"
[10] "fit_trendshift_ar1"
# A tibble: 8 × 12
pkg version algorithm params num_cpts rmse logLik AIC BIC MBIC MDL
<chr> <pckg_> <chr> <list> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 tidy… 1.0.0.… meanshif… <dbl> 4 0.00507 367. -714. -689. -689. -682.
2 tidy… 1.0.0.… meanshif… <dbl> 4 0.00490 367. -711. -683. -688. -677.
3 tidy… 1.0.0.… trendshi… <dbl> 4 0.00472 374. -718. -680. -703. -683.
4 tidy… 1.0.0.… splinesh… <dbl> 4 0.00439 381. -722. -671. -717. -684.
5 tidy… 1.0.0.… meanvar <NULL> 4 0.00507 367. -706. -671. -689. -674.
6 tidy… 1.0.0.… meanvar <NULL> 4 0.00507 367. -706. -671. -689. -674.
7 tidy… 1.0.0.… trendshi… <dbl> 4 0.00465 372. -711. -670. -698. -673.
8 tidy… 1.0.0.… nhpp <dbl> 4 0.00507 -59.3 149. 187. 163. 184.
# ℹ 1 more variable: BMDL <dbl>
tidychangepoint
includes more than 10 models and 5 penalty functions