# manifold1D: Estimate the envelope subspace ('ManifoldOptim' 1D) In TRES: Tensor Regression with Envelope Structure and Three Generic Envelope Estimation Approaches

## Description

The 1D algorithm (Cook and Zhang 2016) implemented with Riemannian manifold optimization from R package ManifoldOptim.

## Usage

 `1` ```manifold1D(M, U, u, ...) ```

## Arguments

 `M` The p-by-p positive definite matrix M in the envelope objective function. `U` The p-by-p positive semi-definite matrix U in the envelope objective function. `u` An integer between 0 and n representing the envelope dimension. `...` Additional user-defined arguments: `maxiter`: The maximal number of iterations. `tol`: The tolerance used to assess convergence. See Huang et al. (2018) for details on how this is used. `method`: The name of optimization method supported by R package ManifoldOptim. `"LRBFGS"`: Limited-memory RBFGS `"LRTRSR1"`: Limited-memory RTRSR1 `"RBFGS"`: Riemannian BFGS `"RBroydenFamily"`: Riemannian Broyden family `"RCG"`: Riemannian conjugate gradients `"RNewton"`: Riemannian line-search Newton `"RSD"`: Riemannian steepest descent `"RTRNewton"`: Riemannian trust-region Newton `"RTRSD"`: Riemannian trust-region steepest descent `"RTRSR1"`: Riemannian trust-region symmetric rank-one update `"RWRBFGS"`: Riemannian BFGS `check`: Logical value. Should internal manifold object check inputs and print summary message before optimization. The default values are: `maxiter = 500; tol = 1e-08; method = "RCG"; check = FALSE`.

## Details

Estimate `M`-envelope of `span(U)`. The dimension of the envelope is `u`.

## Value

Return the estimated orthogonal basis of the envelope subspace.

## References

Cook, R.D. and Zhang, X., 2016. Algorithms for envelope estimation. Journal of Computational and Graphical Statistics, 25(1), pp.284-300.

Huang, W., Absil, P.A., Gallivan, K.A. and Hand, P., 2018. ROPTLIB: an object-oriented C++ library for optimization on Riemannian manifolds. ACM Transactions on Mathematical Software (TOMS), 44(4), pp.1-21.

`MenvU_sim, subspace`
 ```1 2 3 4 5 6 7``` ```## Simulate two matrices M and U with an envelope structure data <- MenvU_sim(p = 20, u = 5, wishart = TRUE, n = 200) M <- data\$M U <- data\$U G <- data\$Gamma Gamma_1D <- manifold1D(M, U, u = 5) subspace(Gamma_1D, G) ```