Wraps changepoints::CV.search.DP.VAR1() (Wang, Yu, Rinaldo and
Willett): dynamic programming with an \(\ell_0\) penalty for changes in
the transition matrix of a vector autoregression, with the two tuning
parameters chosen by cross-validation. The change here is in the
dynamics (how the series predicts itself), not in the level, so it
is invisible to every mean-change engine in the package.
Arguments
- x
A numeric matrix or data frame, rows as time points.
- gamma_set
Candidate values of the \(\ell_0\) tuning parameter. Defaults to a small grid scaled by the series length.
- lambda_set
Candidate lasso penalties. Defaults to
c(0.01, 0.1, 1).- delta
Minimum spacing. Defaults to
max(5, floor(n / 20)).- ...
Additional arguments passed to the engine.
Value
A ggcpt object with change_in = "regression". The
engine searches every other observation, so a location is resolved to
within two; each is reported as the last observation before the
change, the package convention, rather than the engine's own index,
which sits one or two earlier.
References
Wang D, Yu Y, Rinaldo A, Willett R (2019). “Localizing changes in high-dimensional vector autoregressive processes.” arXiv preprint arXiv:1909.06359. doi:10.48550/arXiv.1909.06359 .
See also
Other changepoint engines:
bcp_wrapper(),
beast_wrapper(),
bfast_wrapper(),
binsegrcpp_wrapper(),
bocpd_wrapper(),
cpm_wrapper(),
cpop_wrapper(),
cpt_wrapper(),
decafs_wrapper(),
ecp_wrapper(),
envcpt_wrapper(),
esac_wrapper(),
fabisearch_wrapper(),
fastcpd_wrapper(),
fcov_wrapper(),
fmean_wrapper(),
fpop_wrapper(),
geomcp_wrapper(),
hdcov_wrapper(),
hdreg_wrapper(),
idetect_wrapper(),
inspect_wrapper(),
kcp_wrapper(),
kwc_wrapper(),
mcp_wrapper(),
mosum_wrapper(),
network_wrapper(),
not_wrapper(),
npmojo_wrapper(),
nsp_wrapper(),
ocd_wrapper(),
pilliat_wrapper(),
segmented_wrapper(),
smuce_wrapper(),
sn_wrapper(),
strucchange_wrapper(),
taylor_wrapper(),
tguh_wrapper(),
trend_wrapper(),
wbs2_wrapper(),
wbs_wrapper(),
wbsts_wrapper()
Examples
# \donttest{
set.seed(2026)
p <- 3
step <- function(n, a) {
Y <- matrix(0, n, p)
for (i in 2:n) Y[i, ] <- a * Y[i - 1, ] + stats::rnorm(p)
Y
}
var_wrapper(rbind(step(50, 0.1), step(50, 0.8)),
gamma_set = c(1, 10), lambda_set = c(0.1, 1))
#> ggcpt (changepoint detection result)
#> Method: var
#> Change in: regression
#> Changepoints found: 1
#> CP convention: left
#> Penalty: l0 (CV)
#> Series length: 100
#>
#> Changepoints:
#> # A tibble: 1 × 2
#> cp cp_value
#> <int> <dbl>
#> 1 57 -0.535
# }
