Title: | Multivariate Regression with Covariance Estimation |
---|---|
Description: | Compute and select tuning parameters for the MRCE estimator proposed by Rothman, Levina, and Zhu (2010) <doi:10.1198/jcgs.2010.09188>. This estimator fits the multiple output linear regression model with a sparse estimator of the error precision matrix and a sparse estimator of the regression coefficient matrix. |
Authors: | Adam J. Rothman |
Maintainer: | Adam J. Rothman <[email protected]> |
License: | GPL-2 |
Version: | 2.4 |
Built: | 2024-10-29 06:31:57 UTC |
Source: | CRAN |
Computes the MRCE estimators (Rothman, Levina, and Zhu, 2010)
and has the dataset stock04
used in Rothman, Levina, and Zhu (2010),
originally analyzed in Yuan et al. (2007).
The primary function is mrce
. The dataset is stock04
.
Adam J. Rothman
Maintainer: Adam J. Rothman <[email protected]>
Rothman, A.J., Levina, E., and Zhu, J. (2010). Sparse multivariate regression with covariance estimation. Journal of Computational and Graphical Statistics 19:974–962.
Yuan, M., Ekici, A., Lu, Z., and Monteiro, R. (2007). Dimension reduction and coefficient estimation in multivariate linear regression. Journal of the Royal Statistical Society Series B 69(3):329–346.
Jerome Friedman, Trevor Hastie, Robert Tibshirani (2008). Sparse inverse covariance estimation with the graphical lasso. Biostatistics, 9(3), 432-441.
Jerome Friedman, Trevor Hastie, Robert Tibshirani (2010). Regularization Paths for Generalized Linear Models via Coordinate Descent. Journal of Statistical Software, 33(1), 1-22.
Let be the set of
by
symmetric and positive definite matrices
and let
be the measurements of the
responses for the
th subject
(
).
The model assumes that
is a realization of the
-variate random vector
where is an unknown intercept vector;
is an unknown regression coefficient matrix;
is the known vector of values for
th subjects's predictors,
and
are
independent copies of a
-variate Normal random
vector with mean 0 and unknown inverse covariance
matrix
.
This function computes penalized likelihood estimates of the unknown parameters
,
, and
.
Let
and
.
These estimates are
and , where
has
th row
,
and
has
th row
.
mrce(X,Y, lam1=NULL, lam2=NULL, lam1.vec=NULL, lam2.vec=NULL, method=c("single", "cv", "fixed.omega"), cov.tol=1e-4, cov.maxit=1e3, omega=NULL, maxit.out=1e3, maxit.in=1e3, tol.out=1e-8, tol.in=1e-8, kfold=5, silent=TRUE, eps=1e-5, standardize=FALSE, permute=FALSE)
mrce(X,Y, lam1=NULL, lam2=NULL, lam1.vec=NULL, lam2.vec=NULL, method=c("single", "cv", "fixed.omega"), cov.tol=1e-4, cov.maxit=1e3, omega=NULL, maxit.out=1e3, maxit.in=1e3, tol.out=1e-8, tol.in=1e-8, kfold=5, silent=TRUE, eps=1e-5, standardize=FALSE, permute=FALSE)
X |
An |
Y |
An |
lam1 |
A single value for |
lam2 |
A single value for |
lam1.vec |
A vector of candidate values for |
lam2.vec |
A vector of candidate values for |
method |
There are three options:
|
cov.tol |
Convergence tolerance for the glasso algorithm that minimizes the objective function (defined above)
with |
cov.maxit |
The maximum number of iterations allowed for the glasso algorithm that minimizes the objective function
(defined above)
with |
omega |
A user-supplied fixed value of |
maxit.out |
The maximum number of iterations allowed for the outer loop of the exact MRCE algorithm. |
maxit.in |
The maximum number of iterations allowed for the algorithm that minimizes the objective function, defined above,
with |
tol.out |
Convergence tolerance for outer loop of the exact MRCE algorithm. |
tol.in |
Convergence tolerance for the algorithm that minimizes the objective function, defined above,
with |
kfold |
The number of folds to use when |
silent |
Logical: when |
eps |
The algorithm will terminate if the minimum diagonal entry of the current iterate's residual
sample covariance is less than |
standardize |
Logical: should the columns of |
permute |
Logical: when |
Please see Rothman, Levina, and Zhu (2010)
for more information on the algorithm and model.
This version of the software uses the glasso algorithm (Friedman et al., 2008) through the R package glasso
.
If the algorithm is running slowly, track its progress with silent=FALSE
.
In some cases, choosing cov.tol=0.1
and tol.out=1e-10
allows the algorithm to make
faster progress. If one uses a matrix for lam2
, consider setting tol.in=1e-12
.
When ,
the diagonal of the optimization variable corresponding
to the inverse covariance matrix of the error is penalized.
Without diagonal penalization, if there exists a
such
that the
th column of
is equal to the
th
column of
,
then a global minimizer of the objective function
(defined above) does not exist.
The algorithm that minimizes the objective function, defined above,
with fixed uses a similar update strategy and termination
criterion to those used by Friedman et al. (2010) in the corresponding R package
glmnet
.
A list containing
Bhat |
This is |
muhat |
This is the intercept estimate |
omega |
This is |
mx |
This is |
my |
This is |
best.lam1 |
The selected value for |
best.lam2 |
The selected value for |
cv.err |
Cross validation error matrix with |
The algorithm is fastest when and
are large.
Use
silent=FALSE
to
check if the algorithm is converging before the total iterations exceeds maxit.out
.
Adam J. Rothman
Rothman, A. J., Levina, E., and Zhu, J. (2010) Sparse multivariate regression with covariance estimation. Journal of Computational and Graphical Statistics. 19: 947–962.
Jerome Friedman, Trevor Hastie, Robert Tibshirani (2008). Sparse inverse covariance estimation with the graphical lasso. Biostatistics, 9(3), 432-441.
Jerome Friedman, Trevor Hastie, Robert Tibshirani (2010). Regularization Paths for Generalized Linear Models via Coordinate Descent. Journal of Statistical Software, 33(1), 1-22.
set.seed(48105) n=50 p=10 q=5 Omega.inv=diag(q) for(i in 1:q) for(j in 1:q) Omega.inv[i,j]=0.7^abs(i-j) out=eigen(Omega.inv, symmetric=TRUE) Omega.inv.sqrt=tcrossprod(out$vec*rep(out$val^(0.5), each=q),out$vec) Omega=tcrossprod(out$vec*rep(out$val^(-1), each=q),out$vec) X=matrix(rnorm(n*p), nrow=n, ncol=p) E=matrix(rnorm(n*q), nrow=n, ncol=q)%*%Omega.inv.sqrt Beta=matrix(rbinom(p*q, size=1, prob=0.1)*runif(p*q, min=1, max=2), nrow=p, ncol=q) mu=1:q Y=rep(1,n)%*%t(mu) + X%*%Beta + E lam1.vec=rev(10^seq(from=-2, to=0, by=0.5)) lam2.vec=rev(10^seq(from=-2, to=0, by=0.5)) cvfit=mrce(Y=Y, X=X, lam1.vec=lam1.vec, lam2.vec=lam2.vec, method="cv") cvfit fit=mrce(Y=Y, X=X, lam1=10^(-1.5), lam2=10^(-0.5), method="single") fit lam2.mat=1000*(fit$Bhat==0) refit=mrce(Y=Y, X=X, lam2=lam2.mat, method="fixed.omega", omega=fit$omega, tol.in=1e-12) refit
set.seed(48105) n=50 p=10 q=5 Omega.inv=diag(q) for(i in 1:q) for(j in 1:q) Omega.inv[i,j]=0.7^abs(i-j) out=eigen(Omega.inv, symmetric=TRUE) Omega.inv.sqrt=tcrossprod(out$vec*rep(out$val^(0.5), each=q),out$vec) Omega=tcrossprod(out$vec*rep(out$val^(-1), each=q),out$vec) X=matrix(rnorm(n*p), nrow=n, ncol=p) E=matrix(rnorm(n*q), nrow=n, ncol=q)%*%Omega.inv.sqrt Beta=matrix(rbinom(p*q, size=1, prob=0.1)*runif(p*q, min=1, max=2), nrow=p, ncol=q) mu=1:q Y=rep(1,n)%*%t(mu) + X%*%Beta + E lam1.vec=rev(10^seq(from=-2, to=0, by=0.5)) lam2.vec=rev(10^seq(from=-2, to=0, by=0.5)) cvfit=mrce(Y=Y, X=X, lam1.vec=lam1.vec, lam2.vec=lam2.vec, method="cv") cvfit fit=mrce(Y=Y, X=X, lam1=10^(-1.5), lam2=10^(-0.5), method="single") fit lam2.mat=1000*(fit$Bhat==0) refit=mrce(Y=Y, X=X, lam2=lam2.mat, method="fixed.omega", omega=fit$omega, tol.in=1e-12) refit
Weekly log-returns of 9 stocks from 2004, analyzed in Yuan et al. (2007)
data(stock04)
data(stock04)
The format is: num [1:52, 1:9] 0.002275 -0.003795 0.012845 0.017489 -0.000369 ... - attr(*, "dimnames")=List of 2 ..$ : NULL ..$ : chr [1:9] "Walmart" "Exxon" "GM" "Ford" ...
Yuan, M., Ekici, A., Lu, Z., and Monteiro, R. (2007). Dimension reduction and coefficient estimation in multivariate linear regression. Journal of the Royal Statistical Society Series B, 69(3):329–346.
Yuan, M., Ekici, A., Lu, Z., and Monteiro, R. (2007). Dimension reduction and coefficient estimation in multivariate linear regression. Journal of the Royal Statistical Society Series B, 69(3):329–346.