Class SvarFci

java.lang.Object
edu.cmu.tetrad.search.SvarFci
All Implemented Interfaces:
IGraphSearch

public final class SvarFci extends Object implements IGraphSearch

Adapts FCI 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.

This class is based off a copy of FCI.java taken from the repository on 2008/12/16, revision 7306. The extension is done by extending doFinalOrientation() with methods for Zhang's rules R5-R10 which implements the augmented search. (By a remark of Zhang's, the rule applications can be staged in this way.)

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

    • SvarFci

      public SvarFci(IndependenceTest independenceTest)
      Constructs a new FCI search for the given independence test and background knowledge.
  • Method Details

    • getDepth

      public int getDepth()
      Returns the depth of search--i.e., the maximum number of conditioning variables for tests.
      Returns:
      This maximum.
    • setDepth

      public void setDepth(int depth)
      Sets the depth of search.
      Parameters:
      depth - This depth
      See Also:
    • search

      public Graph search()
      Runs the search and returns the PAG.
      Specified by:
      search in interface IGraphSearch
      Returns:
      This PAG.
    • search

      public Graph search(IFas fas)
      Runs the search using a particular implementation of FAS.
      Parameters:
      fas - The FAS to use.
      Returns:
      The PAG.
      See Also:
    • getSepsets

      public SepsetMap getSepsets()
      Returns the map from node pairs to sepsets.
      Returns:
      This map.
    • getKnowledge

      public Knowledge getKnowledge()
      Returns the knowledge for the search.
      Returns:
      This knowledge.
    • setKnowledge

      public void setKnowledge(Knowledge knowledge)
      Sets the knowledge for the search.
      Parameters:
      knowledge - This knowledge.
    • isCompleteRuleSetUsed

      public boolean isCompleteRuleSetUsed()
      Returns whether Zhang's complete rule set is to be used.
      Returns:
      true if Zhang's complete rule set should be used, false if only R1-R4 (the rule set of the original FCI) should be used. False by default.
    • setCompleteRuleSetUsed

      public void setCompleteRuleSetUsed(boolean completeRuleSetUsed)
      Sets whether Zhang's complete rule set is to be used.
      Parameters:
      completeRuleSetUsed - set to true if Zhang's complete rule set should be used, false if only R1-R4 (the rule set of the original FCI) should be used. False by default.
    • getMaxPathLength

      public int getMaxPathLength()
      Returns the maximum length of any discriminating path, or -1 of unlimited.
      Returns:
      This length.
    • setMaxPathLength

      public void setMaxPathLength(int maxPathLength)
      Sets the maximum length of any discriminating path, or -1 if unlimited.
      Parameters:
      maxPathLength - This length.
    • isVerbose

      public boolean isVerbose()
      Returns whether verbose output is to be printed.
      Returns:
      True, if so.
    • setVerbose

      public void setVerbose(boolean verbose)
      Sets whether verbose output is to be printed.
      Parameters:
      verbose - True, if so.
    • getIndependenceTest

      public IndependenceTest getIndependenceTest()
      Returns independence test.
      Returns:
      This test.
    • getNameNoLag

      public String getNameNoLag(Object obj)