Class Icd

java.lang.Object
edu.cmu.tetrad.algcomparison.algorithm.AbstractBootstrapAlgorithm
edu.cmu.tetrad.algcomparison.algorithm.oracle.pag.Icd
All Implemented Interfaces:
Algorithm, LatentStructureAlgorithm, ReturnsBootstrapGraphs, TakesCovarianceMatrix, AcceptsKnowledge, HasParameters, TakesIndependenceWrapper, TetradSerializable, Serializable

The Iterative Causal Discovery (ICD) algorithm.

ICD is an anytime algorithm that learns a Partial Ancestral Graph (PAG) iteratively, increasing the conditioning-set size r by 1 each round. At each round it produces an r-representing PAG, so the caller may interrupt the search early and still obtain a meaningful (if less refined) result.

Reference: Rohekar et al., "Iterative Causal Discovery in the Possible Presence of Latent Confounders and Selection Bias", NeurIPS 2021.

Author:
josephramsey (wrapper)
See Also:
  • Constructor Details

    • Icd

      public Icd()
      No-arg constructor required by the framework.
    • Icd

      public Icd(IndependenceWrapper test)
      Constructor.
      Parameters:
      test - the independence wrapper to use.
  • Method Details

    • runSearch

      public Graph runSearch(DataModel dataModel, Parameters parameters) throws InterruptedException
      Runs the ICD search and returns the resulting PAG.
      Parameters:
      dataModel - the data model containing the dataset.
      parameters - the parameters for the search algorithm.
      Returns:
      the resulting PAG.
      Throws:
      InterruptedException - if the search thread is interrupted.
    • getComparisonGraph

      public Graph getComparisonGraph(Graph graph)
      Returns the comparison graph based on the true directed graph.
      Specified by:
      getComparisonGraph in interface Algorithm
      Parameters:
      graph - the true directed graph.
      Returns:
      the PAG corresponding to the true graph.
    • getDescription

      public String getDescription()
      Returns a short description of this algorithm.
      Specified by:
      getDescription in interface Algorithm
      Returns:
      the description string.
    • getDataType

      public DataType getDataType()
      Returns the data type that this algorithm requires.
      Specified by:
      getDataType in interface Algorithm
      Returns:
      the data type.
    • getParameters

      public List<String> getParameters()
      Returns the list of parameter keys used by this algorithm.
      Specified by:
      getParameters in interface HasParameters
      Returns:
      the parameter list.
    • getKnowledge

      public Knowledge getKnowledge()
      Returns the knowledge object.
      Specified by:
      getKnowledge in interface AcceptsKnowledge
      Returns:
      the knowledge.
    • setKnowledge

      public void setKnowledge(Knowledge knowledge)
      Sets the knowledge object.
      Specified by:
      setKnowledge in interface AcceptsKnowledge
      Parameters:
      knowledge - the knowledge to set.
    • getIndependenceWrapper

      public IndependenceWrapper getIndependenceWrapper()
      Returns the independence wrapper.
      Specified by:
      getIndependenceWrapper in interface TakesIndependenceWrapper
      Returns:
      the independence wrapper.
    • setIndependenceWrapper

      public void setIndependenceWrapper(IndependenceWrapper test)
      Sets the independence wrapper.
      Specified by:
      setIndependenceWrapper in interface TakesIndependenceWrapper
      Parameters:
      test - the independence wrapper to set.