Data Teaching Case · Interrupted Time Series
Did Iowa drink more during COVID?
Wholesale spirits orders rose. The regression finds a modest break. But the hardest lesson is that a clean-looking time series can still measure the wrong thing.
Executive Summary
Wholesale volume rose in 2020. Iowa stores ordered 2.71 million nine-liter cases, versus 2.47 million in 2019.
The initial break was modest. The model’s first-four-week estimate has a 95% interval of +4.1% to +21.7%.
The outcome is retailer orders. Bar closures, stockpiling, and channel substitution are inseparable from drinking.
Would you publish “COVID increased alcohol consumption in Iowa”?
You have a complete weekly wholesale series but no untreated state, no household panel, and no on-premise depletion data. Your task is to decide what the evidence can support, what regression adds, and which sentence would survive peer review.
On March 16, 2020, Iowa closed restaurants and bars to on-premise customers. Grocery, convenience, and liquor stores remained channels for off-premise spirits. The public transaction record then shows exactly what one might expect: a bump. But “a bump” can mean households drank more, households bought earlier, bars shifted purchases, stores changed order cadence, or demand moved from a missing channel into the observed one.
The closure date and terms come from the Governor of Iowa’s emergency proclamation. The transaction source is the official Iowa Liquor Sales dataset.
1 · The visible break
Align 2020 by week of year and compare it with the 2018–19 seasonal baseline. The week of the closure ran 33.8% above that two-year mean. Yet the line does not stay at crisis-level heights. The increase becomes a sequence of moderate deviations interrupted by ordinary holiday and ordering spikes.
Weekly wholesale spirits volume: 2020 versus the 2018–19 seasonal baseline
Nine-liter-case equivalents · shaded range spans the two baseline years · closure week = ISO week 12
Open weekly table
2 · What regression adds—and does not
The compact interrupted-time-series model uses all pre-COVID weeks to estimate a linear trend and week-of-year fixed effects. Three indicators represent the first four closure weeks, the next twelve weeks, and the rest of 2020. Standard errors are clustered by calendar month.
log(casest) = αweek-of-year + β·trend + δ₁·weeks 0–3 + δ₂·weeks 4–15 + δ₃·weeks 16–40 + εt
| period | estimate | clustered SE | 95% CI |
|---|
Event-time estimates around the March 16 closure
Log-point differences for 2020 relative to the same calendar weeks in 2018–19 · reference = week −1 · 95% intervals
Open coefficient table
The regression makes the before/after comparison more disciplined. It does not manufacture a counterfactual.
3 · Growth came from a changing basket
Whiskey contributed the most incremental cases, closely followed by cocktails and ready-to-drink products. RTD volume rose 59% year over year, but that category was already expanding before COVID. The distinction matters: a large 2020 change can combine an existing product trend with a pandemic shock.
Change in nine-liter cases by broad category, 2019 to 2020
Absolute calendar-year change · all Iowa wholesale orders
Open category table
4 · Categories did not move together
Separate category regressions show the initial response concentrated in RTD, whiskey, vodka, and rum. Tequila and schnapps were below their estimated seasonal trends in the first four weeks, then tequila rebounded. This heterogeneity is consistent with a change in occasions and channels—not simply a uniform rise in drinking.
Estimated category shifts by phase
Percent change from separate seasonal trend models · circles: weeks 0–3 · diamonds: weeks 4–15
Open category regression table
5 · The package mix barely moved
If households had shifted dramatically into pantry stockpiling, one might expect a sharp jump in one-liter and 1.75-liter formats. Their share was 59.9% before the closure and 59.4% in the first four weeks. Smaller bottles edged up instead. The package evidence argues against a simple “everyone bought handles” story.
Large- and small-format shares of weekly spirits volume
Large = 1L + 1.75L · small = ≤375mL · weekly, 2018–2021
6 · A tempting drinking story the data cannot tell
Weekend invoice dates are almost absent: across four years, only 17 Saturdays and 41 Sundays contain any volume, and weekends account for less than 1% of cases. The recorded date is therefore dominated by wholesale ordering and distribution operations—not the occasion when a consumer bought or drank the product. Still, invoice timing changed briefly: Friday’s volume share rose from 15.3% before COVID to 22.6% in weeks 0–3 and 21.8% in weeks 4–15, then drifted back toward 18% in 2021.
log(daily cases + 1) = weekday FE + calendar-week FE + Friday × COVID phase + ε
A within-week model estimates Friday volume rose 58% relative to Monday–Thursday in weeks 0–3 and 78% in weeks 4–15. Later estimates are small and statistically inconclusive. The defensible interpretation is a short-run shift in retailer invoice or delivery timing—not evidence that work-from-home caused more weekday drinking.
Wholesale volume by invoice-day group
Share of nine-liter cases within each phase · the weekend is operationally near-zero
Open invoice-day table
Teaching questions
- Choose the estimand.
Is the object of interest total consumption, retail availability, household purchasing, state wholesale revenue, or channel substitution? Which one does this dataset actually observe?
- Defend a counterfactual.
Would you prefer another state, beer and wine data, household panels, or on-premise depletion records? What assumption would each comparison add?
- Interrogate the standard errors.
Month clustering addresses some within-month dependence but not all serial correlation. How would inference change with a longer pre-period or a state panel?
- Audit the timestamp.
Why can an invoice date identify a distribution schedule but not the day a consumer drank? What retail or household data would be needed?
- Write the headline.
Draft one sentence that is accurate enough for a policy memo and one that would overclaim. Identify the exact word that creates the causal leap.
Data & methods
- Source. `bigquery-public-data.iowa_liquor_sales.sales`, extracted July 10, 2026. The dataset records spirits purchases by Iowa Class E licensees; it does not record household consumption.
- Grain. Monday-starting weeks from January 2018 through December 2021, aggregated across stores and products.
- Categories. Product category names are mapped into ten mutually exclusive families. Volume is recorded liters divided by nine.
- Main model. PyFixest OLS on log weekly cases with a linear trend, ISO-week fixed effects, and three 2020 phase indicators. CRV1 standard errors cluster weeks within calendar month.
- Event plot. 2020 is compared with the same ISO weeks in 2018–19 using year and week-of-year fixed effects; week −1 is the reference.
- Invoice-day diagnostic. Monday–Friday daily cases are compared within calendar week using weekday and week fixed effects; standard errors cluster by week. Weekend dates are retained descriptively to reveal the source’s operational coverage gap.
- Limitations. One treated state; no state control; only two pre-years in the displayed window; wholesale orders are lumpy; COVID changed channels, policy, income, mobility, and product availability simultaneously.
- Reproducibility. Executed notebooks: `data/iowa-liquor-events/iowa_event_studies.ipynb` and `iowa_covid_invoice_day_diagnostic.ipynb`. The added daily diagnostic is generated by `scripts/iowa_covid_weekday_analyze.py`.
External context: Iowa emergency proclamation; Iowa Restaurant Association retrospective; PyFixest documentation.