Check Consistency of Conditional Independence for a Triple of Nodes
For each subset of nbrsA
and nbrsC
where a
and
c
are conditionally independent, it is checked if b
is in the
conditioning set.
checkTriple(a, b, c, nbrsA, nbrsC, sepsetA, sepsetC, suffStat, indepTest, alpha, version.unf = c(NA, NA), maj.rule = FALSE, verbose = FALSE)
a, b, c |
(integer) positions in adjacency matrix for nodes a, b, and c, respectively. |
nbrsA, nbrsC |
(integer) position in adjacency matrix for neighbors of a and c, respectively. |
sepsetA |
vector containing Sepset(a,c). |
sepsetC |
vector containing Sepset(c,a). |
suffStat |
a |
indepTest |
|
alpha |
significance level of test. |
version.unf |
(integer) vector of length two:
|
maj.rule |
logical indicating that the following majority rule
is applied: if |
verbose |
Logical asking for detailed output of intermediate steps. |
This function is used in the conservative versions of structure learning algorithms.
decision |
Decision on possibly ambiguous triple, an integer code,
|
vers |
Version (1 or 2) of the ambiguous triple
(1=normal ambiguous triple that is |
sepsetA |
Updated version of |
sepsetC |
Updated version of |
Markus Kalisch (kalisch@stat.math.ethz.ch) and Diego Colombo.
D. Colombo and M.H. Maathuis (2014).Order-independent constraint-based causal structure learning. Journal of Machine Learning Research 15 3741-3782.
################################################## ## Using Gaussian Data ################################################## ## Load predefined data data(gmG) n <- nrow (gmG8$x) V <- colnames(gmG8$x) ## define independence test (partial correlations), and test level indepTest <- gaussCItest alpha <- 0.01 ## define sufficient statistics suffStat <- list(C = cor(gmG8$x), n = n) ## estimate CPDAG pc.fit <- pc(suffStat, indepTest, alpha=alpha, labels = V, verbose = TRUE) if (require(Rgraphviz)) { ## show estimated CPDAG par(mfrow=c(1,2)) plot(pc.fit, main = "Estimated CPDAG") plot(gmG8$g, main = "True DAG") } a <- 6 b <- 1 c <- 8 checkTriple(a, b, c, nbrsA = c(1,5,7), nbrsC = c(1,5), sepsetA = pc.fit@sepset[[a]][[c]], sepsetC = pc.fit@sepset[[c]][[a]], suffStat=suffStat, indepTest=indepTest, alpha=alpha, version.unf = c(2,2), verbose = TRUE) -> ct str(ct) ## List of 4 ## $ decision: int 2 ## $ version : int 1 ## $ SepsetA : int [1:2] 1 5 ## $ SepsetC : int 1 checkTriple(a, b, c, nbrsA = c(1,5,7), nbrsC = c(1,5), sepsetA = pc.fit@sepset[[a]][[c]], sepsetC = pc.fit@sepset[[c]][[a]], version.unf = c(1,1), suffStat=suffStat, indepTest=indepTest, alpha=alpha) -> c2 stopifnot(identical(ct, c2)) ## in this case, 'version.unf' had no effect
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.