Okun's law in U.S. quarterly data, 1960Q1–2019Q4
Question
Estimate β in Δu_t = α + β g_t + e_t, where u_t is the quarterly mean of monthly UNRATE (pp), Δu_t = u_t − u_{t−1}, and g_t = 100·ln(GDPC1_t/GDPC1_{t−1}) (percent, quarter-on-quarter, not annualised), over the 240 quarters 1960Q1–2019Q4. Uncertainty must hold up when the errors are serially correlated.
Data and exclusions
data/UNRATE.csv(945 monthly rows) anddata/GDPC1.csv(319 quarterly rows), current FRED vintage, used as given.- I computed quarterly unemployment as the mean of the three monthly values in each quarter. The code checks that every quarter from 1959Q4 to 2019Q4 has all three months and a GDP value. Only the 1959Q4 levels from outside the window are used, as the base for the 1960Q1 differences.
- Data issue: UNRATE has one empty value, at 2025-10. That is outside the window, so it was dropped and does not affect the analysis. No duplicate dates.
- Sample: 1960Q1–2019Q4, n = 240. No other exclusions.
Method
- OLS of Δu_t on a constant and g_t.
- Naïve standard error: the conventional OLS standard error, which assumes independent, equal-variance (homoskedastic) errors.
- Robust standard error: Newey–West HAC, which allows for both autocorrelation and unequal error variance. It uses Bartlett-kernel weights with 4 lags, set by the Newey–West (1994) rule of thumb floor(4·(T/100)^{2/9}) with T = 240. I fixed this rule before seeing the results. It fits the data: the OLS residuals have autocorrelations of 0.39, 0.29, 0.14 and 0.07 at lags 1–4, so the dependence has mostly died out by lag 4. No small-sample degrees-of-freedom correction is applied. With the n/(n−k) correction the SE is 0.0360 instead of 0.0358.
- 95% CI = β̂ ± 1.96·SE_HAC, using normal (asymptotic) critical values. The test is two-sided at the 5% level.
Results
| quantity | value |
|---|---|
| β̂ (Okun coefficient) | −0.2558 |
| α̂ | 0.1844 |
| R² | 0.408 |
| SE (iid) | 0.0200 |
| SE (HAC, 4 lags) | 0.0358 |
| 95% HAC CI | [−0.326, −0.186] |
| HAC t-stat / p-value | −7.14 / 9.5e−13 |
| mean g_t | 0.754 % per quarter |
A 1-percentage-point higher quarterly real GDP growth (not annualised) goes with a 0.256 pp fall in the unemployment rate that quarter. The implied growth rate that keeps unemployment unchanged is −α̂/β̂ ≈ 0.72 % per quarter, close to the sample mean growth of 0.75 %. Over this sample, β is negative and significantly different from zero at the 5% level (okun_negative_5pct = true). Figure: out/figure1.png.
Uncertainty
The HAC SE is about 1.8 times the naïve iid SE (0.0358 vs 0.0200), so the iid SE overstates precision. Part of the gap is heteroskedasticity: the heteroskedasticity-robust SE with 0 lags is 0.0288. The rest is the positive residual autocorrelation.
The HAC SE barely changes with the choice of bandwidth:
| lags | 0 | 1 | 2 | 4 | 6 | 8 | 12 | 16 |
|---|---|---|---|---|---|---|---|---|
| SE | 0.0288 | 0.0324 | 0.0342 | 0.0358 | 0.0369 | 0.0371 | 0.0364 | 0.0341 |
So the conclusion holds for any bandwidth from 0 to 16 lags: the largest SE (0.0371) still gives |t| > 6.
Limitations and open issues
- The data are the current vintage, not real-time. GDP revisions may differ from the values originally published.
- β is a linear-projection coefficient, not a causal effect. Unemployment's response to growth is spread over several quarters (consistent with the residual autocorrelation), and this contemporaneous regression does not model those dynamics.
- The relationship may not be stable over time (e.g., across decades or recessions). I did not test for this. The 2020 COVID observations are excluded by design.
- The HAC inference is asymptotic: it uses normal critical values and its HAC confidence intervals can undercover somewhat in finite samples. Given t ≈ −7, this does not affect the conclusion.