Learn R Programming

TRES (version 0.1.0)

manifoldFG: Full Grassmann manifold optimization algorithm (ManifoldOptim)

Description

Estimate the envelope subspace based on R package "ManifoldOptim".

Usage

manifoldFG(M, U, u, G_ini, params=NULL)

Arguments

M

M matrix in the envelope objective function. A \(p\)-by-\(p\) positive semi-definite matrix.

U

U matrix in the envelope objective function. A \(p\)-by-\(p\) positive semi-definite matrix.

u

Dimension of the envelope. An integer between 0 and \(p\).

G_ini

The initial value for mannifold optimization.

params

Option structure with fields: "max_iter" -- max number of iterations. "tol" -- Tolerance used to assess convergence. See Huang et al (2018) for details on how this is used. "method" -- 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" -- Should internal manifold object check inputs and print summary message before optimization (TRUE or FALSE).

The default values are: "max_iter"=500; "tol"=1e-08; "method"="RCG"; "check"="False".

Value

G_hat

The orthogonal basis of the envelope subspace.

Details

Estimating M-envelope contains span(U) where M > 0 and is symmetric and the dimension of the envelope is u.

Examples

Run this code
# NOT RUN {
##simulate two matrices M and U with an envelope structure#
data <- MenvU_sim(n=200, p=20, u=5)
Mhat <- data$Mhat
Uhat <- data$Uhat
G <- data$Gamma

Ghat_1D <- manifold1D(Mhat, Uhat, u=5)
subspace(Ghat_1D, G)

Ghat_FG <- manifoldFG(Mhat, Uhat, u=5, Ghat_1D)
subspace(Ghat_FG, G)
# }

Run the code above in your browser using DataLab