mb function

Compute the Markov blanket

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)

Arguments

  • 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.

Returns

character vector of node names from the Markov blanket.

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.

Examples

## 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)