Class StroblTestwiseFciStudy

java.lang.Object
edu.cmu.tetrad.study.missingness.StroblTestwiseFciStudy

public final class StroblTestwiseFciStudy extends Object
Replication harness for Strobl, Visweswaran and Spirtes, "Fast Causal Inference with Non-Random Missingness by Test-Wise Deletion" (Int J Data Sci Anal, 2018).

Their claims under test:

  • T1: FCI (and RFCI) with test-wise deletion via their Algorithm 1 beats list-wise deletion under their latent-driven MNAR at every n, with the largest gains at small n;
  • T2: under that MNAR, imputation (hot deck, kNN, regression, PMM, random forests) performs much worse than either deletion flavor;
  • T3: under MAR, correctly specified imputation modestly beats deletion, and deletion remains mid-pack;
  • T4 (argued, not simulated by them): when the non-ancestral missingness assumption fails -- a missingness mechanism causally affecting another -- test-wise deletion loses its justification. The VIOLATION mechanism below realizes this as hierarchical nonresponse (one target set's missingness indicator causes the other's, the survey skip-pattern case).

Design follows their Section 9.2: random Gaussian DAGs with average degree 2 over TOTAL_VARS variables, coefficients Uniform(+/-[0.1, 1]) (Tetrad's SemIm defaults are close), two latent common causes, and for MNAR two latent driver variables L-tilde, each deleting the bottom r-percentile (r ~ U[0.1, 0.5]) of 3-6 observed target variables by its own value; latent columns are then dropped. MAR uses observed drivers instead. Alpha 0.01 with Fisher-Z, as in the paper.

Metric deviation, on purpose: their MNAR oracle is the SELECTION-BIASED PAG (FCI with the list-wise selection set S_l), which Tetrad does not construct cheaply; estimates here are scored against the unselected true PAG (dagToPag of the latent-marked DAG). That choice tilts the comparison AGAINST the deletion arms (which converge to the selected PAG) and toward imputation (which targets the unselected law), so a test-wise win under this metric strengthens rather than weakens their conclusion; imputation should look relatively better here than in their tables.

Arms: ORACLE FCI on complete data; FCI TW-ALG1 (their Algorithm 1: test-wise test, with independence confirmed list-wise); FCI TW-HEURISTIC (test-wise only, their line-1-only variant); FCI LISTWISE; FCI MEAN-IMPUTE; FCI PMM m=1 (their best-performing imputation class); FCI MICE m=5 POOLED-Z (our pooled test, which their paper predates); FCI EM-COV. Set USE_RFCI to run the same grid with RFCI.

Repetitions run concurrently (RandomUtil is thread-local; each rep seeds its own thread), the MICE chains run concurrently, and each arm is abandoned after ARM_TIMEOUT_SECONDS. Run from IntelliJ; nothing outside this file is touched.

Author:
josephramsey
  • Method Details

    • main

      public static void main(String[] args) throws Exception
      Entry point: one table per (mechanism, n), scored against the unselected true PAG.
      Parameters:
      args - Unused.
      Throws:
      Exception - If a condition fails irrecoverably.