This function detects multiple change points in the vine copula structure of a multivariate time series using vine copulas, various state-of-the-art segmentation methods to identify multiple change points, and a likelihood ratio test or the stationary bootstrap for inference.
vccp.fun(
X,
method = "NBS",
delta = 30,
G = 0.1,
M = NA,
test = "V",
CDR = "D",
trunc_tree = NA,
family_set = 1,
pre_white = 0,
ar_num = 1,
p = 0.3,
N = 100,
sig_alpha = 0.05
)A numerical matrix representing the multivariate time series, with the columns representing its components. If multiple subjects are included (panel data), vertically stack the subject data and identify timestamps of each subject in the first column.
A character string, which defines the
segmentation method. If method = "NBS", which is the
default method, then the adapted binary segmentation is used.
Similarly, if method = "OBS", "MOSUM" or "WBS", then binary
segmentation, MOSUM and wild binary segmentation are used, respectively.
A positive integer number with default value equal to 30.
It is used to define the minimum distance acceptable between
change points. In general, delta >= 5*ncol(X))
is recommended to ensure sufficient data when estimating the
vine copula model.
A positive real number between 0 and 1 with default value equal to 0.1.
It is used to define the moving sum bandwidth relative to T in MOSUM when
method = "MOSUM" is chosen. Alternatively, a positive integer
less than half of the time series length can be set to define the absolute bandwidth.
A positive integer with default value equal to floor(9*log(T)) (T is the length of the time series).
It represents the number of sub-samples in WBS when
method = "WBS" is chosen.
A character string, which defines the inference
method used. If test = "V", which is the default method,
the Vuong test is performed. If test = "B", the
stationary bootstrap is performed.
A character string, which defines the vine structure.
If CDR = "D", which is the default method,
a D-vine is used. Similarly, if CDR = "C" or CDR
= "R", a C-vine or an R-vine is used, respectively.
A positive integer, which defines the level
of truncation for the vine copula. If trunc_tree = "NA",
which is the default value, the Vine contains dim(X)[2]-2
levels of trees.
A positive integer, which defines the bivariate copula
family. If familyset = 1, which is the default value, only the
Gauss copula is selected and VCCP detects change points in
the linear correlation graph. Coding of pair-copula
families is the same as in BiCop.
A positive integer, which defines whether
the data is pre-whitened. If pre-white = 0, which is the
default value, no pre-whitening is performed. If
pre_white = 1, an autoregressive time series model
(method: yule-walker) is used to preprocess the raw data.
A positive integer, which defines the maximum
order of model to fit to preprocess the data (see pre_white).
If ar_num = 1, which is the default value, then an AR(1)
model is fit to the data.
A positive real number between 0 and 1 which is
defined as the block size in the stationary bootstrap
method (rgeom(T,p)) if test = "B" is chosen.
If p = 0.3, which is the default value, each resampled block
has 1/0.3 time points on average.
A positive integer, which defines the number
of the stationary bootstrap resamples used. The default value is N = 100.
A positive real number between 0 and 1, which defines the significance level of the inference test. The default values is 0.05.
A list with the following components:
loc_of_cpts |
The locations of the detected change points. |
no_of_cpts |
The number of detected change points. |
test_df |
A dataframe containing the test result. |
compute_time |
Time (in minutes) to run vccp.fun. |
T |
The length of the time series data. |
sig_alpha |
The significance level for the inference test. |
Xin Xiong, Ivor Cribben (cribben@ualberta.ca)
The time series X_t is of dimensionality p and we are
looking for changes in the vine copula structure between
the different time series components X_{t}^{(1)}, X_{t}^{(2)},
..., X_{t}^{(p)}. VCCP uses vine copulas, various state-of-the-art
segmentation methods to identify multiple change points,
and a likelihood ratio test or the stationary bootstrap for inference.
"Beyond linear dynamic functional connectivity: a vine copula change point model", Xiong and Cribben (2021), bioRxiv 2021.04.25.441254.
# NOT RUN {
## Simulate MVN data with 2 change points
data <- cbind(1:180, mvn.sim.2.cps(180, 8, seed = 101))
T <- 180
## Change point detection using VCCP (it may take several minutes to complete...)
result.NV <- vccp.fun(data, method = "NBS", delta = 30, test = "V")
## Plot the results
getTestPlot(result.NV)
#title("VCCP: NBS + Vuong")
## Change point detection using NBS and stationary bootstrap for inference
result.NB <- vccp.fun(data, method = "NBS", delta = 30, test = "B")
## Plot the results
getTestPlot(result.NB)
title("VCCP: NBS + Stationary Bootstrap")
# }
Run the code above in your browser using DataLab