SuperAPI AI Directory

alterlab-ssci-design-gate

Design & creation

View repository

Updated 10-15 19:56

About this skill

Design Gate — Pin the Identifying Assumption Before Anything Else

Skill type: DISCIPLINE-ENFORCING. This is the entry point of the social-science methods spine, not an analysis engine. It routes a study to the right design family and forces the one decision every downstream gate depends on: what identifying assumption licenses the causal claim? It does not run models — for execution it hands off to the analysis skills.

The Core Rule

A CAUSAL CLAIM IS ONLY AS GOOD AS ITS IDENTIFYING ASSUMPTION — NAME IT FIRST.

Design is chosen by the question and the data-generating process — who was selected, who was assigned, what varies and when — not by which method is fashionable or convenient. A quasi-experiment is an observational design that earns a causal interpretation only by committing, up front, to an assumption that makes the effect identified. State that assumption before touching an estimator; if you cannot defend one, the claim is associational, not causal.

When to Use This Skill

Trigger the design gate whenever a design is being chosen, defended, or implied by a claim:

  • "What research design should I use for this question?"
  • "I have observational survey data and want to claim X improves Y." (← pin the assumption)
  • "Should this be an experiment or a quasi-experiment?"
  • "Can a difference-in-differences / IV / regression-discontinuity design answer this?"
  • "Is my before/after comparison enough to claim the program worked?"

Does NOT Trigger

Route these adjacent requests to the real sibling skill. This gate picks the design and pins the assumption; it does not execute, choose the test, or write.

The request is really about… Route to Why not this skill
Running the analysis / a specific model once the design is fixed alterlab-statistical-analysis / alterlab-statsmodels Execution, not design choice.
Which statistical test to use (t-test vs Mann-Whitney, etc.) alterlab-test-selection-guard Test choice is downstream of design.
Deep qualitative design (grounded theory, phenomenology, coding) alterlab-qualitative-methods This gate only routes to qual; that skill does it.
Integrating qual + quant strands, joint displays alterlab-mixed-methods Mixed-methods design mechanics.
Grading evidence quality, confounders, bias upstream alterlab-scientific-thinking Study-validity judgment, not design routing.
Designing the instrument/questionnaire itself alterlab-survey-design Measurement instrument, not design family.

The Design Decision Tree

Walk top-down. Each branch is decided by the data-generating process, not the desired claim.

1. Is the CAUSE randomly ASSIGNED by the researcher?
   ├─ YES → TRUE EXPERIMENT (RCT / lab / field experiment)
   │         identifying assumption: randomization → ignorability (assignment ⊥ potential outcomes)
   └─ NO  → 2. Is there exogenous variation you can exploit?
            ├─ a policy/treatment turned on for some units at some time → DIFFERENCE-IN-DIFFERENCES
            │     assumption: PARALLEL TRENDS (treated & control would have moved together absent treatment)
            ├─ an "as-good-as-random" nudge affecting treatment but not the outcome directly → INSTRUMENTAL VARIABLES
            │     assumption: EXCLUSION RESTRICTION + relevance (instrument affects Y only through the treatment)
            ├─ treatment assigned by a threshold on a running variable → REGRESSION DISCONTINUITY
            │     assumption: CONTINUITY of potential outcomes at the cutoff (no manipulation of the score)
            ├─ one unit observed before/after an intervention over many periods → INTERRUPTED TIME SERIES
            │     assumption: the pre-trend + modeled counterfactual would have continued absent the intervention
            ├─ repeated observations, unit/time confounders → FIXED EFFECTS / panel
            │     assumption: no time-varying confounders (selection-on-observables within unit)
            └─ none of the above, adjust for measured confounders only → OBSERVATIONAL / SELECTION-ON-OBSERVABLES
                  assumption: CONDITIONAL IGNORABILITY (no unmeasured confounding) — the weakest, name it as such

3. Is the aim interpretive / theory-building rather than effect estimation?
   ├─ YES → QUALITATIVE design (route to alterlab-qualitative-methods)
   │         "power" is SATURATION / information power, not a sample-size formula (see alterlab-ssci-sampling-gate)
   └─ combine strands → MIXED METHODS (route to alterlab-mixed-methods)

Full branch logic, the five quasi-experimental designs and their threats, and worked routing examples: references/design_decision_tree.md. A stdlib router that prints the design family and its required assumption from your answers: scripts/design_router.py.

"You Buy Credibility by Burning Information"

Every step from a true experiment toward pure observation trades statistical control for an assumption you must defend. Name the trade honestly:

Excuse Reality
"It's basically an experiment — people just chose their own group." Self-selection is exactly what randomization removes. This is observational; name the confounding you are assuming away.
"I have before-and-after data, so it's causal." A single pre/post has no counterfactual. You need parallel trends (DiD) or a modeled counterfactual (ITS) — state which.
"I controlled for everything relevant." You controlled for what you measured. Conditional ignorability assumes no unmeasured confounders — the strongest, least testable assumption.
"Instrumental variables fix endogeneity." Only if the exclusion restriction holds. An instrument that affects the outcome through any other path is invalid — defend exclusion, don't assert it.
"Regression discontinuity is quasi-random at the cutoff." Only if units cannot manipulate the running variable and outcomes are continuous there. Check for sorting/bunching.

The Design Passport (hand-off)

On exit, emit or update the pipeline's YAML Design Passport with: research_question, design_type, identifying_assumption (the named assumption + why it is defensible), and claim_type (causal | associational | descriptive). Downstream, alterlab-ssci-measurement-gate and alterlab-ssci-sampling-gate append to it, and alterlab-ssci-inference-gate audits final claims against design_type + identifying_assumption.

Self-Check Before Advancing

  • Is the design chosen by the data-generating process, not the desired conclusion?
  • Is exactly one identifying assumption named, with a sentence on why it is defensible here?
  • If observational, is the claim explicitly downgraded to associational unless a QED assumption holds?
  • For qualitative aims, is "how many" deferred to saturation logic (not a power formula)?
  • Is the Design Passport populated for the next gate?

References

  • references/design_decision_tree.md — full branch logic, the five QEDs, threats, examples.
  • scripts/design_router.py — stdlib router printing the design family + required assumption.

Part of the AlterLab Academic Skills suite.