Class DiscriminatingPath

java.lang.Object
edu.cmu.tetrad.search.utils.DiscriminatingPath

public class DiscriminatingPath extends Object
Represents a discriminating path in a graph. The triangles that must be oriented this way (won't be done by another rule) all look like the ABC triangle below, where the dots are a collider path from E to B (excluding E and B but including A) with each node on the collider path a parent of C. The orientation of A *-* B *-* C is not a feature of the discriminating path. Note that if there is not a circle at B, the path no longer needs to be oriented by the rule. Whether the path exists in a given graph and is as yet unoriented can be checked with the existsAndUnorientedIn method.
          B
         *o           * is either an arrowhead or a circle; note B *-> A is not a condition in Zhang's rule
        /  \
       v    v
 E....A --> C
 
This is equivalent to Zhang's rule R4. (Zhang, J. (2008). On the completeness of orientation rules for causal discovery in the presence of latent confounders and selection bias. Artificial Intelligence, 172(16-17), 1873-1896.) A similar rule was originally given in Spirtes et al. (1993). Note that as in Zhang, the discriminating path itself is E...A, B, C. We refer to the part of this path between E to B as the 'collider path.' The collider path is included in any sepset of E and C. Note also that in Zhang's tail-complete version of the rule, the arrow endpoint B *-> A is not a condition of the rule, as in previous code, so we do not check for it.

The idea is that if we know that E is independent of C given all the nodes on the collider path plus perhaps some other nodes in the graph, then there should be a collider at B; otherwise, there should be a noncollider at B. If there should be a collider at B, we orient A *-> B <-> C; otherwise, we orient A *-* B -> C.

Author:
josephramsey
See Also: