| 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 200tensor, each matrixx@data[,,i]represents a predictor observation.- y
A
1 \times 200matrix, each entry represents a response observation.- coefficients
A
32\times 32 \times 1tensor with a square pattern.- Gamma
A list consisting of two
32 \times 2envelope 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)