The function "sugm" estimates sparse undirected graphical models, i.e. Gaussian precision matrix, in high dimensions. We adopt two estimation procedures based on column by column regression scheme: (1) Tuning-Insensitive Graph Estimation and Regression based on square root Lasso (tiger); (2) The Constrained L1 Minimization for Sparse Precision Matrix Estimation using either L1 penalty (clime). The optimization algorithm for all three methods are implemented based on the alternating direction method of multipliers (ADMM) with the linearization method and multi-stage screening of variables. Missing values can be tolerated for CLIME in the data matrix. The computation is memory-optimized using the sparse matrix output.
sugm(data, lambda = NULL, nlambda = NULL, lambda.min.ratio = NULL,
rho = NULL, method = "tiger", sym = "or", shrink=NULL,
prec = 1e-4, max.ite = 1e4, standardize = FALSE,
perturb = TRUE, verbose = TRUE)
There are 2 options for "clime"
: (1) data
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). For "tiger"
, covariance input is not supported and d
\( \ge \)3 is required. For "clime"
, d
\( \ge \)2 is required.
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.ratio
. Users can also specify a sequence to override this. Default value is from lambda.max
to lambda.min.ratio*lambda.max
. For "tiger"
, the default value of lambda.max
is \(\pi\sqrt{\log(d)/n}\). For "clime"
, the default value of lambda.max
is the minimum regularization parameter, which yields an all-zero off-diagonal estiamtes.
The number of values used in lambda
. Default value is 5.
The smallest value for lambda
, as a fraction of the uppperbound (lambda.max
) of the regularization parameter. The program can automatically generate lambda
as a sequence of length = nlambda
starting from lambda.max
to lambda.min.ratio*lambda.max
in log scale. The default value is 0.25 for "tiger"
and 0.5 for "clime"
.
Penalty parameter used in the optimization algorithm for clime
. The default value is \(\sqrt{d}\).
"tiger"
is applied if method = "tiger"
and "clime"
is applied if method="clime"
. Default value is "tiger"
.
Symmetrization of 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"
.
Shrinkage of regularization parameter based on precision of estimation. The default value is 1.5 if method = "clime"
and the default value is 0 if method="tiger"
.
Stopping criterion. The default value is 1e-4.
The iteration limit. The default value is 1e4.
Variables are standardized to have mean zero and unit standard deviation if standardize = TRUE
. The default value is FALSE
.
The diagonal of Sigma
is added by a positive value to guarantee that Sigma
is positive definite if perturb = TRUE
. User can specify a numeric value for perturbe
. The default value is perturb = TRUE
.
Tracing information printing is disabled if verbose = FALSE
. The default value is TRUE
.
An object with S3 class "sugm"
is returned:
The n
by d
data matrix or d
by d
sample covariance matrix from the input.
An indicator of the sample covariance.
The sequence of regularization parameters lambda
used in the program.
The number of values used in lambda
.
A list of d
by d
precision matrices corresponding to regularization parameters.
The sym
from the input.
The method
from the input.
A list of d
by d
adjacency matrices of estimated graphs as a graph path corresponding to lambda
.
The sparsity levels of the graph path.
If method = "clime"
, it is a list of two matrices where ite[[1]] is the number of external iterations and ite[[2]] is the number of internal iterations with the entry of (i,j) as the number of iteration of i-th column and j-th lambda. If method="tiger"
, it is a matrix of iteration with the entry of (i,j) as the number of iteration of i-th column and j-th lambda.
It is a d
by nlambda
matrix. Each row contains the number of nonzero coefficients along the lasso solution path.
The standardize
from the input.
The perturb
from the input.
The verbose
from the input.
CLIME solves the following minimization problem $$ \min || \Omega ||_1 \quad \textrm{s.t. } || S \Omega - I ||_\infty \le \lambda, $$ where \(||\cdot||_1\) and \(||\cdot||_\infty\) are element-wise 1-norm and \(\infty\)-norm respectively.
"tiger"
solves the following minimization problem
$$
\min ||X-XB||_{2,1} + \lambda ||B||_1 \quad \textrm{s.t. } B_{jj} = 0,
$$
where \(||\cdot||_{1}\) and \(||\cdot||_{2,1}\) are element-wise 1-norm and \(L_{2,1}\)-norm respectively.
1. T. Cai, W. Liu and X. Luo. A constrained L1 minimization approach to sparse precision matrix estimation. Journal of the American Statistical Association, 2011. 2. H. Liu, L. Wang. TIGER: A tuning-insensitive approach for optimally estimating large undirected graphs. Technical Report, 2012. 3. B. He and X. Yuan. On non-ergodic convergence rate of Douglas-Rachford alternating direction method of multipliers. Technical Report, 2012.
flare-package
, sugm.generator
, sugm.select
, sugm.plot
, sugm.roc
, plot.sugm
, plot.select
, plot.roc
, plot.sim
, print.sugm
, print.select
, print.roc
and print.sim
.
# NOT RUN {
## load package required
library(flare)
## generating data
n = 50
d = 50
D = sugm.generator(n=n,d=d,graph="band",g=1)
plot(D)
## sparse precision matrix estimation with method "clime"
out1 = sugm(D$data, method = "clime")
plot(out1)
sugm.plot(out1$path[[4]])
## sparse precision matrix estimation with method "tiger"
out2 = sugm(D$data, method = "tiger")
plot(out2)
sugm.plot(out2$path[[5]])
# }
Run the code above in your browser using DataLab