Skip to contents

Asks whether exposure to the shocks predicts a *pre-period* outcome (or pre-period change) — a differential pre-trend would threaten identification. This is distinct from [ssb_placebo()], which runs the *full IV* on a placebo outcome; pre-trends ask whether exposure predicts the outcome *before* the shocks, placebo asks whether the design moves an outcome it should not.

Usage

ssb_pretrend(design, pre_y, level = 0.95, shock_cluster = NULL)

Arguments

design

An [ssb_design()] object.

pre_y

Column name of the pre-period outcome (or pre-period change).

level

Confidence level.

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 SE on the shift route.

Value

A list (class `ssb_pretrend`) with the headline `coef`, `se`, `p`, `conf.low`/`conf.high` (route-appropriate, see Details), the `route`, a `headline` label and `level_used` (`"shock"` or `"location"`); plus the location-level reduced form (`coef_loc`, `se_ehw`, `se_cluster`, `p_ehw`) and the shock-level regression (`coef_shock`, `se_shock`, `p_shock`, `n_shocks`) regardless of route.

Details

The regression that is run follows the identification route of the design:

  • **share route** (Goldsmith-Pinkham, Sorkin & Swift): the location-level reduced form of the pre-period outcome on the constructed instrument (controls partialled out), with the design's cluster-robust SE if a `cluster` variable is set and EHW otherwise — conventional inference is appropriate here.

  • **shift route** (Borusyak, Hull & Jaravel): the **shock-level** regression of the exposure-weighted average of the (residualised) pre-period outcome, \(\bar y^{pre}_n\), on the shocks residualised on the shock-level controls (a constant, plus period fixed effects in panels), with exposure weights and HC1 (or shock-clustered) standard errors — the balance/pre-trend regression of BHJ, i.e. what `reg` reports after `ssaggregate`. A location-level regression on the instrument with EHW / cluster SEs would over-reject on this route (Adao, Kolesar & Morales 2019); its coefficient is still returned (`coef_loc`, `se_ehw`, `se_cluster`) for reference.

Note the two coefficients live on different scales (per unit of the instrument vs. per unit of the shock); it is the \(t\)/\(p\) that answers the pre-trend question either way.

Examples

sim <- ssb_simulate(n_loc = 80, n_sec = 10, seed = 1)
sim$data$y_pre <- stats::rnorm(nrow(sim$data))   # a pre-period outcome
d <- ssb_design(sim$data, sim$shares, sim$shocks, exogenous = "shift")
ssb_pretrend(d, pre_y = "y_pre")   # shift route: shock-level regression
#> <ssBartik pre-trend test>
#>   pre-period outcome : y_pre
#>   route : exogenous SHIFT -> shock-level regression (BHJ / ssaggregate)
#>           of the exposure-weighted pre-period outcome on the residualised shocks
#>   coef 0.0161   se 0.0094 [shock-level, exposure-robust (HC1), 10 shocks]   p = 0.087   [-0.002, 0.034]
#>   (location-level reduced form on the instrument: coef 0.0988, EHW se 0.2049;
#>    conventional SEs over-reject on this route -- reference only)
#>   coefficient near 0 => no differential pre-trend by exposure