The R package BDgraph provides statistical tools for Bayesian structure learning in undirected graphical models for continuous, ordinal/count/dicrete, binary, and mixed data. The package is implemented the recent improvements in the Bayesian graphical models' literature, including Mohammadi and Wit (2015), Mohammadi et al. (2023), Mohammadi et al. (2017), and Dobra and Mohammadi (2018). To speed up the computations, the intensive tasks of the package are implemented in parallel using OpenMP in C++ and interfaced with R. Besides, the package contains several functions for simulation and visualization, as well as several multivariate datasets taken from the literature.
package
How to cite this package
To cite BDgraph in publications use:
Mohammadi, R. and Wit, E. C. (2019). BDgraph: An R Package for Bayesian Structure Learning in Graphical Models, Journal of Statistical Software, 89(3):1-30, tools:::Rd_expr_doi("10.18637/jss.v089.i03")
Mohammadi, R. and Wit, E. C. (2019). BDgraph: An R Package for Bayesian Structure Learning in Graphical Models, Journal of Statistical Software, 89(3):1-30, tools:::Rd_expr_doi("10.18637/jss.v089.i03")
Mohammadi, A. and Wit, E. C. (2015). Bayesian Structure Learning in Sparse Gaussian Graphical Models, Bayesian Analysis, 10(1):109-138, tools:::Rd_expr_doi("10.1214/14-BA889")
Mohammadi, R., Massam, H. and Letac, G. (2023). Accelerating Bayesian Structure Learning in Sparse Gaussian Graphical Models, Journal of the American Statistical Association, tools:::Rd_expr_doi("10.1080/01621459.2021.1996377")
Mohammadi, A., et al (2017). Bayesian modelling of Dupuytren disease by using Gaussian copula graphical models, Journal of the Royal Statistical Society: Series C, 66(3):629-645, tools:::Rd_expr_doi("10.1111/rssc.12171")
Dobra, A. and Mohammadi, R. (2018). Loglinear Model Selection and Human Mobility, Annals of Applied Statistics, 12(2):815-845, tools:::Rd_expr_doi("10.1214/18-AOAS1164")
Vogels, L., Mohammadi, R., Schoonhoven, M., and Birbil, S.I. (2023) Bayesian Structure Learning in Undirected Gaussian Graphical Models: Literature Review with Empirical Comparison, arXiv preprint, tools:::Rd_expr_doi("10.48550/arXiv.2307.02603")
Mohammadi, R., Schoonhoven, M., Vogels, L., and Birbil, S.I. (2023) Large-scale Bayesian Structure Learning for Gaussian Graphical Models using Marginal Pseudo-likelihood, arXiv preprint, tools:::Rd_expr_doi("10.48550/arXiv.2307.00127")
Vinciotti, V., Behrouzi, P., and Mohammadi, R. (2022) Bayesian structural learning of microbiota systems from count metagenomic data, arXiv preprint, tools:::Rd_expr_doi("10.48550/arXiv.2203.10118")
Dobra, A. and Lenkoski, A. (2011). Copula Gaussian graphical models and their application to modeling functional disability data, The Annals of Applied Statistics, 5(2A):969-93, tools:::Rd_expr_doi("10.1214/10-AOAS397")
Dobra, A., et al. (2011). Bayesian inference for general Gaussian graphical models with application to multivariate lattice data. Journal of the American Statistical Association, 106(496):1418-33, tools:::Rd_expr_doi("10.1198/jasa.2011.tm10465")
Mohammadi, A. and Dobra, A. (2017). The R Package BDgraph for Bayesian Structure Learning in Graphical Models, ISBA Bulletin, 24(4):11-16
Lenkoski, A. (2013). A direct sampler for G-Wishart variates, Stat, 2(1):119-28, tools:::Rd_expr_doi("10.1002/sta4.23")
Pensar, J. et al (2017) Marginal pseudo-likelihood learning of discrete Markov network structures, Bayesian Analysis, 12(4):1195-215, tools:::Rd_expr_doi("10.1214/16-BA1032")
## Not run:library( BDgraph )set.seed(10)# Generating multivariate normal data from a 'scale-free' graphdata.sim <- bdgraph.sim( n =100, p =10, graph ="scale-free", vis =TRUE)# Running algorithm based on GGMsbdgraph.obj <- bdgraph( data = data.sim, iter =5000)summary( bdgraph.obj )# To compare the result with true graphcompare( bdgraph.obj, data.sim, main = c("Target","BDgraph"), vis =TRUE)# Confusion Matrixconf.mat( actual = data.sim, pred = bdgraph.obj )conf.mat.plot( actual = data.sim, pred = bdgraph.obj )# Running algorithm based on GGMs and marginal pseudo-likelihoodbdgraph.mpl.obj <- bdgraph.mpl( data = data.sim, iter =5000)summary( bdgraph.mpl.obj )# Confusion Matrixconf.mat( actual = data.sim, pred = bdgraph.mpl.obj )conf.mat.plot( actual = data.sim, pred = bdgraph.mpl.obj )# To compare the results of both algorithms with true graphcompare( list( bdgraph.obj, bdgraph.mpl.obj ), data.sim, main = c("Target","BDgraph","BDgraph_mpl"), vis =TRUE)## End(Not run)