R: Compute Gaussian graphical model using graphical lasso based...

EBICglasso {qgraph} | R Documentation

## Compute Gaussian graphical model using graphical lasso based on extended BIC criterium.

### 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 \& Tibshirani, 2008). The tuning parameter is chosen using the Extended Bayesian Information criterium (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, ...)

### 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` is positive definite and return an error if not. It is not advised to use a non-positive definite matrix as input as (a) that can not 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`

### Details

The glasso is run for 100 values of the tuning parameter logarithmically spaced between the maximal value of the tuning parameter at which all edges are zero, lamba_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).

### Value

A partial correlation matrix

### Author(s)

Sacha Epskamp <mail@sachaepskamp.com>

### References

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

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). Chicago

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

    ## Not run:
    ### Using bfi dataset from psych ###
    library("psych")
    data(bfi)

    # Compute correlations:
    CorMat <- cor_auto(bfi[,1:25])

    # 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))

    ## End(Not run)

[Package qgraph version 1.9 Index]