Skip to contents

Wraps InspectChangepoint::inspect() (Wang and Samworth, 2018). For a \(p\)-variate series whose mean changes in an unknown sparse subset of coordinates, the algorithm computes the CUSUM transformation, finds the optimal sparse projection direction via a convex relaxation, and locates changepoints on the projected univariate series, recursing via wild binary segmentation.

Usage

inspect_wrapper(x, lambda = NULL, threshold = NULL, ...)

Arguments

x

A numeric matrix or data frame with one row per time point and one column per coordinate.

lambda

Regularisation parameter of the sparse projection; when NULL the engine default \(\sqrt{\log(p \log n)/2}\) is used.

threshold

Detection threshold; when NULL it is computed by Monte Carlo (via the engine).

...

Additional arguments passed to InspectChangepoint::inspect().

Value

A ggcpt object. The changepoints tibble carries a strength column (the maximum projected CUSUM statistic). The first coordinate is used for cp_value and the univariate plot line; the full matrix is kept for the faceted multivariate autoplot(). Coordinates that are constant carry no changepoint information and would make the engine's variance rescaling undefined, so they are dropped (with a warning) before detection and an all-constant matrix returns an empty result; the dropped coordinates are still kept for plotting, and reported locations always refer to the original rows.

References

Wang T, Samworth RJ (2018). “High dimensional change point estimation via sparse projection.” Journal of the Royal Statistical Society: Series B, 80(1), 57–83.

Examples

set.seed(2026)
X <- cbind(c(rnorm(80), rnorm(80, 3)), c(rnorm(80), rnorm(80, -2)),
           rnorm(160))
res <- inspect_wrapper(X)
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
#> Loading required namespace: RSpectra
res$changepoints
#> # A tibble: 1 × 3
#>      cp cp_value strength
#>   <int>    <dbl>    <dbl>
#> 1    80    0.785     21.9