Class BossCcd

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

BOSS-CCD (Cyclic Causal Discovery with a BOSS adjacency superstructure).

Runs BOSS to obtain a CPDAG, then runs Richardson's CCD with the BOSS skeleton as an adjacency superstructure. Both phases require only second-order statistics, so this works from a covariance/correlation matrix alone, unlike non-Gaussian cyclic methods (FASK, Two-Step).

Version:
$Id: $Id
Author:
josephramsey
See Also:
  • Constructor Details

    • BossCcd

      public BossCcd()
      Constructs a new BOSS-CCD algorithm.
    • BossCcd

      public BossCcd(IndependenceWrapper test, ScoreWrapper score)
      Constructs a new BOSS-CCD algorithm with the given independence test and score.
      Parameters:
      test - the independence test (CCD phase)
      score - the score (BOSS phase)
  • Method Details

    • runSearch

      public Graph runSearch(DataModel dataModel, Parameters parameters) throws InterruptedException
      Runs the BOSS-CCD search algorithm on the given data set using the specified parameters.
      Parameters:
      dataModel - the data set to search on
      parameters - the parameters for the search algorithm
      Returns:
      the resulting graph from the search
      Throws:
      InterruptedException
    • getComparisonGraph

      public Graph getComparisonGraph(Graph graph)
      Retrieves the comparison graph for the given true directed graph: the cyclic PAG that BOSS-CCD is meant to recover, not the true graph itself. A cycle makes pairs inseparable that are not adjacent in the true graph (Richardson's "virtual edges"), so those edges belong in the comparison graph and grading against the true graph understates BOSS-CCD badly - a perfect run scores about 0.39 endpoint-exact on random 8-node, 10-edge cyclic graphs.
      Specified by:
      getComparisonGraph in interface Algorithm
      Parameters:
      graph - The true directed graph, possibly cyclic.
      Returns:
      The cyclic PAG of the true graph's d-separation equivalence class.
      See Also:
    • getDescription

      public String getDescription()
      Returns a short, one-line description of this algorithm. This description will be printed in the report.
      Specified by:
      getDescription in interface Algorithm
      Returns:
      The description of this algorithm.
    • getDataType

      public DataType getDataType()
      Retrieves the data type that the search requires.
      Specified by:
      getDataType in interface Algorithm
      Returns:
      The data type required by the search.
    • getParameters

      public List<String> getParameters()
      Retrieves the parameters for the search algorithm.
      Specified by:
      getParameters in interface HasParameters
      Returns:
      A list of String names for parameters.
    • getIndependenceWrapper

      public IndependenceWrapper getIndependenceWrapper()
      Returns the IndependenceWrapper object associated with this instance.
      Specified by:
      getIndependenceWrapper in interface TakesIndependenceWrapper
      Returns:
      the IndependenceWrapper object
    • setIndependenceWrapper

      public void setIndependenceWrapper(IndependenceWrapper independenceWrapper)
      Updates the independence wrapper for this algorithm.
      Specified by:
      setIndependenceWrapper in interface TakesIndependenceWrapper
      Parameters:
      independenceWrapper - the independence wrapper to set
    • getScoreWrapper

      public ScoreWrapper getScoreWrapper()
      Returns the ScoreWrapper object associated with this instance.
      Specified by:
      getScoreWrapper in interface TakesScoreWrapper
      Returns:
      the ScoreWrapper object
    • setScoreWrapper

      public void setScoreWrapper(ScoreWrapper score)
      Updates the score wrapper for this algorithm.
      Specified by:
      setScoreWrapper in interface TakesScoreWrapper
      Parameters:
      score - the score wrapper to set
    • getKnowledge

      public Knowledge getKnowledge()
      Retrieves the knowledge object associated with this instance.
      Specified by:
      getKnowledge in interface AcceptsKnowledge
      Returns:
      the Knowledge object associated with this instance
    • setKnowledge

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