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)
X |
Vector of column numbers of nodes |
Y |
Vector of column numbers of nodes |
S |
Vector of column numbers of nodes |
amat |
The Maximal Ancestral Graph encoded as adjacency matrix of type amatType |
verbose |
If true, more detailed output is provided. |
This function checks separation in the moralized graph as explained in Richardson and Spirtes (2002).
TRUE if X
and Y
are d-separated by S
in the
MAG encoded by amat
, otherwise FALSE.
Markus Kalisch (kalisch@stat.math.ethz.ch), Joris Mooij
T.S. Richardson and P. Spirtes (2002). Ancestral graph Markov models. Annals of Statistics 30 962-1030.
dsepAMTest
for a wrapper of this function that can
easily be included into skeleton
, fci
or
fciPlus
. dsep
for a similar function for DAGs.
# 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')
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.