Compute the Markov blanket
This function computes the Markov blanket of a set of nodes given a DAG (Directed Acyclic Graph).
mb(dag, node, data.dists=NULL)
dag |
a matrix or a formula statement (see details for format) defining the network structure, a directed acyclic graph (DAG). |
node |
a character vector of the nodes for which the Markov Blanket should be returned. |
data.dists |
a named list giving the distribution for each node in the network, see details. |
This function returns the Markov Blanket of a set of nodes given a DAG.
The dag
can be provided using a formula statement (similar to glm). A typical formula is ~ node1|parent1:parent2 + node2:node3|parent3
. The formula statement have to start with ~
. In this example, node1 has two parents (parent1 and parent2). node2 and node3 have the same parent3. The parents names have to exactly match those given in name
. :
is the separtor between either children or parents, |
separates children (left side) and parents (right side), +
separates terms, .
replaces all the variables in name
.
Gilles Kratzer
## Defining distribution and dag dist <- list(a="gaussian", b="gaussian", c="gaussian", d="gaussian", e="binomial", f="binomial") dag <- matrix(c(0,1,1,0,1,0, 0,0,1,1,0,1, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,1, 0,0,0,0,0,0), nrow = 6L, ncol = 6L, byrow = TRUE) colnames(dag) <- rownames(dag) <- names(dist) mb(dag, node = "b") mb(dag, node = c("b","e")) mb(~a|b:c:e+b|c:d:f+e|f, node = "e", data.dists = dist)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.