dsepAM function

Test for d-separation in a MAG

Test for d-separation in a MAG

This function tests for d-separation (also known as m-separation) of nodes X and nodes Y given nodes S in a MAG.

dsepAM(X, Y, S = NULL, amat, verbose=FALSE)

Arguments

  • X: Vector of column numbers of nodes X in the adjacency matrix
  • Y: Vector of column numbers of nodes Y in the adjacency matrix
  • S: Vector of column numbers of nodes S in the adjacency matrix (may be empty)
  • amat: The Maximal Ancestral Graph encoded as adjacency matrix of type amatType
  • verbose: If true, more detailed output is provided.

Returns

TRUE if X and Y are d-separated by S in the MAG encoded by amat, otherwise FALSE.

Details

This function checks separation in the moralized graph as explained in Richardson and Spirtes (2002).

References

T.S. Richardson and P. Spirtes (2002). Ancestral graph Markov models. Annals of Statistics 30 962-1030.

See Also

dsepAMTest for a wrapper of this function that can easily be included into skeleton, fci or fciPlus. dsep for a similar function for DAGs.

Author(s)

Markus Kalisch (kalisch@stat.math.ethz.ch ), Joris Mooij

Examples

# Y-structure MAG # Encode as adjacency matrix p <- 4 # total number of variables V <- c("X1","X2","X3","X4") # variable labels # amat[i,j] = 0 iff no edge btw i,j # amat[i,j] = 1 iff i *-o j # amat[i,j] = 2 iff i *-> j # amat[i,j] = 3 iff i *-- j amat <- rbind(c(0,0,2,0), c(0,0,2,0), c(3,3,0,2), c(0,0,3,0)) rownames(amat)<-V colnames(amat)<-V ## d-separated cat('X1 d-separated from X2? ', dsepAM(1,2,S=NULL,amat),'\n') ## not d-separated given node 3 cat('X1 d-separated from X2 given X4? ', dsepAM(1,2,S=4,amat),'\n') ## not d-separated by node 3 and 4 cat('X1 d-separated from X2 given X3 and X4? ', dsepAM(1,2,S=c(3,4),amat),'\n')