Skip to contents

Given a design, runs the estimation and the route-appropriate battery of diagnostics in one call, dispatching on `design$exogenous`. Because the two identification routes justify *different* statistics (Borusyak-Hull-Jaravel JEP practical guide), each route reports only its own battery:

  • **share** (Goldsmith-Pinkham, Sorkin & Swift 2020): conventional (EHW / cluster) inference; Rotemberg-weight decomposition and summary; the Sargan-Hansen overidentification test across the share instruments; leave-one-out sensitivity; and — if `covariates` are supplied — balance of the top-|Rotemberg-weight| shares.

  • **shift** (Borusyak, Hull & Jaravel 2022): exposure-robust (AKM / AKM0) inference; the location-level / shock-level equivalence check; the effective-shock / exposure-concentration summary; leave-one-out sensitivity; and — if `shock_covariates` are supplied — the shock-balance check.

Pre-trend ([ssb_pretrend()]) and placebo ([ssb_placebo()]) checks run on both routes when `pre_y` / `placebo_y` are supplied, with route-appropriate headline inference. Arguments belonging to the other route (`shock_covariates` on the share route, `covariates` on the shift route) are skipped with a message rather than silently mixed in.

Usage

ssb_pipeline(
  design,
  covariates = NULL,
  pre_y = NULL,
  placebo_y = NULL,
  shock_covariates = NULL,
  top = 5,
  level = 0.95
)

Arguments

design

An [ssb_design()] object.

covariates

Optional observables for the share-balance check (share route).

pre_y

Optional pre-period outcome for [ssb_pretrend()].

placebo_y

Optional placebo outcome for [ssb_placebo()].

shock_covariates

Optional shock-level characteristics (a data.frame keyed by sector) for [ssb_shock_balance()] on the shift route.

top

Number of top-weight sectors for the sensitivity diagnostics.

level

Confidence level.

Value

An `ssb_result` list with `estimate`, `route`, and route-specific diagnostic elements. `autoplot()` returns the headline figure.