square {TRES} | R Documentation |
Square simulated data
Description
Synthetic data generated from tensor predictor regression (TPR) model. Each response observation is univariate, and each predictor observation is a matrix.
Usage
data("square")
Format
A list consisting of four components:
- x
A
32 \times 32 \times 200
tensor, each matrixx@data[,,i]
represents a predictor observation.- y
A
1 \times 200
matrix, each entry represents a response observation.- coefficients
A
32\times 32 \times 1
tensor with a square pattern.- Gamma
A list consisting of two
32 \times 2
envelope basis.
Details
The dataset is generated from the tensor predictor regression (TPR) model:
Y_i = B_{(m+1)}vec(X_i) + \epsilon_i, \quad i = 1,\ldots, n,
where n=200
and the regression coefficient B \in R^{32\times 32}
is a given image with rank 2, which has a square pattern. All the elements of the coefficient matrix B
are either 0.1 or 1. To make the model conform to the envelope structure, we construct the envelope basis \Gamma_k
and the covariance matrices \Sigma_k, k=1,2
, of predictor X
as following. With the singular value decomposition of B
, namely B = \Gamma_1 \Lambda \Gamma_2^T
, we choose the envelope basis as \Gamma_k \in R^{32 \times 2}, k=1,2
. Then the envelope dimensions are u_1 = u_2 = 2
. We set matrices \Omega_k = I_2
and \Omega_{0k} = 0.01 I_{30}
, k=1,2
. Then we generate the covariance matrices \Sigma_k = \Gamma_k \Omega_k \Gamma_k^T + \Gamma_{0k}\Omega_{0k}\Gamma_{0k}^T
, followed by normalization with their Frobenius norms. The predictor X_i
is then generated from two-way tensor (matrix) normal distribution TN(0; \Sigma_1, \Sigma_2)
. And the error term \epsilon_i
is generated from standard normal distribution.
References
Zhang, X. and Li, L., 2017. Tensor envelope partial least-squares regression. Technometrics, 59(4), pp.426-436.
Examples
## Fit square dataset with the tensor predictor regression model
data("square")
x <- square$x
y <- square$y
# Model fitting with ordinary least square.
fit_std <- TPR.fit(x, y, method="standard")
# Draw the coefficient plot.
plot(fit_std)