Skip to content

AssessLite 0.3.0

Choose a tag to compare

@heidihelena heidihelena released this 11 Jul 15:58
· 9 commits to main since this release
4daea6b

Reaches into genuinely dependent data (spatial, networked) and completes the identification story (latent-node non-identifiability, positivity), with a correctness fix that makes every holdout verdict honest. Native in R and Python against one shared schema.

New attacks

  • confounding_scenarios — a deterministic bias-analysis array (Lin-Psaty-Kronmal; VanderWeele-Arah): the estimator-failure map complementing the E-value, targetable at a declared decision threshold, not just the null.
  • graph_check / adjustment_check — declare a causal DAG (declare_graph) and test its implied conditional independencies against the data, and whether your adjusted set satisfies the backdoor criterion. Mark unmeasured confounders latent= and it reports non-identifiability. Self-contained d-separation, no dagitty.
  • positivity_check — propensity-overlap trimming: does the finding lean on units with near-deterministic exposure?
  • spatial_holdout — leave-one-spatial-block-out over a coordinate grid (coords=).
  • interference_check — does the outcome depend on neighbours' exposure? (unit_id=, edges=); attacks SUTVA.
  • assumption_lattice() — the pooling commitments as a Hasse diagram.

Correctness

  • The holdout verdict rule now uses a Bonferroni-adjusted shift p-value: the old max-shift rule flagged ~m times too often with m variants (a false-positive cluster_holdout -> abstain in the worked example). Applies to every holdout attack.
  • mark_tested keeps the worst verdict when several attacks share an invariance.

No new dependencies (numpy/pandas and base R). The pure-numpy Cox reproduces R's coxph(ties="breslow") exactly, including stratification.

Acknowledgement

AssessLite's assumptions-first framing is indebted to Weinstein & Blei, "Geometric Causal Models" (arXiv:2607.05153, 2026).

Publishes to PyPI and archives on Zenodo.