manifold1D: Estimate the envelope subspace (ManifoldOptim 1D)

Description Usage Arguments Details Value Note References Examples

View source: R/manifold1D.R

Description

The 1D algorithm to estimate the envelope subspace with specified dimension based on R package "ManifoldOptim".

Usage

1
manifold1D(M, U, d, params=NULL)

Arguments

M

M matrix in the envelope objective function. An r-by-r positive semi-definite matrix.

U

U matrix in the envelope objective function. An r-by-r positive semi-definite matrix.

d

Dimension of the envelope. An integer between 0 and r.

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".

Details

Estimate M-envelope contains span(U) where M > 0 and is symmetric. The dimension of the envelope is d.

Value

Gammahat

The orthogonal basis of the envelope subspace.

Note

ManifoldOptim_module should be loaded first before using function manifold1D.

References

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

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
mod <- Module("ManifoldOptim_module", PACKAGE = "ManifoldOptim")
mani.params <- get.manifold.params(IsCheckParams = TRUE)

##simulate two matrices M and U with an envelope structure#
p <- 20
u <- 5

##randomly generate a semi-orthogonal p-by-u basis matrix (Gamma) for the
##envelope and its orthogonal completion (Gamma0) of dimension p-by-(p-u)
Gamma <- matrix(runif(p*u), p, u)

###make Gamma semi-orthogonal
Gamma <- qr.Q(qr(Gamma))
Gamma0 <- qr.Q(qr(Gamma),complete=TRUE)[,(u+1):p]

## randomly generated symmetric positive definite matrices, M and U, to have
## an exact u-dimensional envelope structure

Phi <- matrix(runif(u^2), u, u)
Phi <- Phi %*% t(Phi)
Omega <- matrix(runif(u^2), u, u)
Omega <- Omega %*% t(Omega)
Omega0 <- matrix(runif((p-u)^2),p-u,p-u)
Omega0 <- Omega0 %*% t(Omega0)
M <- Gamma %*% Omega %*% t(Gamma) + Gamma0 %*% Omega0 %*% t(Gamma0)
U <- Gamma %*% Phi %*% t(Gamma)

# randomly generate symmetric positive definite matrices, Mhat and Uhat, as
# root-n consistent sample estimators for M and U

n=200
X <- mvrnorm(n, mu = rep(0, p), Sigma = M)
Y <- mvrnorm(n, mu = rep(0, p), Sigma = U)
Mhat <- (t(X) %*% X)/n
Uhat <- (t(Y) %*% Y)/n


Ghat_1D <- manifold1D(Mhat, Uhat, u, params=NULL)

kusakehan/TEReg documentation built on May 30, 2019, 7:17 a.m.