java.lang.Object
edu.cmu.tetrad.search.work_in_progress.FasFdr
All Implemented Interfaces:
IFas, IGraphSearch

public class FasFdr extends Object implements IFas
Implements the "fast adjacency search" used in several causal algorithm in this package. In the fast adjacency search, at a given stage of the search, an edge X*-*Y is removed from the graph if X _||_ Y | S, where S is a subset of size d either of adj(X) or of adj(Y), where d is the depth of the search. The fast adjacency search performs this procedure for each pair of adjacent edges in the graph and for each depth d = 0, 1, 2, ..., d1, where d1 is either the maximum depth or else the first such depth at which no edges can be removed. The interpretation of this adjacency search is different for different algorithm, depending on the assumptions of the algorithm. A mapping from {x, y} to S({x, y}) is returned for edges x *-* y that have been removed.

This variant does each depth twice, gathering up the p values in the first round, using FDR to estimate a cutoff for acceptance, and rerunning using the specified cutoff.

Author:
josephramsey.
  • Constructor Details

    • FasFdr

      public FasFdr(IndependenceTest test, int numIndependenceTests)
      Constructs a new FastAdjacencySearch.
      Parameters:
      test - The independence test to use.
      numIndependenceTests - The number of independence tests total done.
  • Method Details

    • search

      public Graph search()
      Discovers all adjacencies in data. The procedure is to remove edges in the graph which connect pairs of variables which are independent conditional on some other set of variables in the graph (the "sepset"). These are removed in tiers. First, edges which are independent conditional on zero other variables are removed, then edges which are independent conditional on one other variable are removed, then two, then three, and so on, until no more edges can be removed from the graph. The edges which remain in the graph after this procedure are the adjacencies in the data.
      Specified by:
      search in interface IGraphSearch
      Returns:
      a SepSet, which indicates which variables are independent conditional on which other variables
    • getNumIndependenceTests

      public int getNumIndependenceTests()
      Returns the nubmer of independence tests done in the course of the search.
      Specified by:
      getNumIndependenceTests in interface IFas
      Returns:
      This number.
    • getSepsets

      public SepsetMap getSepsets()
      Returns a map for x _||_ y | z1,...,zn of {x, y} to {z1,...,zn},
      Specified by:
      getSepsets in interface IFas
      Returns:
      This map.
    • setVerbose

      public void setVerbose(boolean verbose)
      Sets whether verbose output will be printed.
      Specified by:
      setVerbose in interface IFas
      Parameters:
      verbose - True, if so.
    • getElapsedTime

      public long getElapsedTime()
      Description copied from interface: IFas
      Returns the elapsed time of the search.
      Specified by:
      getElapsedTime in interface IFas
      Returns:
      This time.
    • getNodes

      public List<Node> getNodes()
      Description copied from interface: IFas
      Returns the nodes searched over.
      Specified by:
      getNodes in interface IFas
      Returns:
      This list.
    • getAmbiguousTriples

      public List<Triple> getAmbiguousTriples(Node node)
      Description copied from interface: IFas
      Returns the list of ambiguous triples found for a given node.
      Specified by:
      getAmbiguousTriples in interface IFas
      Parameters:
      node - The node
      Returns:
      The list.
      See Also:
    • setOut

      public void setOut(PrintStream out)
      Description copied from interface: IFas
      sets the print stream to send text to.
      Specified by:
      setOut in interface IFas
      Parameters:
      out - This print stream.
    • setDepth

      public void setDepth(int depth)
      Sets the depth of the search--i.e., the maximum number of variables conditioned on for any conditional independence test.
      Specified by:
      setDepth in interface IFas
      Parameters:
      depth - This maximum.
    • setKnowledge

      public void setKnowledge(Knowledge knowledge)
      Sets the knowledge to be used in the search.
      Specified by:
      setKnowledge in interface IFas
      Parameters:
      knowledge - This knowledge.