# ssgraph with simple example

The R package ssgraph is designed for Bayesian structure learning in graphical models using spike-and-slab priors. To speed up the computations, the computationally intensive tasks of the package are implemented in C++ in parallel using OpenMP.

Install ssgraph using

install.packages( "ssgraph" )

First, we install ssgraph

library( ssgraph )

# Example

This 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 100 observations (n = 100) from a multivariate Gaussian distribution with 8 variables (p = 8) and “scale-free” graph structure, as follows:

set.seed( 10 )

data.sim <- bdgraph.sim( n = 100, p = 8, graph = "scale-free", vis = TRUE )


round( head( data.sim $data, 4 ), 2 ) > [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] > [1,] -0.83 0.72 -0.26 -0.29 0.46 0.08 -0.85 0.35 > [2,] -0.40 -0.38 0.78 1.90 0.35 0.51 -0.97 0.38 > [3,] -0.65 0.21 -0.80 -0.64 -0.72 0.40 0.89 0.94 > [4,] 0.74 -0.38 0.18 -0.95 0.23 -1.44 -0.85 0.03 Since the generated data are Gaussian, we run ssgraph function by choosing method = "ggm", as follows: ssgraph.obj <- ssgraph( data = data.sim, method = "ggm", iter = 5000, save = TRUE, verbose = FALSE ) summary( ssgraph.obj ) >$selected_g
>      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
> [1,]    0    0    0    1    0    0    1    1
> [2,]    0    0    1    0    1    1    0    0
> [3,]    0    0    0    0    0    0    0    0
> [4,]    0    0    0    0    0    0    0    0
> [5,]    0    0    0    0    0    0    0    0
> [6,]    0    0    0    0    0    0    0    0
> [7,]    0    0    0    0    0    0    0    0
> [8,]    0    0    0    0    0    0    0    0
>
> $p_links > [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] > [1,] 0 0.12 0.04 0.96 0.05 0.07 0.57 0.99 > [2,] 0 0.00 1.00 0.04 0.98 1.00 0.05 0.11 > [3,] 0 0.00 0.00 0.45 0.04 0.04 0.03 0.06 > [4,] 0 0.00 0.00 0.00 0.02 0.07 0.08 0.04 > [5,] 0 0.00 0.00 0.00 0.00 0.06 0.15 0.02 > [6,] 0 0.00 0.00 0.00 0.00 0.00 0.14 0.03 > [7,] 0 0.00 0.00 0.00 0.00 0.00 0.00 0.05 > [8,] 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 > >$K_hat
>       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]
> [1,]  1.21 -0.03  0.00 -0.36 -0.01 -0.02 -0.17 -0.42
> [2,] -0.03  2.14 -1.03  0.01 -0.45 -0.59 -0.01 -0.03
> [3,]  0.00 -1.03  1.87 -0.14  0.00 -0.01  0.00 -0.01
> [4,] -0.36  0.01 -0.14  1.25  0.00 -0.02  0.02  0.00
> [5,] -0.01 -0.45  0.00  0.00  1.15  0.02  0.04  0.00
> [6,] -0.02 -0.59 -0.01 -0.02  0.02  1.05 -0.03 -0.01
> [7,] -0.17 -0.01  0.00  0.02  0.04 -0.03  1.11  0.01
> [8,] -0.42 -0.03 -0.01  0.00  0.00 -0.01  0.01  1.22

To compare the result with true graph

compare( data.sim, ssgraph.obj, main = c( "Target", "ssgraph" ), vis = TRUE )

>                Target ssgraph
> True Positive       6   6.000
> True Negative      22  21.000
> False Positive      0   1.000
> False Negative      0   0.000
> F1-score            1   0.923
> Specificity         1   0.955
> Sensitivity         1   1.000
> MCC                 1   0.905
plotroc( ssgraph.obj, data.sim, cut = 200 )