Class MsepTest

java.lang.Object
edu.cmu.tetrad.search.test.MsepTest
All Implemented Interfaces:
IndependenceTest

public class MsepTest extends Object implements IndependenceTest
Checks independence facts for variables associated with the nodes in a given graph by checking m-separation facts on the underlying nodes. We use the IndependenceTest interface here so that this m-separation test can be used in place of a statistical conditional independence test in algorithms to provide oracle information.
Version:
$Id: $Id
Author:
josephramsey
  • Constructor Details

    • MsepTest

      public MsepTest(Graph graph)
      Constructor.
      Parameters:
      graph - The graph for which m-separation facts should be checked. This may be a DAG, CPDAG, or PAG. In the latter case, m-separation results will be returned (same algorithm).
    • MsepTest

      public MsepTest(IndependenceFacts facts, List<Node> variables)
      Constructor.
      Parameters:
      facts - Independence facts to be used for direct calculations of m-separation.
      variables - The variables for the facts, if different from those that independence facts would return.
      See Also:
    • MsepTest

      public MsepTest(IndependenceFacts facts)
      Constructor.
      Parameters:
      facts - Independence facts to be used for direct calculations of m-separation.
      See Also:
    • MsepTest

      public MsepTest(Graph graph, boolean keepLatents)
      Constructor.
      Parameters:
      graph - The graph for which m-separation facts should be checked. This may be a DAG, CPDAG, or PAG. In the latter case, m-separation results will be returned (same algorithm).
      keepLatents - Whether latent in the graph should be used in conditional independence facts. If the graph is being marginalized, this should be false.
    • MsepTest

      public MsepTest(IndependenceFacts facts, boolean keepLatents)
      Constructor.
      Parameters:
      facts - Independence facts to be used for direct calculations of m-separation.
      keepLatents - Whether latent in the graph should be used in conditional independence facts. If the graph is being marginalized, this should be false.
      See Also:
  • Method Details

    • indTestSubset

      public IndependenceTest indTestSubset(List<Node> vars)
      Conducts an independence test on a subset of variables.
      Specified by:
      indTestSubset in interface IndependenceTest
      Parameters:
      vars - The sublist of variables to test independence on.
      Returns:
      This IndependenceTest object.
      Throws:
      IllegalArgumentException - If the subset is empty or contains variables that are not original variables.
    • checkIndependence

      public IndependenceResult checkIndependence(Node x, Node y, Set<Node> z)
      Checks the independence between two nodes with respect to a set of conditioning nodes.
      Specified by:
      checkIndependence in interface IndependenceTest
      Parameters:
      x - The first node to check independence for.
      y - The second node to check independence for.
      z - The set of conditioning nodes.
      Returns:
      The result of the independence test.
      Throws:
      NullPointerException - if the set of conditioning nodes is null or contains null elements.
      IllegalArgumentException - if x or y is not an observed variable.
      RuntimeException - if an undefined p-value is encountered during the test.
      See Also:
    • isMSeparated

      public boolean isMSeparated(Node x, Node y, Set<Node> z)
      Auxiliary method to calculate msep(x, y | z) directly from nodes instead of from variables.
      Parameters:
      x - a Node object
      y - a Node object
      z - a Set object
      Returns:
      True, if so.
    • getVariables

      public List<Node> getVariables()
      Return the list of TetradNodes over which this independence checker is capable of determinine independence relations-- that is, all the variables in the given graph or the given data set.
      Specified by:
      getVariables in interface IndependenceTest
      Returns:
      This list.
    • determines

      public boolean determines(List<Node> z, Node x1)
      Determines if a node is m-separated from a set of conditioning nodes.
      Parameters:
      z - The set of conditioning nodes.
      x1 - The node to check independence for.
      Returns:
      True if the node is m-separated from the conditioning nodes, false otherwise.
      Throws:
      UnsupportedOperationException - if not implemented.
    • getAlpha

      public double getAlpha()
      Returns an alpha level, 0.5. This is an arbitrary number that will help decide whether a pseudo p-value returned by the test represents a dependence or an independence.
      Specified by:
      getAlpha in interface IndependenceTest
      Returns:
      0.5.
    • setAlpha

      public void setAlpha(double alpha)
      Sets the alpha level for the independence test.
      Specified by:
      setAlpha in interface IndependenceTest
      Parameters:
      alpha - The level of significance for the test.
    • getVariable

      public Node getVariable(String name)
      Returns the Node object with the given name.
      Specified by:
      getVariable in interface IndependenceTest
      Parameters:
      name - the name of the variable to retrieve
      Returns:
      the Node object with the given name if found, null otherwise
    • getGraph

      public Graph getGraph()
      Returns the underlying graph that is being used to calculate d-separation relationships.
      Returns:
      This graph.
    • toString

      public String toString()
      Returns a string representation of this test.
      Specified by:
      toString in interface IndependenceTest
      Overrides:
      toString in class Object
      Returns:
      "M-separation".
    • getData

      public DataSet getData()
      Returns the data set used for the test.
      Specified by:
      getData in interface IndependenceTest
      Returns:
      The data set used for the test.
      See Also:
    • isVerbose

      public boolean isVerbose()
      Returns True just in case verbose output should be printed.
      Specified by:
      isVerbose in interface IndependenceTest
      Returns:
      True, if so.
    • setVerbose

      public void setVerbose(boolean verbose)
      Sets the verbosity level for the program.
      Specified by:
      setVerbose in interface IndependenceTest
      Parameters:
      verbose - True if verbose output should be printed, false otherwise.