Coint: Identifying the cointegration rank of nonstationary vector...

View source: R/coint.R

CointR Documentation

Identifying the cointegration rank of nonstationary vector time series

Description

Coint() deals with cointegration analysis for high-dimensional vector time series proposed in Zhang, Robinson and Yao (2019). Consider the model:

{\bf y}_t = {\bf Ax}_t\,,

where {\bf A} is a p \times p unknown and invertible constant matrix, {\bf x}_t = ({\bf x}'_{t,1}, {\bf x}'_{t,2})' is a latent p \times 1 process, {\bf x}_{t,2} is an r \times 1 I(0) process, {\bf x}_{t,1} is a process with nonstationary components, and no linear combination of {\bf x}_{t,1} is I(0). This function aims to estimate the cointegration rank r and the invertible constant matrix {\bf A}.

Usage

Coint(
  Y,
  lag.k = 5,
  type = c("acf", "urtest", "both"),
  c0 = 0.3,
  m = 20,
  alpha = 0.01
)

Arguments

Y

An n \times p data matrix {\bf Y} = ({\bf y}_1, \dots , {\bf y}_n )', where n is the number of the observations of the p \times 1 time series \{{\bf y}_t\}_{t=1}^n.

lag.k

The time lag K used to calculate the nonnegative definte matrix \hat{{\bf W}}_y:

\hat{\mathbf{W}}_y\ =\ \sum_{k=0}^{K}\hat{\mathbf{\Sigma}}_y(k)\hat{\mathbf{\Sigma}}_y(k)'\,,

where \hat{\bf \Sigma}_y(k) is the sample autocovariance of {\bf y}_t at lag k. The default is 5.

type

The method used to identify the cointegration rank. Available options include: "acf" (the default) for the method based on the sample autocorrelations, "urtest" for the method based on the unit root tests, and "both" to apply these two methods. See Section 2.3 of Zhang, Robinson and Yao (2019) and 'Details' for more information.

c0

The prescribed constant c_0 involved in the method based on the sample correlations, which is used when type = "acf" or type = "both". See Section 2.3 of Zhang, Robinson and Yao (2019) and 'Details' for more information. The default is 0.3.

m

The prescribed constant m involved in the method based on the sample correlations, which is used when type = "acf" or type = "both". See Section 2.3 of Zhang, Robinson and Yao (2019) and 'Details' for more information. The default is 20.

alpha

The significance level \alpha of the unit root tests, which is used when type = "urtest" or type = "both". See 'Details'. The default is 0.01.

Details

Write \hat{\bf x}_t=\hat{\bf A}'{\bf y}_t\equiv (\hat{x}_t^1,\ldots,\hat{x}_t^p)'. When type = "acf", Coint() estimates r by

\hat{r}=\sum_{i=1}^{p}1\bigg\{\frac{S_i(m)}{m}<c_0 \bigg\}

for some constant c_0\in (0,1) and some large constant m, where S_i(m) is the sum of the sample autocorrelations of \hat{x}^{i}_{t} over lags 1 to m, which is specified in Section 2.3 of Zhang, Robinson and Yao (2019).

When type = "urtest", Coint() estimates r by unit root tests. For i= 1,\ldots, p, consider the null hypothesis

H_{0,i}:\hat{x}_t^{p-i+1} \sim I(0)\,.

The estimation procedure for r can be implemented as follows:

Step 1. Start with i=1. Perform the unit root test proposed in Chang, Cheng and Yao (2021) for H_{0,i}.

Step 2. If the null hypothesis is not rejected at the significance level \alpha, increment i by 1 and repeat Step 1. Otherwise, stop the procedure and denote the value of i at termination as i_0. The cointegration rank is then estimated as \hat{r}=i_0-1.

Value

An object of class "coint", which contains the following components:

A

The estimated \hat{\bf A}.

coint_rank

The estimated cointegration rank \hat{r}.

lag.k

The time lag used in function.

method

A string indicating which method is used to identify the cointegration rank.

References

Chang, J., Cheng, G., & Yao, Q. (2022). Testing for unit roots based on sample autocovariances. Biometrika, 109, 543–550. \Sexpr[results=rd]{tools:::Rd_expr_doi("doi:10.1093/biomet/asab034")}.

Zhang, R., Robinson, P., & Yao, Q. (2019). Identifying cointegration by eigenanalysis. Journal of the American Statistical Association, 114, 916–927. \Sexpr[results=rd]{tools:::Rd_expr_doi("doi:10.1080/01621459.2018.1458620")}.

Examples

# Example 1 (Example 1 in Zhang, Robinson and Yao (2019))
## Generate yt
p <- 10
n <- 1000
r <- 3
d <- 1
X <- mat.or.vec(p, n)
X[1,] <- arima.sim(n-d, model = list(order=c(0, d, 0)))
for(i in 2:3)X[i,] <- rnorm(n)
for(i in 4:(r+1)) X[i, ] <- arima.sim(model = list(ar = 0.5), n)
for(i in (r+2):p) X[i, ] <- arima.sim(n = (n-d), model = list(order=c(1, d, 1), ar=0.6, ma=0.8))
M1 <- matrix(c(1, 1, 0, 1/2, 0, 1, 0, 1, 0), ncol = 3, byrow = TRUE)
A <- matrix(runif(p*p, -3, 3), ncol = p)
A[1:3,1:3] <- M1
Y <- t(A%*%X)

Coint(Y, type = "both")

HDTSA documentation built on April 3, 2025, 11:07 p.m.