HDSReg | R Documentation |
HDSReg()
considers a multivariate time series model which
represents a high-dimensional vector process as a sum of three terms: a
linear regression of some observed regressors, a linear combination of some
latent and serially correlated factors, and a vector white noise:
{\bf
y}_t = {\bf Dz}_t + {\bf Ax}_t + {\boldsymbol {\epsilon}}_t,
where {\bf
y}_t
and {\bf z}_t
are, respectively, observable p\times 1
and
m \times 1
time series, {\bf x}_t
is an r \times 1
latent
factor process, {\boldsymbol{\epsilon}}_t
is a vector white noise process,
{\bf D}
is an unknown regression coefficient matrix, and
{\bf A}
is an unknown factor loading matrix. This procedure proposed in
Chang, Guo and Yao (2015) aims to estimate the regression coefficient
matrix {\bf D}
, the number of factors r
and the factor loading
matrix {\bf A}
.
HDSReg(
Y,
Z,
D = NULL,
lag.k = 5,
thresh = FALSE,
delta = 2 * sqrt(log(ncol(Y))/nrow(Y)),
twostep = FALSE
)
Y |
An |
Z |
An |
D |
A |
lag.k |
The time lag
where |
thresh |
Logical. If |
delta |
The value of the threshold level |
twostep |
Logical. The same as the argument |
The threshold operator T_\delta(\cdot)
is defined as
T_\delta({\bf W}) = \{w_{i,j}1(|w_{i,j}|\geq \delta)\}
for any matrix
{\bf W}=(w_{i,j})
, with the threshold level \delta \geq 0
and 1(\cdot)
representing the indicator function. We recommend to choose
\delta=0
when p
is fixed and \delta>0
when p \gg n
.
An object of class "factors"
, which contains the following
components:
factor_num |
The estimated number of factors |
reg.coff.mat |
The estimated |
loading.mat |
The estimated |
X |
The |
lag.k |
The time lag used in function. |
Chang, J., Guo, B., & Yao, Q. (2015). High dimensional stochastic regression with latent factors, endogeneity and nonlinearity. Journal of Econometrics, 189, 297–312. \Sexpr[results=rd]{tools:::Rd_expr_doi("doi:10.1016/j.jeconom.2015.03.024")}.
Factors
.
# Example 1 (Example 1 in Chang, Guo and Yao (2015)).
## Generate xt
n <- 400
p <- 200
m <- 2
r <- 3
X <- mat.or.vec(n,r)
x1 <- arima.sim(model = list(ar = c(0.6)), n = n)
x2 <- arima.sim(model = list(ar = c(-0.5)), n = n)
x3 <- arima.sim(model = list(ar = c(0.3)), n = n)
X <- cbind(x1, x2, x3)
X <- t(X)
## Generate yt
Z <- mat.or.vec(m,n)
S1 <- matrix(c(5/8, 1/8, 1/8, 5/8), 2, 2)
Z[,1] <- c(rnorm(m))
for(i in c(2:n)){
Z[,i] <- S1%*%Z[, i-1] + c(rnorm(m))
}
D <- matrix(runif(p*m, -2, 2), ncol = m)
A <- matrix(runif(p*r, -2, 2), ncol = r)
eps <- mat.or.vec(n, p)
eps <- matrix(rnorm(n*p), p, n)
Y <- D %*% Z + A %*% X + eps
Y <- t(Y)
Z <- t(Z)
## D is known
res1 <- HDSReg(Y, Z, D, lag.k = 2)
## D is unknown
res2 <- HDSReg(Y, Z, lag.k = 2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.