agentsclimarketplace

Ecj robustness

Skill brycewang-stanford/Awesome-Journal-Skills/The-Economic-Journal-Skills/skills/ecj-robustness

Use when the main result of a The Economic Journal (EJ) manuscript rests on a single specification and you need to pre-empt the alternative-explanation and fragility objections a demanding referee will raise. Builds the robustness battery and the falsification logic; it does not establish the primary identification (see ecj-identification).From its SKILL.md

Install
npx -y skills add brycewang-stanford/Awesome-Journal-Skills --skill ecj-robustness

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

SKILL.md

5.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Robustness & Alternative Explanations (ecj-robustness)

When to trigger

  • The headline result is one regression with one set of choices
  • You have not ruled out the obvious competing economic explanations
  • A structural result has not been shown to survive perturbing key assumptions
  • You suspect a referee will say "this is fragile" or "this is mechanism A, not your mechanism B"

The EJ logic of robustness

At EJ, robustness is not a ritual table of "still significant." It is an argument that the economic interpretation survives, and that rival mechanisms are ruled out — and because the interpretation is what makes the result broadly interesting, fragility there is fatal. A demanding general-interest referee thinks adversarially: which alternative economic story produces the same coefficient, and how do you exclude it? Over-reliance on a single specification is an explicit anti-pattern. And because acceptance triggers the EJ Data Editor rerunning your code against the Zenodo deposit (RES policy, DCAS-endorsed; see ecj-replication-package), every robustness number must come from code that actually executes and reproduces — fragility you papered over will surface in verification. Distinguish three jobs:

  1. Specification robustness — the number is not an artifact of arbitrary choices.
  2. Mechanism discrimination — your channel, not a competing one, drives it.
  3. External / structural validity — the result generalizes (it must, for EJ's broad-interest bar) / the model's conclusions are not knife-edge.

For a short paper (AER:Insights-style), keep the headline robustness in the tight exhibit budget and push the rest to an online appendix — but the leading rival mechanism must still be addressed.

What to run

Specification robustness

  • Vary controls (parsimonious → saturated); show coefficient stability and use Oster (2019) δ / bounds for selection on unobservables.
  • Alternative functional forms, sample windows, and exclusion of influential subsamples.
  • Alternative standard-error structures (clustering level, wild bootstrap with few clusters).
  • Inference robustness: randomization inference or permutation tests where design allows.

Mechanism discrimination (the broad-interest part)

  • Name the 2–3 alternative economic mechanisms that could generate the same reduced-form sign.
  • For each, design a test that the alternatives fail and your mechanism passes (heterogeneity only your channel predicts, an auxiliary outcome, a dose-response the rival cannot explain).
  • Triangulate: a second data source, a second identification strategy, or a structural-vs-reduced-form cross-check.

External validity / structural papers

  • Argue (or bound) how far the estimate generalizes — central to EJ's broad-relevance claim.
  • Sensitivity of estimates and counterfactuals to identifying assumptions and to fixed/calibrated parameters.
  • Untargeted-moment fit; over-identification evidence; alternative model specifications that nest or rival the baseline.

Execution bridge (StatsPAI / Stata MCP)

Run the battery, don't just enumerate it. Full map: execution-with-mcp. The Economic Journal is general-interest economics; the DiD/IV/RDD chain serves its broad applied lane.

  • Many outcomes / specifications: romano_wolf (step-down FWER) or benjamini_hochberg.
  • OVB sensitivity: oster_delta / sensemakr.
  • Inference: wild_cluster_bootstrap (few clusters), twoway_cluster / conley.
  • Re-fit off one handle: audit_result(result_id) lists missing checks + the exact suggest_function for each.
  • Exhibits: etable / did_summary_to_latex from the handle — no retyped numbers.

Decisive checks in the body, exhaustive battery in the appendix. JF execution walkthrough.

Checklist

  • Coefficient stability across control sets shown; Oster-style selection bound reported
  • Sample-window / outlier / subsample sensitivity reported
  • Inference robust to clustering choice / few clusters
  • The 2–3 rival economic mechanisms are named and tested against
  • At least one triangulation (second data source, design, or structural cross-check)
  • External validity / generalizability argued or bounded (EJ broad-interest bar)
  • Structural results shown not to be knife-edge in key assumptions
  • Robustness lives in the appendix/online appendix, with main text stating the punchline

Anti-patterns

  • A wall of "still significant" tables that never address why the effect is your mechanism
  • Treating robustness as cosmetic while the headline rival explanation goes untested
  • Reporting only specifications that work; hiding the fragile ones (a referee will ask, and the EJ Data Editor reruns the code)
  • Selection-on-unobservables waved away with "we control for X" and no bound
  • Asserting the result generalizes without any external-validity evidence
  • Burying so many checks in the main text that the economic story is lost (use the online appendix)

Output format

【Headline result】coefficient + interpretation
【Spec robustness】[controls, windows, SEs, Oster δ, ...]
【Rival mechanisms】1... 2... — test that discriminates each
【Triangulation】second source / design / structural cross-check
【External validity】how far it generalizes (or bound)
【Residual fragility】honest statement of what is not bulletproof
【Next】ecj-tables-figures

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. 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.