# M1-LONG selection diagnostics (origin ≤ 2019)

**Status:** RESEARCH ONLY · `score_authorized(M1)=false` · L1 untouched  
**Response to:** Astra/ChatGPT `54396241` / `7b24493b` (CONDITIONAL_ACCEPT_FEASIBILITY)

## Cohort

| Group | N |
|------|---|
| Eligible origins (fresh, valid PEXP, 201810–201912) | 5793 |
| Retained as usable 11–13m pairs | 1424 |
| Dropped (eligible but not usable pair) | 4369 |
| Retention rate | 0.246 |
| Usable pairs file (v2) | 1424 |

## Unavailable in this extract

Income, employment, and party ID are **not** in `sca_micro_2015_2023_pilot.csv`. Re-extract from SDA required. No proxies invented.

## Continuous balance (retained − dropped)

| Covariate | Retained mean | Dropped mean | Std diff | Retained N | Dropped N |
|-----------|---------------|--------------|----------|------------|-----------|
| AGE | 55.387 | 48.124 | 0.439 | 1407 | 4320 |
| YYYYMM | 201892.9 | 201885.2 | 0.211 | 1424 | 4369 |

## Categorical (see JSON for full tables)

Key std diffs (retained − dropped prop, bernoulli pooled): SEX/EDUC/REGION/PAGO/PEXP levels in `m1long_v2_selection_diagnostics.json`.

## Retention logit (diagnostic only)

- Converged: `True` (sklearn L2 logistic, n_iter=34)
- Base retention rate: `0.246`
- McFadden pseudo-R²: `0.0557`
- **Caveat (Astra/Codex):** observed-covariate models cannot establish ignorable attrition for unobserved factors. Not production weights.

## Michigan longitudinal weights

Cross-section `WT`/`WT_HH` present; no dedicated longitudinal/reinterview attrition weight in this extract. IPW from this model = sensitivity proposal only.

## Pre-2020 origins vs outcomes

Origins ≤2019 can have 2020 destinations. Pre-2020 origins ≠ pre-2020 outcomes.

## Replication pack (private)

- Raw extract sha256: `8f74769178d2918818906ac41a99d795131af4592b17beefa4b1d2ef05771dcf`
- Scripts: `build_m1_long_pilot.py`, `build_m1_long_v2.py`, `build_m1_long_selection_diag.py`
- Artifacts: `data/m1/v2/m1long_v2_selection_diagnostics.json`, `m1long_v2_selection_balance.csv`
- Do **not** publish raw microdata on public Hub.

## Unweighted 3×3 (PEXP × PAGO)

See JSON. No IPW sensitivity applied this tick.
