Class RlcdTwoIndicatorStudy

java.lang.Object
edu.cmu.tetrad.search.harness.RlcdTwoIndicatorStudy

public final class RlcdTwoIndicatorStudy extends Object
A watch-the-output study of Rlcd.setResolveTwoIndicatorLatents(boolean): RLCD is run with the step off and on, on the same data, and the output is scored for how it represents the pair X1, X2.

Truths (linear; latents dropped from the data):

  • EDGE: L1 --> X1..X5, X1 --> X2; L2 --> X6..X9; L1 --> L2. RLCD should split off a latent over {X1, X2}; the step should turn it into X1 --> X2.
  • LATENT: L1 --> Lp --> {X1, X2}; L1 --> X3..X5; L2 --> X6..X9; L1 --> L2. The latent over {X1, X2} is real; the step should leave it.
  • PURE: L1 --> X1..X5; L2 --> X6..X9; L1 --> L2. Nothing to find.
Errors: strongly skewed (centered exponential, random sign), mildly skewed (Gamma with shape 4, skewness 1), and Gaussian (a control: the step should change nothing). Coefficients are uniform in 0.5 to 1.5 with random sign; error variances in 0.5 to 1.

Scores for the pair, as shares of runs: X1 --> X2, X2 --> X1, another edge between them, "2-latent" (some latent whose observed children are exactly X1 and X2), and "other" (anything else, e.g. both under one latent with other indicators). The right answers are X1 --> X2 for EDGE, 2-latent for LATENT, and other for PURE. The last column counts how often the step changed the pair at all.

Arguments (all optional): reps (default 50), then sample sizes (default 1000 2000 5000). Each RLCD run on ten variables takes well under a second; the bootstrap in the step adds a little where it applies.

Author:
josephramsey