cpCopula: Test for Change-Point Detection in Multivariate Observations...

View source: R/cpTests.R

cpCopulaR Documentation

Test for Change-Point Detection in Multivariate Observations Sensitive to Changes in the Copula


Nonparametric test for change-point detection particularly sensitive to changes in the copula of multivariate continuous observations. The observations can be serially independent or dependent (strongly mixing). Approximate p-values for the test statistic are obtained by means of a multiplier approach. Details can be found in the first reference.


cpCopula(x, method = c("seq", "nonseq"), b = NULL,
         weights = c("parzen", "bartlett"), m = 5,
         N = 1000, init.seq = NULL, include.replicates = FALSE)



a data matrix whose rows are multivariate continuous observations.


a string specifying the simulation method for generating multiplier replicates of the test statistic; can be either "seq" (the 'check' approach in the first reference) or "nonseq" (the 'hat' approach in the first reference). The 'check' approach appears to lead to better behaved tests in the case of samples of moderate size. The 'hat' approach is substantially faster.


strictly positive integer specifying the value of the bandwidth parameter determining the serial dependence when generating dependent multiplier sequences using the 'moving average approach'; see Section 5 of the second reference. The value 1 will create i.i.d. multiplier sequences suitable for serially independent observations. If set to NULL, b will be estimated from x using the function bOptEmpProc(); see the procedure described in Section 5 of the second reference.


a string specifying the kernel for creating the weights used in the generation of dependent multiplier sequences within the 'moving average approach'; see Section 5 of the second reference.


a strictly positive integer specifying the number of points of the uniform grid on (0,1)^d (where d is ncol(x)) involved in the estimation of the bandwidth parameter; see Section 5 of the third reference. The number of points of the grid is given by m^ncol(x) so that m needs to be decreased as d increases.


a string specifying how the parameter L involved in the estimation of the bandwidth parameter is computed; see Section 5 of the second reference.


number of multiplier replications.


a sequence of independent standard normal variates of length N * (nrow(x) + 2 * (b - 1)) used to generate dependent multiplier sequences.


a logical specifying whether the object of class htest returned by the function (see below) will include the multiplier replicates.


The approximate p-value is computed as

(0.5 + sum(S[i] >= S, i=1, .., N)) / (N+1),

where S and S[i] denote the test statistic and a multiplier replication, respectively. This ensures that the approximate p-value is a number strictly between 0 and 1, which is sometimes necessary for further treatments.


An object of class htest which is a list, some of the components of which are


value of the test statistic.


corresponding approximate p-value.


the values of the nrow(x)-1 intermediate Cramér-von Mises change-point statistics; the test statistic is defined as the maximum of those.


the value of parameter b.


These tests were derived under the assumption of continuous margins.


A. Bücher, I. Kojadinovic, T. Rohmer and J. Segers (2014), Detecting changes in cross-sectional dependence in multivariate time series, Journal of Multivariate Analysis 132, pages 111-128, https://arxiv.org/abs/1206.2557.

A. Bücher and I. Kojadinovic (2016), A dependent multiplier bootstrap for the sequential empirical copula process under strong mixing, Bernoulli 22:2, pages 927-968, https://arxiv.org/abs/1306.3930.

See Also

cpRho() for a related test based on Spearman's rho, cpTau() for a related test based on Kendall's tau, cpDist() for a related test based on the multivariate empirical d.f., bOptEmpProc() for the function used to estimate b from x if b = NULL.


## Not run: 
n <- 100
k <- 50 ## the true change-point
u <- rCopula(k, gumbelCopula(1.5))
v <- rCopula(n - k, gumbelCopula(3))
x <- rbind(u,v)
cp <- cpCopula(x, b = 1)
## Estimated change-point
which(cp$cvm == max(cp$cvm))
## End(Not run)

npcp documentation built on Feb. 16, 2023, 6:04 p.m.

Related to cpCopula in npcp...