grues

GrUES

Package

gues

Version

0.3.0

Language

Python

Docs

here

Paper

Deligeorgaki et al.[1]

Graph type

UDG

Docker

bpimages/grues:0.3.0

Module folder

grues

Description

Abstract: We consider the problem of estimating the marginal independence structure of a Bayesian network from observational data in the form of an undirected graph called the unconditional dependence graph. We show that unconditional dependence graphs of Bayesian networks correspond to the graphs having equal independence and intersection numbers. Using this observation, a Gröbner basis for a toric ideal associated to unconditional dependence graphs of Bayesian networks is given and then extended by additional binomial relations to connect the space of all such graphs. An MCMC method, called GrUES (Gröbner-based Unconditional Equivalence Search), is implemented based on the resulting moves and applied to synthetic Gaussian data. GrUES recovers the true marginal independence structure via a penalized maximum likelihood or MAP estimate at a higher rate than simple independence tests while also yielding an estimate of the posterior, for which the 20% HPD credible sets include the true structure at a high rate for data-generating graphs with density at least 0.5.

Example

Config file: grues_vs_corr-thresh.json

Command:

snakemake --cores all --use-singularity --configfile workflow/rules/structure_learning_algorithms/grues/grues_vs_corr-thresh.json

Fig. 26 shows the ROC and Fig. 27 shows the SHD comparing GrUES to correlation thresholding for datsets from five different graphs corresponding to a 5-variable random Gaussian SEM whose nodes have average degree of 1 and whose edge weights were allowed to be close to 0. Each dataset contains 300 observations and each Markov chain has 10000 observations. Note that SHD between a learned UDG and true CPDAG is not the most reasonable comparison because an inflated FPR will be reported—see Deligeorgaki et al.[1] for discussion and a more reasonable benchmark.

Fig. 28 shows that GrUES estimates the correct UDG while correlation thresholding (Fig. 29) misses the edge 1—2.

ROC (FPR vs. TPR) GrUES vs corr_thresh example

Fig. 26 ROC of GrUES vs corr_thresh.

SHD GrUES vs corr_thresh example

Fig. 27 SHD of GrUES vs corr_thresh.

adjacency matrix GrUES example

Fig. 28 Adj mat learned by GrUES.

adjacency matrix corr_thresh example

Fig. 29 Adj mat learned by corr_thresh.

Example JSON

[
  {
    "id": "grues",
    "burnin_frac": 0.5,
    "mcmc_estimator": "threshold",
    "mcmc_seed": [
      1,
      2,
      3
    ],
    "threshold": 0.5,
    "timeout": null
  }
]