R: High-dimensional undirected graph estimation

huge {huge} | R Documentation

## High-dimensional undirected graph estimation

### Description

The main function for high-dimensional undirected graph estimation. Three graph estimation methods, including (1) Meinshausen-Buhlmann graph estimation (`mb`) (2) graphical lasso (`glasso`) and (3) correlation thresholding graph estimation (`ct`), are available for data analysis.

### Usage

    huge(x, lambda = NULL, nlambda = NULL, lambda.min.ratio = NULL, method = "mb",
    scr = NULL, scr.num = NULL, cov.output = FALSE, sym = "or", verbose = TRUE)

### Arguments

`x` | There are 2 options: (1) `x` is an `n` by `d` data matrix (2) a `d` by `d` sample covariance matrix. The program automatically identifies the input matrix by checking the symmetry. (`n` is the sample size and `d` is the dimension).
`lambda` | A sequence of decresing positive numbers to control the regularization when `method = "mb"` or `"glasso"`, or the thresholding in `method = "ct"`. Typical usage is to leave the input `lambda = NULL` and have the program compute its own `lambda` sequence based on `nlambda` and `lambda.min.ratio`. Users can also specify a sequence to override this. When `method = "mb"` or `"glasso"`, use with care - it is better to supply a decreasing sequence values than a single (small) value.
`nlambda` | The number of regularization/thresholding paramters. The default value is `30` for `method = "ct"` and `10` for `method = "mb"` or `"glasso"`.
`lambda.min.ratio` | If `method = "mb"` or `"glasso"`, it is 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 sequence of length = `nlambda` starting from `MAX` to `lambda.min.ratio*MAX` in log scale. If `method = "ct"`, it is the largest sparsity level for estimated graphs. The program can automatically generate `lambda` as a sequence of length = `nlambda`, which makes the sparsity level of the graph path increases from `0` to `lambda.min.ratio` evenly.The default value is `0.1` when `method = "mb"` or `"glasso"`, and 0.05 `method = "ct"`.
`method` | Graph estimation methods with 3 options: `"mb"`, `"ct"` and `"glasso"`. The defaulty value is `"mb"`.
`scr` | If `scr = TRUE`, the lossy screening rule is applied to preselect the neighborhood before the graph estimation. The default value is `FALSE`. NOT applicable when `method = "ct"`.
`scr.num` | The neighborhood size after the lossy screening rule (the number of remaining neighbors per node). ONLY applicable when `scr = TRUE`. The default value is `n-1`. An alternative value is `n/log(n)`. ONLY applicable when `scr = TRUE` and `method = "mb"`.
`cov.output` | If `cov.output = TRUE`, the output will inlcude a path of estimated covariance matrices. ONLY applicable when `method = "glasso"`. Since the estimated covariance matrices are generally not sparse, please use it with care, or it may take much memory under high-dimensional setting. The default value is `FALSE`.
`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"`, the edge is selected when either node `i` or node `j` is selected as the neighbor for each other. The default value is `"or"`. ONLY applicable when `method = "mb"`.
`verbose` | If `verbose = FALSE`, tracing information printing is disabled. The default value is `TRUE`.

### Details

The graph structure is estimated by Meinshausen-Buhlmann graph estimation or the graphical lasso, and both methods can be further accelerated via the lossy screening rule by preselecting the neighborhood of each variable by correlation thresholding. We target on high-dimensional data analysis usually d >> n, and the computation is memory-optimized using the sparse matrix output. We also provide a highly computationally efficient approaches correlation thresholding graph estimation.

### Value

An object with S3 class `"huge"` is returned:

`data` | The `n` by `d` data matrix or `d` by `d` sample covariance matrix from the input
`cov.input` | An indicator of the sample covariance.
`ind.mat` | The `scr.num` by `k` matrix with each column correspondsing to a variable in `ind.group` and contains the indices of the remaining neighbors after the GSS. ONLY applicable when `scr = TRUE` and `approx = FALSE`
`lambda` | The sequence of regularization parameters used in mb or thresholding parameters in ct.
`sym` | The `sym` from the input. ONLY applicable when `method = "mb"`.
`scr` | The `scr` from the input. ONLY applicable when `method = "mb"` or "glasso".
`path` | A list of `k` by `k` adjacency matrices of estimated graphs as a graph path corresponding to `lambda`.
`sparsity` | The sparsity levels of the graph path.
`icov` | A list of `d` by `d` precision matrices as an alternative graph path (numerical path) corresponding to `lambda`. ONLY applicable when method = "glasso"
`cov` | A list of `d` by `d` estimated covariance matrices corresponding to `lambda`. ONLY applicable when `cov.output = TRUE` and method = "glasso"
`method` | The method used in the graph estimation stage.
`df` | If `method = "mb"`, it is a `k` by `nlambda` matrix. Each row contains the number of nonzero coefficients along the lasso solution path. If `method = "glasso"`, it is a `nlambda` dimensional vector containing the number of nonzero coefficients along the graph path `icov`.
`loglik` | A `nlambda` dimensional vector containing the likelihood scores along the graph path (`icov`). ONLY applicable when `method = "glasso"`. For an estimated inverse convariance Z, the program only calculates log(det(Z)) - trace(SZ) where S is the empirical covariance matrix. For the likelihood for n observations, please multiply by n/2.

### Note

This function ONLY estimates the graph path. For more information about the optimal graph selection, please refer to `huge.select`.

### Author(s)

Tuo Zhao, Han Liu, Kathryn Roeder, John Lafferty, and Larry Wasserman
Maintainers: Tuo Zhao<tzhao5@jhu.edu>

### References

1. T. Zhao and H. Liu. The huge Package for High-dimensional Undirected Graph Estimation in R. Journal of Machine Learning Research, 2012
2. H. Liu, F. Han, M. Yuan, J. Lafferty and L. Wasserman. High Dimensional Semiparametric Gaussian Copula Graphical Models. Annals of Statistics,2012
3. D. Witten and J. Friedman. New insights and faster computations for the graphical lasso. Journal of Computational and Graphical Statistics, to appear, 2011. 4. Han Liu, Kathryn Roeder and Larry Wasserman. Stability Approach to Regularization Selection (StARS) for High Dimensional Graphical Models. Advances in Neural Information Processing Systems, 2010.
5. R. Foygel and M. Drton. Extended bayesian information criteria for gaussian graphical models. Advances in Neural Information Processing Systems, 2010.
6. H. Liu, J. Lafferty and L. Wasserman. The Nonparanormal: Semiparametric Estimation of High Dimensional Undirected Graphs. Journal of Machine Learning Research, 2009
7. J. Fan and J. Lv. Sure independence screening for ultra-high dimensional feature space (with discussion). Journal of Royal Statistical Society B, 2008.
8. O. Banerjee, L. E. Ghaoui, A. d'Aspremont: Model Selection Through Sparse Maximum Likelihood Estimation for Multivariate Gaussian or Binary Data. Journal of Machine Learning Research, 2008.
9. J. Friedman, T. Hastie and R. Tibshirani. Regularization Paths for Generalized Linear Models via Coordinate Descent. Journal of Statistical Software, 2008.
10. J. Friedman, T. Hastie and R. Tibshirani. Sparse inverse covariance estimation with the lasso, Biostatistics, 2007.
11. N. Meinshausen and P. Buhlmann. High-dimensional Graphs and Variable Selection with the Lasso. The Annals of Statistics, 2006.

### See Also

`huge.generator`, `huge.select`, `huge.plot`, `huge.roc`, and `huge-package`.

### Examples

    #generate data
    L = huge.generator(n = 50, d = 12, graph = "hub", g = 4)

    #graph path estimation using mb
    out1 = huge(L$data)
    out1
    plot(out1)				 #Not aligned
    plot(out1, align = TRUE) #Aligned
    huge.plot(out1$path[[3]])

    #graph path estimation using the sample covariance matrix as the input.
    #out1 = huge(cor(L$data))
    #out1
    #plot(out1)				 #Not aligned
    #plot(out1, align = TRUE) #Aligned
    #huge.plot(out1$path[[3]])

    #graph path estimation using ct
    #out2 = huge(L$data,method = "ct")
    #out2
    #plot(out2)

    #graph path estimation using glasso
    #out3 = huge(L$data, method = "glasso")
    #out3
    #plot(out3)

[Package huge version 1.2.7 Index]