Class Pcd

java.lang.Object
edu.cmu.tetrad.search.Pcd
All Implemented Interfaces:
GraphSearch

public class Pcd extends Object implements GraphSearch
Implements the PC ("Peter/Clark") algorithm, as specified in Chapter 6 of Spirtes, Glymour, and Scheines, "Causation, Prediction, and Search," 2nd edition, with a modified rule set in step D due to Chris Meek. For the modified rule set, see Chris Meek (1995), "Causal inference and causal explanation with background knowledge."
Author:
Joseph Ramsey.
  • Constructor Details

    • Pcd

      public Pcd(IndependenceTest independenceTest)
      Constructs a new PC search using the given independence test as oracle.
      Parameters:
      independenceTest - The oracle for conditional independence facts. This does not make a copy of the independence test, for fear of duplicating the data set!
  • Method Details

    • isAggressivelyPreventCycles

      public boolean isAggressivelyPreventCycles()
      Returns:
      true iff edges will not be added if they would create cycles.
    • setAggressivelyPreventCycles

      public void setAggressivelyPreventCycles(boolean aggressivelyPreventCycles)
      Parameters:
      aggressivelyPreventCycles - Set to true just in case edges will not be addeds if they would create cycles.
    • getIndependenceTest

      public IndependenceTest getIndependenceTest()
      Returns:
      the independence test being used in the search.
    • getKnowledge

      public Knowledge getKnowledge()
      Returns:
      the knowledge specification used in the search. Non-null.
    • setKnowledge

      public void setKnowledge(Knowledge knowledge)
      Sets the knowledge specification to be used in the search. May not be null.
    • getSepsets

      public SepsetMap getSepsets()
      Returns:
      the sepset map from the most recent search. Non-null after the first call to search().
    • getDepth

      public int getDepth()
      Returns:
      the current depth of search--that is, the maximum number of conditioning nodes for any conditional independence checked.
    • setDepth

      public void setDepth(int depth)
      Sets the depth of the search--that is, the maximum number of conditioning nodes for any conditional independence checked.
      Parameters:
      depth - The depth of the search. The default is 1000. A value of -1 may be used to indicate that the depth should be high (1000). A value of Integer.MAX_VALUE may not be used, due to a bug on multi-core machines.
    • search

      public Graph search()
      Runs PC starting with a complete graph over all nodes of the given conditional independence test, using the given independence test and knowledge and returns the resultant graph. The returned graph will be a CPDAG if the independence information is consistent with the hypothesis that there are no latent common causes. It may, however, contain cycles or bidirected edges if this assumption is not born out, either due to the actual presence of latent common causes, or due to statistical errors in conditional independence judgments.
      Specified by:
      search in interface GraphSearch
    • search

      public Graph search(List<Node> nodes)
      Runs PC starting with a commplete graph over the given list of nodes, using the given independence test and knowledge and returns the resultant graph. The returned graph will be a CPDAG if the independence information is consistent with the hypothesis that there are no latent common causes. It may, however, contain cycles or bidirected edges if this assumption is not born out, either due to the actual presence of latent common causes, or due to statistical errors in conditional independence judgments.

      All of the given nodes must be in the domain of the given conditional independence test.

    • search

      public Graph search(IFas fas, List<Node> nodes)
    • getElapsedTime

      public long getElapsedTime()
      Returns:
      the elapsed time of the search, in milliseconds.
    • getUnshieldedColliders

      public Set<Triple> getUnshieldedColliders()
      Returns:
      the set of unshielded colliders in the graph returned by search(). Non-null after search is called.
    • getUnshieldedNoncolliders

      public Set<Triple> getUnshieldedNoncolliders()
      Returns:
      the set of unshielded noncolliders in the graph returned by search(). Non-null after search is called.
    • getAdjacencies

      public Set<Edge> getAdjacencies()
    • getNonadjacencies

      public Set<Edge> getNonadjacencies()
    • getNumIndependenceTests

      public int getNumIndependenceTests()
    • getNodes

      public List<Node> getNodes()
    • isVerbose

      public boolean isVerbose()
    • setVerbose

      public void setVerbose(boolean verbose)
    • isFdr

      public boolean isFdr()
      True iff the algorithm should be run with False Discovery Rate tests.
    • setFdr

      public void setFdr(boolean fdr)