BDgraph with Simple Examples

The `R`

package **BDgraph** provides
statistical tools for Bayesian structure learning for undirected
graphical models with *continuous*, *count*,
*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), Dobra and
Mohammadi (2018), Mohammadi et al. (2023), and
Vinciotti et
al. (2022). Besides, the package contains several functions for
simulation and visualization, as well as several multivariate datasets
taken from the literature.

Install **BDgraph** using

First, we load **BDgraph** package

Here are two simple examples to show how to use the functionality of the package.

Here is a simple example to see the performance of the package for
the Gaussian graphical models. First, by using the function
`bdgraph.sim()`

, we simulate 200 observations (n = 200) from
a multivariate Gaussian distribution with 15 variables (p = 15) and
“scale-free” graph structure, as follows

Since the generated data are Gaussian, we run the
`bdgraph()`

function by choosing `method = "ggm"`

,
as follows

To report confusion matrix with cutoff point 0.5:

```
conf.mat( actual = data.sim, pred = bdgraph.obj, cutoff = 0.5 )
Actual
Prediction 0 1
0 91 4
1 0 10
conf.mat.plot( actual = data.sim, pred = bdgraph.obj, cutoff = 0.5 )
```

To compare the result with the true graph

```
Target BDgraph
True Positive 10 10.000
True Negative 95 91.000
False Positive 0 4.000
False Negative 0 0.000
F1-score 1 0.833
Specificity 1 0.958
Sensitivity 1 1.000
MCC 1 0.827
```

Now, as an alternative, we run the `bdgraph.mpl()`

function which is based on the GGMs and marginal pseudo-likelihood, as
follows

```
bdgraph.mpl.obj = bdgraph.mpl( data = data.sim, method = "ggm", iter = 5000, verbose = FALSE )
conf.mat( actual = data.sim, pred = bdgraph.mpl.obj )
Actual
Prediction 0 1
0 91 4
1 0 10
conf.mat.plot( actual = data.sim, pred = bdgraph.mpl.obj )
```

We could compare the results of both algorithms with the true graph as follows

```
compare( list( bdgraph.obj, bdgraph.mpl.obj ), data.sim,
main = c( "Target", "BDgraph", "BDgraph.mpl" ), vis = TRUE )
```

```
Target BDgraph BDgraph.mpl
True Positive 14 10.000 10.000
True Negative 91 91.000 91.000
False Positive 0 0.000 0.000
False Negative 0 4.000 4.000
F1-score 1 0.833 0.833
Specificity 1 1.000 1.000
Sensitivity 1 0.714 0.714
MCC 1 0.827 0.827
```

To see the performance of the BDMCMC algorithm we could plot the ROC curve as follows

Here is a simple example to see the performance of the package for
the mixed data using Gaussian copula graphical models. First, by using
the function `bdgraph.sim()`

, we simulate 300 observations (n
= 300) from mixed data (`type = "mixed"`

) with 10 variables
(p = 10) and “random” graph structure, as follows

```
set.seed( 2 )
data.sim = bdgraph.sim( n = 300, p = 10, type = "mixed", graph = "random", vis = TRUE )
```

Since the generated data are mixed data, we are using run the
`bdgraph()`

function by choosing
`method = "gcgm"`

, as follows:

To compare the result with the true graph, we could run

```
Target BDgraph
True Positive 12 9.000
True Negative 33 31.000
False Positive 0 2.000
False Negative 0 3.000
F1-score 1 0.783
Specificity 1 0.939
Sensitivity 1 0.750
MCC 1 0.709
```

For more examples see Mohammadi and Wit (2019).