First-stage strength: standard and exposure-robust (shock-level) F
Source:R/checks.R
ssb_first_stage.RdReports two first-stage F statistics:
`F_standard` — the heteroskedasticity-robust (HC1) F of the location-level first stage of the treatment on the constructed instrument. This is the conventional statistic and the one to read on the **share route**.
`F_effective` — the exposure-robust F of the **shock-level first stage** (Borusyak, Hull & Jaravel): the exposure-weighted average of the (residualised) treatment, \(\bar x_n\), regressed on the shocks residualised on the shock-level controls (a constant, plus period fixed effects in panels), with exposure weights and HC1 standard errors — exactly the first stage `ivreg2`/`reg` report after `ssaggregate`. This is the statistic to read on the **shift route**: the conventional F ignores the shift-share structure of the instrument (residuals correlated across units with similar exposure; Adao, Kolesar & Morales 2019) and can be far off with few effective shocks.
The two are different regressions (the shock-level coefficient `pi_shock` is in units of the shock, the location-level `pi` in units of the instrument), so the Fs are not expected to agree; both are returned, and `print()` leads with the route-appropriate one.
Value
A list (class `ssb_first_stage`) with `F_standard`, `F_effective`, the location-level first-stage coefficient `pi`, the shock-level coefficient `pi_shock` and its SE `se_shock`, `n_shocks`, and the design's `route`.
Examples
sim <- ssb_simulate(n_loc = 80, n_sec = 10, seed = 1)
d <- ssb_design(sim$data, sim$shares, sim$shocks, exogenous = "shift")
ssb_first_stage(d) # shift route: the shock-level F is the headline
#> <ssBartik first-stage strength>
#> exposure-robust F (shock level, BHJ) : 106.2 <- headline (exogenous SHIFT)
#> shock-level first stage: pi = 0.1648, se = 0.0160 (HC1 over 10 shocks)
#> standard robust F (location level) : 19.8 (conventional; ignores the shift-share structure)