Class SvarFges

java.lang.Object
edu.cmu.tetrad.search.SvarFges
All Implemented Interfaces:
IGraphSearch, DagScorer

public final class SvarFges extends Object implements IGraphSearch, DagScorer

Adapts FGES for the time series setting, assuming the data is generated by a SVAR (structural vector autoregression). The main difference is that time order is imposed, and if an edge is removed, it will also remove all homologous edges to preserve the time-repeating structure assumed by SvarFCI. Based on (but not identical to) code by Entner and Hoyer for their 2010 paper. Modified by dmalinsky 4/21/2016.

The references are as follows:

Malinsky, D., & Spirtes, P. (2018, August). Causal structure learning from multivariate time series in settings with unmeasured confounding. In Proceedings of 2018 ACM SIGKDD workshop on causal discovery (pp. 23-47). PMLR.

Entner, D., & Hoyer, P. O. (2010). On causal discovery from time series data using FCI. Probabilistic graphical models, 121-128.

This class is configured to respect knowledge of forbidden and required edges, including knowledge of temporal tiers.

Author:
danielmalinsky
See Also:
  • Constructor Details

    • SvarFges

      public SvarFges(Score score)
      Construct a Score and pass it in here. The totalScore should return a positive value in case of conditional dependence and a negative values in case of conditional independence. See Chickering (2002), locally consistent scoring criterion.
  • Method Details

    • search

      public Graph search()
      Greedy equivalence search: Start from the empty graph, add edges till the model is significant. Then start deleting edges till a minimum is achieved.
      Specified by:
      search in interface IGraphSearch
      Returns:
      the resulting CPDAG.
    • setFaithfulnessAssumed

      public void setFaithfulnessAssumed(boolean faithfulnessAssumed)
      Set to true if it is assumed that all path pairs with one length 1 path do not cancel.
    • getKnowledge

      public Knowledge getKnowledge()
      Returns:
      the background knowledge.
    • setKnowledge

      public void setKnowledge(Knowledge knowledge)
      Sets the background knowledge.
      Parameters:
      knowledge - the knowledge object, specifying forbidden and required edges.
    • getElapsedTime

      public long getElapsedTime()
      Returns the elapsed time of the search.
      Returns:
      This time.
    • setTrueGraph

      public void setTrueGraph(Graph trueGraph)
      If the true graph is set, asterisks will be printed in log output for the true edges.
    • getScore

      public double getScore(Graph dag)
      Returns:
      the totalScore of the given DAG, up to a constant.
    • getnumCPDAGsToStore

      public int getnumCPDAGsToStore()
      Returns:
      the number of patterns to store.
    • setNumCPDAGsToStore

      public void setNumCPDAGsToStore(int numCPDAGsToStore)
      Sets the number of patterns to store. This should be set to zero for fast search.
    • getExternalGraph

      public Graph getExternalGraph()
      Returns:
      the initial graph for the search. The search is initialized to this graph and proceeds from there.
    • setExternalGraph

      public void setExternalGraph(Graph externalGraph)
      Sets the initial graph.
    • setVerbose

      public void setVerbose(boolean verbose)
      Sets whether verbose output should be produced.
    • getOut

      public PrintStream getOut()
      Returns:
      the output stream that output (except for log output) should be sent to.
    • setOut

      public void setOut(PrintStream out)
      Sets the output stream that output (except for log output) should be sent to. By detault System.out.
    • getAdjacencies

      public Graph getAdjacencies()
      Returns:
      the set of preset adjacencies for the algorithm; edges not in this adjacency graph will not be added.
    • setAdjacencies

      public void setAdjacencies(Graph adjacencies)
      Sets the set of preset adjacencies for the algorithm; edges not in this adjacencies graph will not be added.
    • getPenaltyDiscount

      public double getPenaltyDiscount()
      Deprecated.
      Use the getters on the individual scores instead.
      For BIC totalScore, a multiplier on the penalty term. For continuous searches.
    • setPenaltyDiscount

      public void setPenaltyDiscount(double penaltyDiscount)
      Deprecated.
      Use the setters on the individual scores instead.
      For BIC totalScore, a multiplier on the penalty term. For continuous searches.
    • setSamplePrior

      public void setSamplePrior(double samplePrior)
      Deprecated.
      Use the setters on the individual scores instead.
    • setStructurePrior

      public void setStructurePrior(double expectedNumParents)
      Deprecated.
      Use the setters on the individual scores instead.
    • getMaxIndegree

      public int getMaxIndegree()
      The maximum of parents any nodes can have in the output pattern.
      Returns:
      -1 for unlimited.
    • setMaxIndegree

      public void setMaxIndegree(int maxIndegree)
      The maximum of parents any nodes can have in the output pattern.
      Parameters:
      maxIndegree - -1 for unlimited.
    • getMinChunk

      public int getMinChunk(int n)
    • scoreDag

      public double scoreDag(Graph dag)
      Scores the given DAG, up to a constant.
      Specified by:
      scoreDag in interface DagScorer
    • getNameNoLag

      public String getNameNoLag(Object obj)
    • addSimilarEdges

      public void addSimilarEdges(Node x, Node y)
    • removeSimilarEdges

      public void removeSimilarEdges(Node x, Node y)