Learn R Programming

huge (version 0.7)

huge.subgraph: Subgraph estimation using Meinshausen & Buhlmann Graph Estimation via Lasso

Description

Implements Meinshausen & Buhlmann Graph Estimation via Lasso (GEL). It estimates the neighborhood of each variable by fitting a collection of lasso regression problems.

Usage

huge.subgraph(x, ind.group = NULL, ind.mat = NULL, alpha = 1, lambda = NULL, 
n.lambda = 10, lambda.min = 0.1, sym = "or", verbose = TRUE)

Arguments

x
The n by d data matrix representing n observations in d dimensions
ind.group
A k dimensional 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).
ind.mat
A scr.num by k matrix. Each column corresponds to a variable in ind.group and contains the indices of the preslected neighborhood.
alpha
The tuning parameter for the elastic-net regression. The default value is 1 (lasso). When some dense pattern exists in the graph or some variables are highly correlated, the elastic-net are encouraged for its grouping effect.
lambda
A sequence of decresing positive numbers to control regularization. Typical usage is to leave the input lambda = NULL and have the program compute its own lambda sequence based on n.lambda and lambda.min
n.lambda
The number of regularization paramters. The default value is 10.
lambda.min
The smallest value for lambda, as a fraction of the uppperbound (MAX) of the regularization parameter which makes all estimates equal to 0. The program can automatically generate lambda as a sequence of
sym
Symmetrize the output graphs. If sym = "and", the edge between node i and node j is selected only when both node i and node j are selected as neighbors for each other. If sym = "or"
verbose
If verbose = FALSE, tracing information printing is disabled. The default value is TRUE.

Value

  • An object with S3 class "subgraph" is returned:
  • pathA list of k by k adjacency matrices of estimated graphs is returned as the solution path corresponding to lambda.
  • lambdaThe sequence of regularization parameters used the graph estimation.
  • rssA k by n.lambda matrix. Each row is corresponding to a variable in ind.group and contains all RSS's (Residual Sum of Squares) along the lasso solution path.
  • dfA k by n.lambda matrix. Each row corresponds to a variable in ind.group and contains the number of nonzero coefficients along the lasso solution path.
  • sparsityThe sparsity levels of the solution path.

Details

Meinshausen & Buhlmann Graph Estimation via Laso simplifies the precision matrix estimation to fitting a collection of lasso regression problems. Unlike the graphical lasso it does not numerically estimate the precision matrix. It is computationally easier and can be more scalable: In many situation such as gene regulatory network analysis, we are only interested in the structure of the graph or a subgraph of the whole graph.

References

Tuo Zhao and Han Liu. HUGE: A Package for High-dimensional Undirected Graph Estimation. Technical Report, Carnegie Mellon University, 2010 Jerome Friedman, Trevor Hastie and Rob Tibshirani. Regularization Paths for Generalized Linear Models via Coordinate Descent. Journal of Statistical Software, Vol.33, No.1, 2008. Nicaolai Meinshausen and Peter Buhlmann. High-dimensional Graphs and Variable Selection with the Lasso. The Annals of Statistics, Vol.34, Page 1436-1462, 2006.

See Also

huge and huge-package

Examples

Run this code
#generate data
L = huge.generator(graph = "hub")

#subset indices
ind.group = c(1:40)

#generate the preselected neighborhood
ind.mat = huge.scr(L$data, ind.group)$ind.mat

#generated lambda
lambda = exp(seq(log(0.8),log(0.01),length=30))

#subgraph solution path estimation with the preselected neighborhood
G.path = huge.subgraph(L$data, ind.group = ind.group, ind.mat = ind.mat, lambda = lambda)

#subgraph solution path estimation with specified lambda.min and n.lambda
G.path = huge.subgraph(L$data, ind.group = ind.group, ind.mat = ind.mat, 
n.lambda = 20, lambda.min = 0.01)

#graph solution path estimation using elastic net
G.path = huge.subgraph(L$data, ind.group = ind.group, alpha = 0.7)

Run the code above in your browser using DataLab