Skip to content

Introduction

EnhancedBayesianNetworks.jl is a Julia package for building, reducing, and querying enhanced Bayesian networks (eBNs) [1]: Bayesian networks extended with the continuous and functional nodes of structural reliability analysis, and with imprecision — interval probabilities and probability boxes — carried consistently from the inputs through to the inference result.

Why enhanced Bayesian networks

A classical Bayesian network [2] is a directed acyclic graph of discrete random variables, each with a conditional probability table (CPT) given its parents. That is expressive for categorical reasoning, but engineering models rarely stop there: quantities are continuous, and the probabilities that matter — a component's failure probability, say — are not tabulated in advance but computed from a physical model.

An enhanced Bayesian network closes that gap by admitting three kinds of node side by side:

  • discrete nodes, whose CPT is known a priori;

  • continuous nodes, holding a probability distribution;

  • functional nodes, whose conditional table is not given but derived from the parents through one or more UncertaintyQuantification.jl models, evaluated as structural reliability problems [3].

See the Nodes chapter for the full taxonomy.

The system probability distribution

Notation

Throughout the manual, Y denotes a discrete node, X a continuous node, and Z a node of either kind. An uppercase symbol (Yi, Xi, Zi) is the node — a random variable — while the matching lowercase symbol (yi, xi, zi) is one of its realizations. Bold marks a collection: a set of nodes (Y, X) or a full joint assignment (y, x). A node's parents, children, and spouses (co-parents) are written Pa(), Ch(), and Sp().

A Bayesian network encodes a joint distribution that factorizes over the graph. By the local Markov property each variable is conditionally independent of its non-descendants given its parents, so the joint distribution of n discrete variables Y1,,Yn is the product of the per-node conditional tables [2]:

p(y1,,yn)=i=1np(yiPa(Yi)),

where Pa(Yi) denotes the parents of Yi.

An enhanced Bayesian network keeps this factorized structure but admits both a set of discrete nodes Y={Y1,,YnY} and a set of continuous nodes X={X1,,XnX}. Its system joint distribution is then the combined measure of the discrete probability mass functions and the continuous probability density functions [1]:

p(yx)f(x)=YiYp(yiPa(Yi))XiXf(xiPa(Xi)),

where the p() are the conditional PMFs of the discrete nodes and the f() the conditional PDFs of the continuous ones. Functional nodes are exactly the factors of this product whose conditional table is not given a priori: it is obtained, during reduction, by solving a structural reliability problem (see Reduction & Reliability Analysis).

Precision and imprecision

Every quantity in the model may be precise or imprecise. A discrete CPT entry can be a single probability or an Interval; a continuous node can hold an ordinary distribution or a probability box [4]. Imprecision expresses epistemic uncertainty — what is not known well enough to pin down a single number [5] — and it decides the kind of network you end up with: any surviving imprecision turns a Bayesian network into a credal network [6], a whole convex family of Bayesian networks rather than a single one.

From model to answer

Because a functional or continuous node cannot be queried directly, an eBN is first reduced to a purely discrete network: its continuous nodes are discretized and its functional nodes are evaluated as reliability problems, yielding a BayesianNetwork when everything stays precise or a CredalNetwork when imprecision survives. This reduction is the core operation of the library — see Reduction & Reliability Analysis.

The reduced network is then ready for inference: exact posteriors by variable elimination for a Bayesian network, or lower/upper posterior bounds for a credal one (see Inference). The package also supports learning CPTs from data (Parameter Learning) and drawing the network structure (Plotting).

How this manual is organized

The package builds directly on UncertaintyQuantification.jl [3], whose Model, Parameter, RandomVariable, Interval, and ProbabilityBox types (and its simulation methods) are re-exported and used throughout.