ciflyr is the R interface to the CIfly framework for designing efficient causal inference algorithms based on reductions to graph reachability specified by rule tables. For more information on CIfly, see our website and our paper.
install.packages("ciflyr")
As a basic example, we show how to test d-separation with CIfly. The
CIfly algorithm specified by the rule table in the variable
dsepTable
returns all nodes d-connected to the set of nodes
X
given set Z
. Based on this information,
testing d-separation reduces to checking membership in a vector.
library(ciflyr)
<- "
dsepTable EDGES --> <--
SETS X, Z
START <-- AT X
OUTPUT ...
--> | <-- | current in Z
... | ... | current not in Z
"
<- function(G, x, y, Z) {
test_dsep <- reach(G, list("X" = x, "Z" = Z), dsepTable, tableAsString=TRUE)
R return (!(y %in% R))
}# for graph 1 -> 2 -> 3, test whether 1 is d-separated from 3 by 2
print(test_dsep(list("-->" = rbind(c(1, 2), c(2, 3))), 1, 3, c(2)))
#> [1] TRUE