CP_MTS function

Estimating the matrix time series CP-factor model

Estimating the matrix time series CP-factor model

CP_MTS() deals with the estimation of the CP-factor model for matrix time series: [REMOVE_ME]Yt=AXtB+ϵt,[REMOVEME2] {\bf{Y}}_t = {\bf A \bf X}_t{\bf B}' +{\boldsymbol{\epsilon}}_t, [REMOVE_ME_2] where Xt=diag(xt,1,,xt,d){\bf X}_t = {\rm diag}(x_{t,1},\ldots,x_{t,d}) is a d×dd \times d

unobservable diagonal matrix, ϵt{\boldsymbol{\epsilon}}_t

is a p×qp \times q matrix white noise, A{\bf A} and B{\bf B} are, respectively, c("p\np\n", "timesd\\times d") and q×dq \times d unknown constant matrices with their columns being unit vectors, and 1d<min(p,q)1\leq d < \min(p,q) is an unknown integer. Let rank(A)=d1{\rm rank}(\mathbf{A}) = d_1

and rank(B)=d2{\rm rank}(\mathbf{B}) = d_2 with some unknown d1,d2dd_1,d_2\leq d. This function aims to estimate d,d1,d2d, d_1, d_2 and the loading matrices A{\bf A} and B{\bf B} using the methods proposed in Chang et al. (2023) and Chang et al. (2024).

CP_MTS( Y, xi = NULL, Rank = NULL, lag.k = 20, lag.ktilde = 10, method = c("CP.Direct", "CP.Refined", "CP.Unified"), thresh1 = FALSE, thresh2 = FALSE, thresh3 = FALSE, delta1 = 2 * sqrt(log(dim(Y)[2] * dim(Y)[3])/dim(Y)[1]), delta2 = delta1, delta3 = delta1 )

Arguments

  • Y: An n×p×qn \times p \times q array, where nn is the number of observations of the p×qp \times q matrix time series {Yt}t=1n\{{\bf Y}_t\}_{t=1}^n.

  • xi: An n×1n \times 1 vector ξ=(ξ1,,ξn)\boldsymbol{\xi} = (\xi_1,\ldots, \xi_n)', where ξt\xi_t represents a linear combination of Yt{\bf Y}_t. If xi = NULL (the default), ξt\xi_{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{\bf A} and B{\bf B}, d1 representing the rank of A{\bf A}, and d2 representing the rank of B{\bf B}. If set to NULL (default), dd, d1d_1, and d2d_2 will be estimated. Otherwise, they can be given by the users.

  • lag.k: The time lag KK used to calculate the nonnegative definite matrices M^1\hat{\mathbf{M}}_1 and M^2\hat{\mathbf{M}}_2 when method = "CP.Refined"

    or method = "CP.Unified":

M^1 =sumk=1KΣ^kΣ^k  and  M^2 = k=1KΣ^kΣ^k, \hat{\mathbf{M}}_1\ =\\sum_{k=1}^{K} \hat{\bf \Sigma}_{k} \hat{\bf \Sigma}_{k}'\ \ {\rm and}\ \ \hat{\mathbf{M}}_2\ =\ \sum_{k=1}^{K} \hat{\bf \Sigma}_{k}' \hat{\bf \Sigma}_{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~\tilde 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=dd_1=d_2=d. When d1,d2dd_1,d_2 \leq 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\hat{\bf \Sigma}_{k}, which indicates that the threshold level δ1=0\delta_1=0. If TRUE, δ1\delta_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\check{\bf \Sigma}_{k}, which indicates that the threshold level δ2=0\delta_2=0. If TRUE, δ2\delta_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\vec{\bf \Sigma}_{k}, which indicates that the threshold level δ3=0\delta_3=0. If TRUE, δ3\delta_3 will be set through delta3. thresh3 is used only when method = "CP.Unified". See 'Details'.
  • delta1: The value of the threshold level δ1\delta_1. The default is δ1=2n1log(pq) \delta_1 = 2 \sqrt{n^{-1}\log (pq)}.
  • delta2: The value of the threshold level δ2\delta_2. The default is δ2=2n1log(pq) \delta_2 = 2 \sqrt{n^{-1}\log (pq)}.
  • delta3: The value of the threshold level δ3\delta_3. The default is δ3=2n1log(pq) \delta_3 = 2 \sqrt{n^{-1}\log(pq)}.

Returns

An object of class "mtscp", which contains the following components: - A: The estimated p×d^p \times \hat{d} left loading matrix A^\hat{\bf A}.

  • B: The estimated q×d^q \times \hat{d} right loading matrix B^\hat{\bf B}.

  • f: The estimated latent process x^t,1,,x^t,d^\hat{x}_{t,1},\ldots,\hat{x}_{t,\hat{d}}.

  • Rank: The estimated d^1,d^2\hat{d}_1,\hat{d}_2, and d^\hat{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, {\bf{Y}}_t = {\bf A \bf X}_t{\bf B}' +{\boldsymbol{\epsilon}}_t,

where Xt=diag(xt,1,,xt,d){\bf X}_t = {\rm diag}(x_{t,1},\ldots,x_{t,d}) is a d×dd \times d

unobservable diagonal matrix, ϵt{\boldsymbol{\epsilon}}_t

is a p×qp \times q matrix white noise, A{\bf A} and B{\bf B} are, respectively, c("p\np\n", "timesd\\times d") and q×dq \times d unknown constant matrices with their columns being unit vectors, and 1d<min(p,q)1\leq d < \min(p,q) is an unknown integer. Let rank(A)=d1{\rm rank}(\mathbf{A}) = d_1

and rank(B)=d2{\rm rank}(\mathbf{B}) = d_2 with some unknown d1,d2dd_1,d_2\leq d. This function aims to estimate d,d1,d2d, d_1, d_2 and the loading matrices A{\bf A} and B{\bf 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 {\bf Y}_t and ξt\xi_t at lag kk, which is defined as follows:

Σ^k=Tδ1{Σ^Y,ξ(k)}  with  Σ^Y,ξ(k)=1nkt=k+1n(YtYˉ)(ξtkξˉ), \hat{\bf \Sigma}_{k} = T_{\delta_1}\{\hat{\boldsymbol{\Sigma}}_{\mathbf{Y},\xi}(k)\}\ \ {\rm with}\ \ \hat{\boldsymbol{\Sigma}}_{\mathbf{Y}, \xi}(k) = \frac{1}{n-k}\sum_{t=k+1}^n(\mathbf{Y}_t-\bar{\mathbf{Y}})(\xi_{t-k}-\bar{\xi})\,,

where Yˉ=n1t=1nYt\bar{\bf Y} = n^{-1}\sum_{t=1}^n {\bf Y}_t, ξˉ=n1t=1nξt\bar{\xi}=n^{-1}\sum_{t=1}^n \xi_t

and Tδ1()T_{\delta_1}(\cdot) is a threshold operator defined as Tδ1(W)={wi,j1(wi,jδ1)}T_{\delta_1}({\bf W}) = \{w_{i,j}1(|w_{i,j}|\geq \delta_1)\} for any matrix W=(wi,j){\bf W}=(w_{i,j}), with the threshold level δ10\delta_1 \geq 0 and 1()1(\cdot)

representing the indicator function. Chang et al. (2023) and Chang et al. (2024) suggest to choose δ1=0\delta_1 = 0 when p,qp, q are fixed and δ1>0\delta_1>0 when pqnpq \gg n.

The refined estimation method involves

Σˇk=Tδ2{Σ^Yˇ(k)}  with  Σ^Yˇ(k)=1nkt=k+1n(YtYˉ)vec(YtkYˉ), \check{\bf \Sigma}_{k} =T_{\delta_2}\{\hat{\mathbf{\Sigma}}_{\check{\mathbf{Y}}}(k)\}\ \ {\rm with}\ \ \hat{\mathbf{\Sigma}}_{\check{\mathbf{Y}}}(k)=\frac{1}{n-k}\sum_{t=k+1}^n(\mathbf{Y}_t-\bar{\mathbf{Y}}) \otimes {\rm vec}(\mathbf{Y}_{t-k}-\bar{\mathbf{Y}})\,,

where Tδ2()T_{\delta_2}(\cdot) is a threshold operator with the threshold level δ20\delta_2 \geq 0, and vec(){\rm vec}(\cdot) is a vecterization operator with vec(H){\rm vec}({\bf H}) being the (m1m2)×1(m_1m_2)\times 1 vector obtained by stacking the columns of the m1×m2m_1 \times m_2 matrix H{\bf H}. See Section 3.2.2 of Chang et al. (2023) for details.

The unified estimation method involves

Σk=Tδ3{Σ^Y(k)}  with  Σ^Y(k)=1nkt=k+1nvec(YtYˉ){vec(YtkYˉ)}, \vec{\bf \Sigma}_{k}=T_{\delta_3}\{\hat{\boldsymbol{\Sigma}}_{\vec{\mathbf{Y}}}(k)\}\ \ {\rm with}\ \ \hat{\boldsymbol{\Sigma}}_{\vec{\mathbf{Y}}}(k)=\frac{1}{n-k}\sum_{t=k+1}^n{\rm vec}({\mathbf{Y}}_t-\bar{\mathbf{Y}})\{{\rm vec}(\mathbf{Y}_{t-k}-\bar{\mathbf{Y}})\}'\,,

where Tδ3()T_{\delta_3}(\cdot) is a threshold operator with the threshold level δ30\delta_3 \geq 0. See Section 4.2 of Chang et al. (2024) for details.

Examples

# Example 1. p <- 10 q <- 10 n <- 400 d = 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 unknown res1 <- CP_MTS(Y, method = "CP.Direct") res2 <- CP_MTS(Y, method = "CP.Refined") res3 <- CP_MTS(Y, method = "CP.Unified") ## d is known res4 <- CP_MTS(Y, Rank = list(d = 3), method = "CP.Direct") res5 <- CP_MTS(Y, Rank = list(d = 3), method = "CP.Refined") # Example 2. p <- 10 q <- 10 n <- 400 d1 = d2 <- 2 d <-3 data <- DGP.CP(n, p, q, d, d1, d2) Y1 <- data$Y ## d, d1 and d2 are unknown res6 <- CP_MTS(Y1, method = "CP.Unified") ## d, d1 and d2 are known res7 <- 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") .

  • Maintainer: Chen Lin
  • License: GPL-3
  • Last published: 2025-01-28