Generates random matrices, distributed according to the G-Wishart distribution with parameters b and D, WG(b,D) with respect to the graph structure G. Note this fuction works for both non-decomposable and decomposable graphs.
rgwish( n =1, adj =NULL, b =3, D =NULL, threshold =1e-8)
Arguments
n: number of samples required.
adj: adjacency matrix corresponding to the graph structure which can be non-decomposable or decomposable. It should be an upper triangular matrix in which aij=1
if there is a link between notes i and j, otherwise aij=0. adj could be an object of class "graph", from function graph.sim. It also could be an object of class "sim", from function bdgraph.sim. It also could be an object of class "bdgraph", from functions bdgraph.mpl or bdgraph.
b: degree of freedom for G-Wishart distribution, WG(b,D).
D: positive definite (p×p) "scale" matrix for G-Wishart distribution, WG(b,D). The default is an identity matrix.
threshold: threshold value for the convergence of sampling algorithm from G-Wishart.
Details
Sampling from G-Wishart distribution, K∼WG(b,D), with density:
Pr(K)∝∣K∣(b−2)/2exp{−21\mboxtrace(K×D)},
which b>2 is the degree of freedom and D is a symmetric positive definite matrix.
Returns
A numeric array, say A, of dimension (p×p×n), where each A[,,i] is a positive definite matrix, a realization of the G-Wishart distribution, WG(b,D). Note, for the case n=1, the output is a matrix.
References
Lenkoski, A. (2013). A direct sampler for G-Wishart variates, Stat, 2:119-128, tools:::Rd_expr_doi("10.1002/sta4.23")
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")
# Generating a 'circle' graph as a non-decomposable graphadj <- graph.sim( p =5, graph ="circle")adj # adjacency of graph with 5 nodessample <- rgwish( n =1, adj = adj, b =3, D = diag(5))round( sample,2)sample <- rgwish( n =5, adj = adj )round( sample,2)