agentsclimarketplace

Alterlab causal inference

Skill AlterLab-IEU/AlterLab-Academic-Skills/skills/social-science-workflow/alterlab-causal-inference

239 evaluated academic Claude/agent skills across 17 research domains (bioinformatics, data science, clinical, social-science methods, Turkish academia & more). Executable eval per skill, deterministic citation verifier, research→write→review→publish pipeline, and a skill-finder front door. Claude Code, Cursor, Codex, Gemini CLI & Copilot.

Install
npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-causal-inference

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Estimates causal effects from observational and quasi-experimental data — difference-in-differences, instrumental variables, regression discontinuity, panel fixed effects, propensity-score / doubly-robust methods, and heterogeneous treatment effects (CATE) — using the verified Python stack: statsmodels and linearmodels (PanelOLS, IV2SLS), pyfixest (feols, event studies, Sun-Abraham, did2s), DoWhy (identify -> estimate -> refute), EconML (LinearDML, CausalForestDML, DRLearner), and rdrobust for RD. It names the identifying assumption before estimating and runs a refutation/robustness check after. Use when the request mentions difference-in-differences, instrumental variables, regression discontinuity, fixed effects / panel causal estimation, propensity scores, or treatment-effect estimation from non-randomized data. For choosing the design first prefer alterlab-ssci-design-gate; for plain regression or descriptive stats prefer alterlab-statistical-analysis. Part of the AlterLab Academic Skills suite.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.5 KB, as published. Nobody here has run it

Causal Inference — Name the Assumption, Estimate, Then Try to Break It

Skill type: ANALYSIS MODULE. Estimates a causal effect from data that was not fully randomized. The discipline is not the estimator — it is the identifying assumption the estimator relies on, stated before the fit and stress-tested after. If the design is not yet fixed, that belongs upstream in alterlab-ssci-design-gate.

Core Mission

EVERY CAUSAL ESTIMATE INHERITS AN ASSUMPTION. STATE IT, ESTIMATE UNDER IT, THEN REFUTE IT.

When to Use This Skill

  • "Estimate the effect with difference-in-differences / an event study."
  • "I have an instrument for the treatment — run instrumental variables / 2SLS."
  • "There's a cutoff score — run a regression discontinuity."
  • "Panel data with unit and time fixed effects — estimate the treatment effect."
  • "Give me the heterogeneous treatment effect / CATE across subgroups."

Does NOT Trigger

The request is really about…Route toWhy not this skill
Choosing the design & its identifying assumptionalterlab-ssci-design-gateDesign routing precedes estimation.
Plain OLS / descriptive or inferential stats (no causal identification)alterlab-statistical-analysis / alterlab-statsmodelsNo treatment-effect identification problem.
Latent-variable / SEM / factor structurealterlab-sem-psychometricsMeasurement model, not treatment effect.
Auditing whether the final claim is licensedalterlab-ssci-inference-gateClaim audit, downstream.

Estimator map (verified libraries, pinned)

DesignIdentifying assumptionEstimator (verified API)
DiD / event studyparallel trendspyfixest (v0.60): `pf.feols("y ~ i(time, treat, ref)
Panel fixed effectsno time-varying confounderslinearmodels (v7): PanelOLS.from_formula("y ~ 1 + x + EntityEffects + TimeEffects", panel).fit(cov_type='clustered', cluster_entity=True).
Instrumental variablesexclusion restriction + relevancelinearmodels IV2SLS.from_formula("y ~ 1 + exog + [treat ~ z1 + z2]", df).fit(); check first-stage F (weak instrument).
Regression discontinuitycontinuity at the cutoff (no sorting)rdrobust (v2): rdrobust(y, x, c=cutoff), rdbwselect, rdplot; McCrary/density check for manipulation.
Selection-on-observablesconditional ignorabilityDoWhy (v0.14): CausalModel(df, treatment, outcome, graph).identify_effect()estimate_effect(method_name="backdoor.propensity_score_matching")refute_estimate(..., method_name="random_common_cause").
Heterogeneous effects (CATE)(as above) + overlapEconML (v0.16): LinearDML() / CausalForestDML() .fit(Y, T, X=X, W=W) then .effect(X).

A stdlib router that maps the design to the estimator + its assumption + the verified call: scripts/estimator_router.py. Fuller worked patterns and diagnostics: references/estimators.md.

The mandatory two steps around every estimate

  1. Before: write the identifying assumption in one sentence and how you will defend it (pre-trend plot for DiD, first-stage F and an exclusion argument for IV, density/McCrary test for RDD, overlap/common-support for PSM). No assumption, no causal estimate.
  2. After: run a refutation/robustness check — DoWhy.refute_estimate (random common cause, placebo treatment, data subset), a pre-trend/event-study plot, a bandwidth-sensitivity for RDD, or an E-value / sensitivity analysis for unmeasured confounding. Report it next to the estimate.

Output Template

DESIGN + ASSUMPTION: <e.g. DiD; parallel trends, defended by the pre-2019 event-study plot>
ESTIMATOR:           <library.call(...), pinned version>
ESTIMATE:            <point estimate, 95% CI, clustered SE — never a bare p-value>
DIAGNOSTIC:          <first-stage F / density test / pre-trends / overlap>
REFUTATION:          <placebo / random-common-cause / bandwidth sensitivity result>
CLAIM SCOPE:         causal IFF the assumption + diagnostics hold; else associational

Quality Standards

  • Report effect sizes with confidence intervals and the SE structure (clustered where relevant).
  • Never present a causal estimate without its diagnostic and at least one refutation.
  • Hand the final estimate + assumption to alterlab-ssci-inference-gate for the claim audit.
  • No fabricated flags: every call above is verified against the library's current docs; if a flag is unverified in your installed version, check --help/docs, do not guess.

References

  • references/estimators.md — per-design worked calls, diagnostics, and refutation menu.
  • scripts/estimator_router.py — stdlib design→estimator+assumption router.

Part of the AlterLab Academic Skills suite.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.