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.
Author:
josephramsey
  • Constructor Details

    • LargeScaleSimulation

      public LargeScaleSimulation(Graph graph)
    • LargeScaleSimulation

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

    • getPrefix

      public static String getPrefix(String s)
    • getIndex

      public static int getIndex(String s)
    • getLag

      public static int getLag(String s)
    • 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.
    • 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.
    • 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.
    • 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
    • simulateDataFisher

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

      public Graph getGraph()
    • setCoefRange

      public void setCoefRange(double coefLow, double coefHigh)
    • setVarRange

      public void setVarRange(double varLow, double varHigh)
    • setMeanRange

      public void setMeanRange(double meanLow, double meanHigh)
    • getOut

      public PrintStream getOut()
    • setOut

      public void setOut(PrintStream out)
    • isVerbose

      public boolean isVerbose()
    • setVerbose

      public void setVerbose(boolean verbose)
    • getCoefficientMatrix

      public double[][] getCoefficientMatrix()
    • getVariableNodes

      public List<Node> getVariableNodes()
    • getNameNoLag

      public String getNameNoLag(Object obj)
    • getKnowledge

      public Knowledge getKnowledge(Graph graph)
    • getUncorrelatedShocks

      public double[][] getUncorrelatedShocks(int sampleSize)
    • getSoCalledPoissonShocks

      public double[][] getSoCalledPoissonShocks(int sampleSize)
    • setIncludePositiveCoefs

      public void setIncludePositiveCoefs(boolean includePositiveCoefs)
    • setIncludeNegativeCoefs

      public void setIncludeNegativeCoefs(boolean includeNegativeCoefs)
    • setErrorsNormal

      public void setErrorsNormal(boolean errorsNormal)
    • getSelfLoopCoef

      public double getSelfLoopCoef()
    • setSelfLoopCoef

      public void setSelfLoopCoef(double selfLoopCoef)