SPB Git

spb/wp29_uqo

Public

# Okun's law in the United States, 1960–2019 (task F6-conf-03)

# Question

How strongly do quarterly changes in the US unemployment rate (Δu_t, pp) respond to quarterly real GDP growth (g_t = 100·Δln GDPC1, % q/q, not annualised), in Δu_t = α + β·g_t + ε_t over 1960Q1–2019Q4, and is the relation stable between 1960Q1–1983Q4 and 1984Q1–2019Q4?

# Data and exclusions

  • data/GDPC1.csv (319 rows, 1947Q1–2026Q3) and data/UNRATE.csv (945 rows, 1948-01–2026-09) (n_input_rows); SHA-256 checksums match data/README.md (see out/state/data_audit.md).
  • Quarterly u_t = mean of the three monthly UNRATE values; quarters with fewer than 3 months are set to missing. Only one month is missing (2025-10), and it lies outside the sample (data_issues).
  • Exclusions (out/exclusions.csv): the 319 quarters were restricted to 1960Q1–2019Q4 (79 removed; 1959Q4 levels are used only to form the 1960Q1 differences). No missing values were found inside the window, which leaves n_analysed = 240 quarters, n_sub1 = 96 and n_sub2 = 144. No data after 2019Q4 enters any estimate, and the script asserts this.

# Method

  • Baseline: a mean-only prediction of Δu, scored by RMSE (baseline_metric).
  • Main model: OLS of Δu_t on a constant and g_t over the full sample (effect_estimate, intercept), scored by in-sample residual RMSE (model_metric).
  • Uncertainty: Newey–West HAC standard error with a Bartlett kernel. The lag is set by the rule floor(4·(n/100)^{2/9}) = 4 (hac_lags). The 95% CI is β ± 1.96·SE (normal approximation).
  • Stability: separate OLS fits on each subperiod (beta_sub1, beta_sub2; subperiod slope SEs in table1.csv are also HAC, with lags 3 and 4). A classical Chow SSR F-test of equal (α, β), with F(2, 236) (chow_f_stat, chow_p_value).
  • Supplementary checks I added (supp_* keys): a HAC-robust Wald test using subperiod-2 dummy and interaction terms, run jointly and for the slope alone, plus a residual-variance ratio test.
  • There is no randomness (random_seed = null). out/analysis.py regenerates every output deterministically.

# Results

period n α β HAC SE(β)
full 1960Q1–2019Q4 240 0.184 −0.256 0.036
1960Q1–1983Q4 96 0.254 −0.259 0.039
1984Q1–2019Q4 144 0.152 −0.273 0.069
(Source: out/table1.csv, and intercept, effect_estimate, effect_se, beta_sub1, beta_sub2, intercept_sub1, intercept_sub2, se_sub1_hac, se_sub2_hac.)
  • Coefficient: β = −0.256 (effect_estimate). A 1 percentage-point higher quarterly real GDP growth (about 4 pp annualised) goes with a quarter-on-quarter fall of about 0.26 pp in the unemployment rate. The implied growth rate that keeps unemployment unchanged is −α/β ≈ 0.72% per quarter (from intercept and effect_estimate).
  • Fit: the residual RMSE is 0.250 pp (model_metric), against 0.325 pp for the mean-only baseline (baseline_metric); R² = 0.41 (r_squared).
  • Conclusion code: negative_effect (conclusion), because the 95% CI lies entirely below zero.
  • Stability: the Chow test rejects equality of (α, β): F = 6.09, p = 0.0026 (chow_f_stat, chow_p_value), so stability_conclusion = unstable. The rejection comes from the intercept, not the slope:
    • The subperiod slopes are almost identical: −0.259 vs −0.273 (beta_sub1, beta_sub2).
    • The HAC Wald test of slope equality alone gives p = 0.85 (supp_hac_wald_slope_p).
    • The intercept falls from 0.254 to 0.152 (intercept_sub1, intercept_sub2).
    • The joint HAC Wald test also rejects, p = 0.005 (supp_hac_wald_joint_p).
  • Figure: out/figure1.png shows the scatter of Δu against g with the two subperiod fitted lines.

# Uncertainty

  • HAC SE(β) = 0.036 (effect_se); 95% CI [−0.326, −0.185] (effect_ci_low, effect_ci_high). The HAC SE is about 1.8 times the classical OLS SE of 0.020 (ols_classical_se).
  • The SE barely depends on the lag choice: 0.029 at lag 0 and 0.034–0.037 at lags 2–12 (sensitivity_effect_se_by_lag). The sign conclusion holds at every lag tried.
  • The subperiod-2 slope is estimated less precisely (HAC SE 0.069, se_sub2_hac).

# Limitations and open issues

  • Validity of the classical Chow test. It assumes homoskedastic, serially uncorrelated errors with the same variance in both subperiods. That assumption fails here: the residual variance in subperiod 1 is about 1.63 times that in subperiod 2, and a variance-ratio F-test gives p = 0.009 (supp_resid_var_ratio_sub1_over_sub2, supp_var_ratio_F_p_two_sided). The classical p-value (chow_p_value) may therefore be miscalibrated. The HAC Wald test (supp_hac_wald_joint_p = 0.005) supports the same rejection, which makes it more credible, but neither test allows for unequal variances explicitly in the classical form required by the task.
  • What "unstable" means. The instability is in the intercept, i.e. the growth rate that keeps unemployment unchanged, which reflects trend productivity and labour-force growth. There is no evidence that the Okun slope itself changed. Reading unstable as "the output–unemployment sensitivity changed" would be wrong.
  • Fixed, chosen break date. The 1984Q1 break was imposed, not estimated. A Chow test at a chosen date says nothing about whether this is the best break date, or whether there are several breaks or gradual drift. No sup-F or rolling analysis was done (it is outside the task).
  • Reduced form, not causal. β is a contemporaneous association. Omitted dynamics, such as lagged growth, would change it, and simultaneity rules out a causal reading. Residual serial correlation is handled only through the HAC SEs; the model was not re-specified.
  • Data vintage. GDPC1 is the 2026 vintage. Revised data can differ from real-time data, and the BLS household-survey methodology changed over the period (e.g. 1994). Neither was examined.
  • Inference approximations. The HAC lag uses a rule of thumb; small-sample HAC bias was not corrected beyond the degrees-of-freedom correction, and the CI uses a normal critical value. Large recession outliers, such as 1980 and 2008–09, were not tested for influence.
  • What would invalidate the result. A misaligned quarterly average, data after 2019 leaking into the sample, or a non-stationary relation. The first two were checked (out/state/checks.md); the third was not tested formally.
Files · main
Menu

Theme