Learn R Programming

abn (version 1.3)

mb: Compute the Markov blanket

Description

This function computes the Markov blanket of a set of node given a DAG (Directed Acyclic Graph).

Usage

mb(dag.m=NULL,
   node=NULL,
   data.dists=NULL)

Arguments

dag.m

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.

Details

This function return the Markov Blanket of a set of nodes given a DAG.

The dag.m 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

Run this code
# NOT RUN {
#defining distribution
dist <- list(a="gaussian",b="gaussian",c="gaussian",d="gaussian", e="binomial", 
               f="binomial")
    
    #define parameter matrix 
    dag <- matrix(data = 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.m = dag,node = "b",data.dists = dist)
    mb(dag.m = dag,node = "e",data.dists = dist)
    mb(dag.m = dag,node = c("b","e"),data.dists = dist)

# }

Run the code above in your browser using DataLab