glasso {cglasso} | R Documentation |
‘glasso
’ fits the l1-penalized Gaussian graphical model.
glasso(X, weights, pendiag = FALSE, nrho = 50L, rho.min.ratio, rho, maxR2, maxit = 1.0e+4, thr = 1.0e-04, trace = 0L)
X |
the (n x p)-dimensional matrix used to compute the covariance matrix. |
weights |
an optional symmetric matrix of non-negative weights. This matrix can be used to specify the unpenalized partial correlation coefficients (‘ |
pendiag |
flag used to specify if the diagonal elements of the concentration matrix are penalized (‘ |
nrho |
the integer specifying the number of tuning parameters used to fit the glasso model. Default is ‘ |
rho.min.ratio |
the smallest value for the tuning parameter rho, as a fraction of the smallest tuning parameter for which all the estimated partial correlation coefficients are zero. The default depends on the sample size ‘n’ relative to the number of variables ‘p’. If ‘p < n’, the default is ‘1.0E-4’ otherwise the value ‘1.0E-2’ is used as default. A very small value of ‘ |
rho |
optional argument. A user supplied |
maxR2 |
a value belonging to the interval [0, 1] specifying the largest value of the pseudo R-squared measure (see Section Details). The regularization path is stopped when R2 exceeds ‘ |
maxit |
maximum number of iterations of the glasso algorithm. Default is |
thr |
threshold for the convergence of the glasso algorithm. Default is |
trace |
integer for printing out information as iterations proceed: |
For a fixed value of the tuning parameter, glasso
solves the following maximization problem:
max_{Tht} log det Tht - tr{S Tht} - rho sum_{hk} w_{hk} |tht_{hk}|,
where w_{hk} is the non-negative weight for tht_{hk}. The previous maximization problem is solved effeciently combining the block-coordinate descent algorithm (Friedman and others, 2008) with the screening rule proposed in Witten and others (2011).
In order to avoid the overfitting of the model, we use the following pseudo R-squared measure:
R2 = 1 - ||S - Sgm^rho||_F / ||S - Sgm^{rho_max}||_F,
where || . ||_F denotes the Frobenius norm and rho_max denotes the smallest value of the tuning parameter for which all the estimated partial correlation coefficients are zero. By straightforward algebra, it is easy to show that the proposed pseudo R-squared belongs to the closed interval [0, 1]: R2 = 0 when the tuning parameter is equal to rho_max and R2 = 1 when rho = 0. The regularization path is stopped when R2 exceeds ‘maxR2
’.
‘glasso
’ returns an object with S3 class “glasso
”, i.e. a list containing the following components:
call |
the call that produced this object. |
X |
the matrix used to compute the covariance matrix. |
S |
the covariance matrix used to fit the glasso model. |
weights |
the used weights. |
pendiag |
the flag specifying if the diagonal elements of the precisione matrix are penalized. |
nrho |
the number of fitted glasso model. |
rho.min.ratio |
the scale factor used to compute the smallest value of the tuning parameter. |
rho |
the p-dimensional vector reporting the values of the tuning parameter used to fit the glasso model. |
maxR2 |
the threshold value used for the pseudo R-squared measure. |
maxit |
the maximum number of iterations of the glasso algorithm. |
thr |
the threshold for the convergence of the glasso algorithm. |
Sgm |
an array of dimension p x p x nrho). |
Tht |
an array of dimension (p x p x nrho). |
Adj |
an array of dimension (p x p x nrho). |
df |
the p-dimensional vector reporting the number of non-zero partial correlation coefficients. |
R2 |
the p-dimensional vector reporting the values of the measure R2 described in the section Details. |
ncomp |
the p-dimensional vector reporting the number of connected components (for internal purposes only). |
Ck |
the (p x nrho)-dimensional matrix encoding the connected components (for internal purposes only). |
pk |
the (p x nrho)-dimensional matrix reporting the number of vertices per connected component (for internal purposes only). |
nit |
the p-dimensional vector reporting the number of iterations. |
conv |
a description of the error that has occurred. |
trace |
the integer used for printing out information. |
Luigi Augugliaro (luigi.augugliaro@unipa.it)
Friedman, J.H., Hastie, T., and Tibshirani, R. (2008). Sparse inverse covariance estimation with the graphical lasso. Biostatistics 9, 432–441.
Witten, D.M., Friedman, J.H, and Simon, N. (2011). New insights and faster computations for the graphical lasso. Journal of Computational and Graphical Statistics 20, 892–900.
mle
, to_graph
and the method functions summary
, coef
, plot
, aic
, bic
and ebic
.
library("cglasso") set.seed(123) p <- 5L n <- 100L mu <- rep(0L, p) Tht <- diag(p) diag(Tht[-1L, -p]) <- diag(Tht[-p, -1L]) <- 0.3 Sgm <- solve(Tht) X <- MASS::mvrnorm(n = n, mu = mu, Sigma = Sgm) out <- glasso(X) out # in this example we use the argument 'weights' to specify # the unpenalized partial correlation coefficients and the # structural zeros in the precision matrix w <- rep(1, p * p) dim(w) <- c(p, p) # specifing the unpenalized partial correlation coefficients diag(w) <- diag(w[-1L, -p]) <- diag(w[-p, -1L]) <- 0 # specifing the structural zero w[1L, 4L:5L] <- w[4L:5L, 1L] <- +Inf w[2L, 5L] <- w[5L, 2L] <- +Inf w out <- glasso(X = X, weights = w) # checking structural zeros out$Tht[, , out$nrho][w == +Inf] # checking stationarity conditions of the MLE estimators # (the unpenalized partial correlation coefficients) (out$Sgm[, , out$nrho] - out$S)[w == 0L]