Learn R Programming

huge (version 0.9.1)

huge.glassoM: High-dimensional undirected graph estimation via Graphical Lasso

Description

Estimates a solution path of sparse precision matrices using a sequence of regularization parameters.

Usage

huge.glassoM(x, ind.group = NULL, lambda.min.ratio = 0.1, 
nlambda = 10, lambda = NULL, verbose = TRUE)

Arguments

x
The n by d data matrix representing n observations in d dimensions.
ind.group
A length k vector indexing a subset of all d variables. ONLY applicable when estimating a subgraph of the whole graph. The default value is c(1:d).
lambda
A sequence of decresing positive numbers to control the regularization. Typical usage is to leave the input lambda = NULL and have the program compute its own lambda sequence based on nlambda and lambda.min.rat
nlambda
The number of regularization paramters. The default value is 10.
lambda.min.ratio
The smallest value for lambda, as a fraction of the uppperbound (MAX) of the regularization/thresholding parameter which makes all estimates equal to 0. The program can automatically generate lambda as a
verbose
If verbose = FALSE, tracing information printing is disabled. The default value is TRUE.

Value

  • An object with S3 class "glassoM" is returned:
  • pathA list of k by k adjacency matrices of estimated graphs (in sparse matrix representation) as a solution path (graph path) corresponding to lambda.
  • wiA list of d by d estimated precision matrices (in sparse matrix representation) as an alternative solution path (numerical path) corresponding to lambda.
  • lambdaThe sequence of regularization parameters used in the GLASSO.
  • sparsityThe sparsity levels of the solution path (graph path).
  • loglikA nlambda dimensional vector containing the likelihood scores along the solution path (wi).
  • dfA nlambda dimensional vector containing the number of nonzero coefficients along the solution path (wi).

Details

The graphical lasso is a well-known computational efficient algorithm to estimate the sparse precision matrix: $$log(det(Omega)) + Tr(S*Omega) + \lambda |Omega|_1$$ The implementation of this function is based on the popular package "glasso". Our huge.glassoM() is actually a modified version of Friedman's glassopath() in a memory efficient manner. Since in most case we are usually only interested in sparse results, instead of using a regular array, we store the solution path in a list with each element corresponding to an estimated precision matrix or graph in sparse matrix representation. This slightly change can help to reduce the memory usage in the high dimensional case. We also follow Dr. Friedman's warm start procedure and make this function computational efficient and stable.

References

1.Tuo Zhao and Han Liu. HUGE: A Package for High-dimensional Undirected Graph Estimation. Technical Report, Carnegie Mellon University, 2010 2.Jerome Friedman, Trevor Hastie and Robert Tibshirani. Sparse inverse covariance estimation with the lasso. Biostatistics, 2007.

See Also

huge, glasso, glassopath and huge-package.

Examples

Run this code
#generate data
L = huge.generator(n = 200, d = 80, graph = "hub")
ind.group = c(1:50)

#subgraph solution path estimation
out1 = huge.glassoM(L$data)
summary(out1)
plot(out1)

#subgraph solution path estimation
out2 = huge(L$data, ind.group = ind.group)
summary(out2)
plot(out2)

#fullgraph solution path estimation with specified nlambda and lambda.min.ratio
out3 = huge(L, method = "GLASSO", nlambda = 8, lambda.min.ratio = 0.2)
summary(out3)
plot(out3)

Run the code above in your browser using DataLab