| addBgKnowledge | R Documentation |
Add background knowledge x -> y to an adjacency matrix and complete the orientation rules from Meek (1995).
addBgKnowledge(gInput, x = c(), y = c(), verbose = FALSE, checkInput = TRUE)
gInput |
|
x, y |
node labels of |
verbose |
If TRUE, detailed output is provided. |
checkInput |
If TRUE, the input adjacency matrix is carefully
checked to see if it is a valid graph using function |
If the input is a graphNEL object, it will be converted into an adjacency matrix of type amat.cpdag.
If x and y are given and if amat[y,x] != 0, this function adds orientation x -> y to the adjacency matrix amat and completes the orientation rules from Meek (1995).
If x and y are not specified (or empty vectors) this function simply completes the orientation rules from Meek (1995). If x and y are vectors of length k, k>1, this function tries to add x[i] -> y[i] to the adjacency matrix amat and complete the orientation rules from Meek (1995) for every i \in \{1, \ldots, k\} (see Algorithm 1 in Perkovic et. al, 2017).
An adjacency matrix of type amat.cpdag of the maximally oriented pdag with added background knowledge x -> y or NULL, if the backgound knowledge is not consistent with any DAG represented by the PDAG with the adjacency matrix amat.
Emilija Perkovic and Markus Kalisch
C. Meek (1995). Causal inference and causal explanation with background knowledge, In Proceedings of UAI 1995, 403-410.
E. Perkovic, M. Kalisch and M.H. Maathuis (2017). Interpreting and using CPDAGs with background knowledge. In Proceedings of UAI 2017.
## a -- b -- c
amat <- matrix(c(0,1,0, 1,0,1, 0,1,0), 3,3)
colnames(amat) <- rownames(amat) <- letters[1:3]
## plot(as(t(amat), "graphNEL"))
addBgKnowledge(gInput = amat) ## amat is a valid CPDAG
## b -> c is directed; a -- b is not directed by applying
## Meek's orientation rules
bg1 <- addBgKnowledge(gInput = amat, x = "b", y = "c")
## plot(as(t(bg1), "graphNEL"))
## b -> c and b -> a are directed
bg2 <- addBgKnowledge(gInput = amat, x = c("b","b"), y = c("c","a"))
## plot(as(t(bg2), "graphNEL"))
## c -> b is directed; as a consequence of Meek's orientation rules,
## b -> a is directed as well
bg3 <- addBgKnowledge(gInput = amat, x = "c", y = "b")
## plot(as(t(bg3), "graphNEL"))
amat2 <- matrix(c(0,1,0, 1,0,1, 0,1,0), 3,3)
colnames(amat2) <- rownames(amat2) <- letters[1:3]
## new collider is inconsistent with original CPDAG; thus, NULL is returned
addBgKnowledge(gInput = amat2, x = c("c", "a"), y = c("b", "b"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.