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.)…tidychangepointtidychangepointtidychangepoint do?tidyversesegment()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