Okun's law in the United States, 1960–2019 (F6-conf-03)
Question
How strongly does the quarterly change in the US unemployment rate respond to quarterly real GDP growth, and has that response been stable? Estimand: β in Δu_t = α + β·g_t + ε_t, 1960Q1–2019Q4, with u_t the quarterly mean of monthly UNRATE (percent) and g_t = 100·Δln GDPC1 (percent, not annualised). Stability: separate OLS on 1960Q1–1983Q4 and 1984Q1–2019Q4 plus a classical Chow F-test of joint equality of (α, β).
Data and exclusions
Inputs: data/GDPC1.csv (319 quarterly rows, 1947Q1–2026Q3) and data/UNRATE.csv (945 monthly rows, 1948-01–2026-09) (n_input_rows). SHA-256 hashes match data/README.md (see out/state/data_audit.md). Data issues (data_issues): one blank UNRATE value (2025-10), outside the window; both series extend past 2019Q4 and are the 2026 revised vintage. Exclusions (out/exclusions.csv): 319 GDPC1 quarters → 241 in 1959Q4–2019Q4 (78 removed, incl. everything after 2019Q4) → 240 after losing 1959Q4 to differencing. All three months were present in every quarter of the window. Regression sample: sample_start = 1960-01-01 to sample_end = 2019-10-01, n_analysed = 240; n_sub1 = 96, n_sub2 = 144.
Method
- Baseline: mean-only prediction of Δu; RMSE
baseline_metric. - Main: full-sample OLS of Δu on a constant and g; point estimates
effect_estimate,intercept; in-sample residual RMSEmodel_metric. - Uncertainty: Newey–West HAC standard error (Bartlett kernel, small-sample correction) with
hac_lags= 4 quarters, chosen by the Newey–West (1994) rule floor(4(T/100)^{2/9}) with T = 240; 95% CI = β ± 1.96·SE (effect_ci_low,effect_ci_high).conclusionis set from whether this interval excludes zero. - Stability: OLS by subperiod (
beta_sub1,beta_sub2); classical Chow F = [(SSR_pooled − SSR_1 − SSR_2)/2] / [(SSR_1 + SSR_2)/(n − 4)], df (2, 236) (chow_f_stat,chow_p_value,stability_conclusion). Supplementary (not required): HAC Wald tests in an interaction model with a post-1984 dummy, and HAC SE sensitivity to the lag length. - No randomness used (
random_seed= null). Everything is produced byout/analysis.py(alsoout/table1.csv,out/figure1.png).
Results
- Okun coefficient:
effect_estimate= −0.256 pp of unemployment per 1% quarterly real GDP growth;intercept= 0.184 pp. So unemployment is flat when quarterly growth is about 0.72% (implied_zero_du_growth_full), roughly 2.9% annualised. - Fit:
model_metric= 0.250 pp, compared withbaseline_metric= 0.325 pp for the mean-only baseline (r_squared_full= 0.408). - Subperiods (Table 1,
out/table1.csv):beta_sub1= −0.259 (intercept_sub1= 0.254) andbeta_sub2= −0.273 (intercept_sub2= 0.152). The slopes are almost the same. What differs is the intercept: after 1984, unemployment stops rising at a lower growth rate, which fits slower trend growth. - Chow test:
chow_f_stat= 6.09,chow_p_value= 0.0026 →stability_conclusion=unstable. The joint (α, β) relation is not stable. The difference appears to come from the intercept, not the slope. Testing the slope difference alone with HAC gives p = 0.85 (hac_slope_diff_p_value). The intercept difference alone gives p = 0.25 (hac_intercept_diff_p_value). The joint HAC Wald test still rejects (hac_joint_break_f_stat= 5.37,hac_joint_break_p_value= 0.0052), because the two estimates are strongly correlated. - Figure 1 (
out/figure1.png): scatter of Δu against g with the two subperiod fitted lines. - Conclusion code:
conclusion=negative_effect.
Uncertainty
HAC SE effect_se = 0.036 (classical OLS SE ols_classical_se_full = 0.020). The HAC SE is about 1.8 times the classical one, so the residuals are serially correlated and/or heteroskedastic. 95% CI [effect_ci_low, effect_ci_high] = [−0.326, −0.185], well below zero. Changing the lag length (0, 2, 8, 12) gives SEs of 0.029–0.037 (hac_se_lag_sensitivity). Those choices do not change the conclusion. The subperiod HAC SEs are beta_sub1_hac_se = 0.040 and beta_sub2_hac_se = 0.069, so the two slopes cannot be told apart statistically.
Limitations and open issues
- The Chow test assumes things the data do not meet. The classical Chow F assumes homoskedastic, serially uncorrelated errors, and it was required in that form. Residual variance differs between the subperiods (
resid_variance_sub1= 0.079 vsresid_variance_sub2= 0.048, i.e. the Great Moderation). The large HAC/OLS SE ratio shows the errors are not i.i.d. So the classical p-value is not exactly valid. The HAC joint Wald test (p = 0.0052) points the same way. Even so, a Wald test that allows different variances in each subperiod, or a sup-Wald test with an unknown break date, was not run. The 1984 break date is set by the task rather than estimated, which makes conventional inference a fair test of a pre-specified hypothesis. It does not show the break actually happened in 1984. - What "unstable" means here. The rejection applies to (α, β) jointly. The question asks whether the response (β) is stable, and our data give no evidence that the slope changed. Reading
stability_conclusion= unstable as "Okun's coefficient changed" would overstate the result. - Specification threats. The static difference form leaves out lagged growth. Unemployment usually lags output, and this is part of why the residuals are autocorrelated. A dynamic model could give a different long-run coefficient. The relation is also treated as linear and symmetric; asymmetry between recessions and expansions was not checked. OLS treats g as exogenous. β is a reduced-form association, not a causal effect, and measurement error in GDP would bias |β| towards zero.
- Data vintage. GDPC1 is the 2026 revised vintage. Results based on real-time data, or on a different benchmark revision, could differ somewhat. Not checked.
- Outliers and influence. No influence diagnostics were run. Large recession quarters (e.g. 1980, 2008–09) visibly drive the fit in Figure 1.
- Not checked: other kernels or bandwidth selectors (beyond the lag sensitivity reported), t versus normal critical values (with T = 240 the difference is negligible), and the robustness of the result to the break date.