CP_MTS() deals with the estimation of the CP-factor model for matrix time series: [REMOVE_ME]Yt=AXtB′+ϵt,[REMOVEME2] where Xt=diag(xt,1,…,xt,d) is a d×d
unobservable diagonal matrix, ϵt
is a p×q matrix white noise, A and B are, respectively, c("p\n", "timesd") and q×d unknown constant matrices with their columns being unit vectors, and 1≤d<min(p,q) is an unknown integer. Let rank(A)=d1
and rank(B)=d2 with some unknown d1,d2≤d. This function aims to estimate d,d1,d2 and the loading matrices A and B using the methods proposed in Chang et al. (2023) and Chang et al. (2024).
Y: An n×p×q array, where n is the number of observations of the p×q matrix time series {Yt}t=1n.
xi: An n×1 vector ξ=(ξ1,…,ξn)′, where ξt represents a linear combination of Yt. If xi = NULL (the default), ξt is determined by the PCA method introduced in Section 5.1 of Chang et al. (2023). Otherwise, xi
can be given by the users.
Rank: A list containing the following components: d representing the number of columns of A and B, d1 representing the rank of A, and d2 representing the rank of B. If set to NULL (default), d, d1, and d2 will be estimated. Otherwise, they can be given by the users.
lag.k: The time lag K used to calculate the nonnegative definite matrices M^1 and M^2 when method = "CP.Refined"
or method = "CP.Unified":
M^1=sumk=1KΣ^kΣ^k′andM^2=k=1∑KΣ^k′Σ^k,
where $\hat{\bf \Sigma}_{k}$ is an estimate of the cross-covariance between $ {\bf Y}_t$ and $\xi_t$ at lag $k$. See 'Details'. The default is 20.
lag.ktilde: The time lag K~ involved in the unified estimation method [See (16) in Chang et al. (2024)], which is used when method = "CP.Unified". The default is 10.
method: A string indicating which CP-decomposition method is used. Available options include: "CP.Direct" (the default) for the direct estimation method [See Section 3.1 of Chang et al. (2023)], "CP.Refined" for the refined estimation method [See Section 3.2 of Chang et al. (2023)], and "CP.Unified" for the unified estimation method [See Section 4 of Chang et al. (2024)]. The validity of methods "CP.Direct" and "CP.Refined" depends on the assumption d1=d2=d. When d1,d2≤d, the method "CP.Unified" can be applied. See Chang et al. (2024) for details.
thresh1: Logical. If FALSE (the default), no thresholding will be applied in Σ^k, which indicates that the threshold level δ1=0. If TRUE, δ1 will be set through delta1. thresh1 is used for all three methods. See 'Details'.
thresh2: Logical. If FALSE (the default), no thresholding will be applied in Σˇk, which indicates that the threshold level δ2=0. If TRUE, δ2 will be set through delta2. thresh2 is used only when method = "CP.Refined". See 'Details'.
thresh3: Logical. If FALSE (the default), no thresholding will be applied in Σk, which indicates that the threshold level δ3=0. If TRUE, δ3 will be set through delta3. thresh3 is used only when method = "CP.Unified". See 'Details'.
delta1: The value of the threshold level δ1. The default is δ1=2n−1log(pq).
delta2: The value of the threshold level δ2. The default is δ2=2n−1log(pq).
delta3: The value of the threshold level δ3. The default is δ3=2n−1log(pq).
Returns
An object of class "mtscp", which contains the following components: - A: The estimated p×d^ left loading matrix A^.
B: The estimated q×d^ right loading matrix B^.
f: The estimated latent process x^t,1,…,x^t,d^.
Rank: The estimated d^1,d^2, and d^.
method: A string indicating which CP-decomposition method is used.
Description
CP_MTS() deals with the estimation of the CP-factor model for matrix time series:
Yt=AXtB′+ϵt,
where Xt=diag(xt,1,…,xt,d) is a d×d
unobservable diagonal matrix, ϵt
is a p×q matrix white noise, A and B are, respectively, c("p\n", "timesd") and q×d unknown constant matrices with their columns being unit vectors, and 1≤d<min(p,q) is an unknown integer. Let rank(A)=d1
and rank(B)=d2 with some unknown d1,d2≤d. This function aims to estimate d,d1,d2 and the loading matrices A and B using the methods proposed in Chang et al. (2023) and Chang et al. (2024).
Details
All three CP-decomposition methods involve the estimation of the autocovariance of Yt and ξt at lag k, which is defined as follows:
where Tδ2(⋅) is a threshold operator with the threshold level δ2≥0, and vec(⋅) is a vecterization operator with vec(H) being the (m1m2)×1 vector obtained by stacking the columns of the m1×m2 matrix H. See Section 3.2.2 of Chang et al. (2023) for details.
where Tδ3(⋅) is a threshold operator with the threshold level δ3≥0. See Section 4.2 of Chang et al. (2024) for details.
Examples
# Example 1.p <-10q <-10n <-400d = d1 = d2 <-3## DGP.CP() generates simulated data for the example in Chang et al. (2024).data <- DGP.CP(n, p, q, d, d1, d2)Y <- data$Y
## d is unknownres1 <- CP_MTS(Y, method ="CP.Direct")res2 <- CP_MTS(Y, method ="CP.Refined")res3 <- CP_MTS(Y, method ="CP.Unified")## d is knownres4 <- CP_MTS(Y, Rank = list(d =3), method ="CP.Direct")res5 <- CP_MTS(Y, Rank = list(d =3), method ="CP.Refined")# Example 2.p <-10q <-10n <-400d1 = d2 <-2d <-3data <- DGP.CP(n, p, q, d, d1, d2)Y1 <- data$Y
## d, d1 and d2 are unknownres6 <- CP_MTS(Y1, method ="CP.Unified")## d, d1 and d2 are knownres7 <- CP_MTS(Y1, Rank = list(d =3, d1 =2, d2 =2), method ="CP.Unified")
References
Chang, J., Du, Y., Huang, G., & Yao, Q. (2024). Identification and estimation for matrix time series CP-factor models. arXiv preprint. tools:::Rd_expr_doi("doi:10.48550/arXiv.2410.05634") .
Chang, J., He, J., Yang, L., & Yao, Q. (2023). Modelling matrix time series via a tensor CP-decomposition. Journal of the Royal Statistical Society Series B: Statistical Methodology, 85 , 127--148. tools:::Rd_expr_doi("doi:10.1093/jrsssb/qkac011") .