Learn R Programming

qgraph (version 1.10.1)

EBICglasso: Compute Gaussian graphical model using graphical lasso based on extended BIC criterion.

Description

This function uses the glasso package (Friedman, Hastie and Tibshirani, 2011) to compute a sparse Gaussian graphical model with the graphical lasso (Friedman, Hastie and Tibshirani, 2008). The tuning parameter is chosen using the Extended Bayesian Information criterion (EBIC).

Usage

EBICglasso(S, n, gamma = 0.5, penalize.diagonal = FALSE, nlambda = 100, 
            lambda.min.ratio = 0.01, returnAllResults = FALSE, checkPD = TRUE, 
            penalizeMatrix, countDiagonal = FALSE, refit = FALSE, threshold = FALSE,
            verbose = TRUE, ...)

Value

A partial correlation matrix. If returnAllResults = TRUE, a list containing:

results

The results of the entire glasso path, as returned by glassopath

ebic

The EBIC value of each network in the path

optnet

The selected partial correlation matrix

lambda

The lambda sequence used

optwi

The precision matrix of the selected network

Arguments

S

A covariance or correlation matrix

n

Sample size used in computing S

gamma

EBIC tuning parameter. 0.5 is generally a good choice. Setting to zero will cause regular BIC to be used.

penalize.diagonal

Should the diagonal be penalized?

nlambda

Number of lambda values to test.

lambda.min.ratio

Ratio of lowest lambda value compared to maximal lambda

returnAllResults

If TRUE this function does not return a network but the results of the entire glasso path.

checkPD

If TRUE, the function will check if S has any negative eigenvalues and return an error if so. It is not advised to use a non-positive definite matrix as input as (a) that cannot be a covariance matrix and (b) glasso can hang if the input is not positive definite.

penalizeMatrix

Optional logical matrix to indicate which elements are penalized

countDiagonal

Should diagonal be counted in EBIC computation? Defaults to FALSE. Set to TRUE to mimic qgraph < 1.3 behavior (not recommended!).

refit

Logical, should the optimal graph be refitted without LASSO regularization? Defaults to FALSE.

threshold

Logical, should elements of the precision matrix that are below (log(p*(p-1)/2)) / sqrt(n) be removed (both before EBIC computation and in final model)? Set to TRUE to ensure high specificity.

verbose

Logical, should progress output be printed to the console?

...

Arguments sent to glasso

Author

Sacha Epskamp <mail@sachaepskamp.com>

Details

The glasso is run for nlambda values of the tuning parameter logarithmically spaced between the maximal value of the tuning parameter at which all edges are zero, lambda_max, and lambda.min.ratio times lambda_max (with the default settings, 100 values between lambda_max and lambda_max/100). For each of these graphs the EBIC is computed and the graph with the best EBIC is selected. The partial correlation matrix is computed using wi2net and returned. When threshold = TRUE, elements of the inverse variance-covariance matrix are first thresholded using the theoretical bound (Jankova and van de Geer, 2018).

References

Friedman, J., Hastie, T., & Tibshirani, R. (2008). Sparse inverse covariance estimation with the graphical lasso. Biostatistics, 9(3), 432-441.

Jerome Friedman, Trevor Hastie and Rob Tibshirani (2011). glasso: Graphical lasso-estimation of Gaussian graphical models. R package version 1.7. http://CRAN.R-project.org/package=glasso

Foygel, R., & Drton, M. (2010, November). Extended Bayesian Information Criteria for Gaussian Graphical Models. In NIPS (pp. 604-612).

Revelle, W. (2014) psych: Procedures for Personality and Psychological Research, Northwestern University, Evanston, Illinois, USA, http://CRAN.R-project.org/package=psych Version = 1.4.4.

Bates, D., and Maechler, M. (2014). Matrix: Sparse and Dense Matrix Classes and Methods. R package version 1.1-3. http://CRAN.R-project.org/package=Matrix

Jankova, J., and van de Geer, S. (2018) Inference for high-dimensional graphical models. In: Handbook of graphical models (editors: Drton, M., Maathuis, M., Lauritzen, S., and Wainwright, M.). CRC Press: Boca Raton, Florida, USA.

Examples

Run this code
if (FALSE) {
### Using bfi dataset from psych ###
library("psych")
data(bfi)

# Compute Spearman correlations:
CorMat <- cor(bfi[,1:25], method = "spearman", use = "pairwise.complete.obs")

# Compute graph with tuning = 0 (BIC):
BICgraph <- EBICglasso(CorMat, nrow(bfi), 0, threshold = TRUE)

# Compute graph with tuning = 0.5 (EBIC)
EBICgraph <- EBICglasso(CorMat, nrow(bfi), 0.5, threshold = TRUE)

# Plot both:
layout(t(1:2))
BICgraph <- qgraph(BICgraph, layout = "spring", title = "BIC", details = TRUE)
EBICgraph <- qgraph(EBICgraph, layout = "spring", title = "EBIC")

# Compare centrality and clustering:
layout(1)
centralityPlot(list(BIC = BICgraph, EBIC = EBICgraph))
clusteringPlot(list(BIC = BICgraph, EBIC = EBICgraph))
}

Run the code above in your browser using DataLab