Class LargeScaleSimulation

java.lang.Object
edu.cmu.tetrad.sem.LargeScaleSimulation

public final class LargeScaleSimulation extends Object
Stores a SEM model, pared down, for purposes of simulating data sets with large numbers of variables and sample sizes.
Version:
$Id: $Id
Author:
josephramsey
  • Constructor Details

    • LargeScaleSimulation

      public LargeScaleSimulation(Graph graph)

      Constructor for LargeScaleSimulation.

      Parameters:
      graph - a Graph object
    • LargeScaleSimulation

      public LargeScaleSimulation(Graph graph, List<Node> nodes, int[] tierIndices)

      Constructor for LargeScaleSimulation.

      Parameters:
      graph - a Graph object
      nodes - a List object
      tierIndices - an array of int objects
  • Method Details

    • getPrefix

      public static String getPrefix(String s)

      getPrefix.

      Parameters:
      s - a String object
      Returns:
      a String object
    • getIndex

      public static int getIndex(String s)

      getIndex.

      Parameters:
      s - a String object
      Returns:
      a int
    • getLag

      public static int getLag(String s)

      getLag.

      Parameters:
      s - a String object
      Returns:
      a int
    • simulateDataRecursive

      public DataSet simulateDataRecursive(int sampleSize)
      This simulates data by picking random values for the exogenous terms and percolating this information down through the SEM, assuming it is acyclic. Works, but will hang for cyclic models, and is very slow for large numbers of variables (probably due to the heavyweight lookups of various values--could be improved). The model must be acyclic, or else this will spin.
      Parameters:
      sampleSize - a int
      Returns:
      a DataSet object
    • simulateDataReducedForm

      public DataSet simulateDataReducedForm(int sampleSize)
      Simulates data using the model X = (I - B)Y^-1 * e. Errors are uncorrelated.
      Parameters:
      sampleSize - The nubmer of samples to draw.
      Returns:
      a DataSet object
    • simulateDataFisher

      public DataSet simulateDataFisher(int sampleSize)
      Simulates data using the model of R. A. Fisher, for a linear model. Shocks are applied every so many steps. A data point is recorded before each shock is administered. If convergence happens before that number of steps has been reached, a data point is recorded and a new shock immediately applied. The model may be cyclic. If cyclic, all eigenvalues for the coefficient matrix must be less than 1, though this is not checked. Uses an interval between shocks of 50 and a convergence threshold of 1e-5. Uncorrelated Gaussian shocks are used.
      Parameters:
      sampleSize - The number of samples to be drawn. Must be a positive integer.
      Returns:
      a DataSet object
    • simulateDataFisher

      public DataSet simulateDataFisher(double[][] shocks, int intervalBetweenShocks, double epsilon)
      Simulates data using the model of R. A. Fisher, for a linear model. Shocks are applied every so many steps. A data point is recorded before each shock is administered. If convergence happens before that number of steps has been reached, a data point is recorded and a new shock immediately applied. The model may be cyclic. If cyclic, all eigenvalues for the coefficient matrix must be less than 1, though this is not checked.
      Parameters:
      shocks - A matrix of shocks. The value at shocks[i][j] is the shock for the i'th time step, for the j'th variables.
      intervalBetweenShocks - External shock is applied every this many steps. Must be positive integer.
      epsilon - The convergence criterion; |xi.t - xi.t-1| < epsilon.fff
      Returns:
      a DataSet object
    • simulateDataFisher

      public DataSet simulateDataFisher(int intervalBetweenShocks, int intervalBetweenRecordings, int sampleSize, double epsilon, boolean saveLatentVars)

      simulateDataFisher.

      Parameters:
      intervalBetweenShocks - a int
      intervalBetweenRecordings - a int
      sampleSize - a int
      epsilon - a double
      saveLatentVars - a boolean
      Returns:
      a DataSet object
    • getGraph

      public Graph getGraph()

      Getter for the field graph.

      Returns:
      a Graph object
    • setCoefRange

      public void setCoefRange(double coefLow, double coefHigh)

      setCoefRange.

      Parameters:
      coefLow - a double
      coefHigh - a double
    • setVarRange

      public void setVarRange(double varLow, double varHigh)

      setVarRange.

      Parameters:
      varLow - a double
      varHigh - a double
    • setMeanRange

      public void setMeanRange(double meanLow, double meanHigh)

      setMeanRange.

      Parameters:
      meanLow - a double
      meanHigh - a double
    • getOut

      public PrintStream getOut()

      Getter for the field out.

      Returns:
      a PrintStream object
    • setOut

      public void setOut(PrintStream out)

      Setter for the field out.

      Parameters:
      out - a PrintStream object
    • isVerbose

      public boolean isVerbose()

      isVerbose.

      Returns:
      a boolean
    • setVerbose

      public void setVerbose(boolean verbose)

      Setter for the field verbose.

      Parameters:
      verbose - a boolean
    • getCoefficientMatrix

      public double[][] getCoefficientMatrix()

      getCoefficientMatrix.

      Returns:
      an array of double objects
    • getVariableNodes

      public List<Node> getVariableNodes()

      Getter for the field variableNodes.

      Returns:
      a List object
    • getNameNoLag

      public String getNameNoLag(Object obj)

      getNameNoLag.

      Parameters:
      obj - a Object object
      Returns:
      a String object
    • getKnowledge

      public Knowledge getKnowledge(Graph graph)

      getKnowledge.

      Parameters:
      graph - a Graph object
      Returns:
      a Knowledge object
    • getUncorrelatedShocks

      public double[][] getUncorrelatedShocks(int sampleSize)

      getUncorrelatedShocks.

      Parameters:
      sampleSize - a int
      Returns:
      an array of double objects
    • getSoCalledPoissonShocks

      public double[][] getSoCalledPoissonShocks(int sampleSize)

      getSoCalledPoissonShocks.

      Parameters:
      sampleSize - a int
      Returns:
      an array of double objects
    • setIncludePositiveCoefs

      public void setIncludePositiveCoefs(boolean includePositiveCoefs)

      Setter for the field includePositiveCoefs.

      Parameters:
      includePositiveCoefs - a boolean
    • setIncludeNegativeCoefs

      public void setIncludeNegativeCoefs(boolean includeNegativeCoefs)

      Setter for the field includeNegativeCoefs.

      Parameters:
      includeNegativeCoefs - a boolean
    • setErrorsNormal

      public void setErrorsNormal(boolean errorsNormal)

      Setter for the field errorsNormal.

      Parameters:
      errorsNormal - a boolean
    • getSelfLoopCoef

      public double getSelfLoopCoef()

      Getter for the field selfLoopCoef.

      Returns:
      a double
    • setSelfLoopCoef

      public void setSelfLoopCoef(double selfLoopCoef)

      Setter for the field selfLoopCoef.

      Parameters:
      selfLoopCoef - a double