I am learning about Dynamic Bayesian Network models using the R package bnlearn
. To this end, I am following this paper where they impose certain constraints in the form of 6 layers (Table 1 in the paper):
1 Gender, age at ALS onset
2 Onset site, onset delta (start of the trial - onset)
3 Riluzole intake, placebo/treatment
4 Variables at time t-1
5 Variables at time t, TSO
6 Survival
In this example, since gender
and age
are in the top layer they cannot be influenced by Riluzole intake
but influence (or have a causal connection) Riluzole intake
and ultimately survival
. This guarantees acyclicality in the network, that is, we do not have non-ending feedback loops among the variables.
My question is, how can we model such prior knowledge using the R package bnlearn
.
You can add domain knowledge or constraints to structure learning in a couple of ways.
If you want to specify the network structure and parameters using domain knowledge, you can build the network manually using
custom.fit
.If you want to estimate the structure of the BN from data then you can impose constraints on edge direction & edge presence using the
whitelist
andblacklist
parameters in the structure learning algorithms.A prior can be placed on the edges in structure learning (e.g.
prior="cs"
, where "If prior is cs, beta is a data frame with columns from, to and prob specifying the prior probability for a set of arcs. A uniform probability distribution is assumed for the remaining arcs."). There are other priors that can be used.