Skip to contents

Reports 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.

Usage

ssb_first_stage(design, shock_cluster = NULL)

Arguments

design

An [ssb_design()] object.

shock_cluster

Optional grouping of the shocks (a column name in the shocks table, or a vector of length equal to the number of shock-cells) for a cluster-robust shock-level first stage.

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)