SPB Git

spb/wp29_uqo

Public

# Okun's law in U.S. quarterly data, 1960Q1–2019Q4 (F2-conf-04)

# Question

Estimate β in the linear projection Δu_t = α + β g_t + e_t, where u_t is the quarterly average 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 1960Q1–2019Q4, with a Newey–West (Bartlett) HAC standard error, and decide whether β is negative and significantly different from zero at 5% (two-sided).

# Data and exclusions

  • data/UNRATE.csv: 945 monthly rows, data/GDPC1.csv: 319 quarterly rows (n_input_rows). Both SHA-256 checksums match data/README.md (see out/state/data_audit.md).
  • One data issue: UNRATE for 2025-10 is an empty field; it lies outside the 1959Q4–2019Q4 levels window and has no effect (data_issues).
  • Exclusions (out/exclusions.csv, unit = quarters of the merged quarterly panel, 319): step 1 keeps 1959Q4–2019Q4 (78 removed, information rule); step 2 drops 1959Q4, which serves only as the differencing base (1 removed). 319 − 79 = 240 = n_analysed; sample runs first_quarter = 1960Q1 to last_quarter = 2019Q4. Every quarter in the window has all 3 monthly unemployment observations.

# Method

  • Quarterly u_t = mean of the three monthly SA rates; Δu_t and g_t as defined in the task (log growth ×100, not annualised).
  • OLS of Δu_t on a constant and g_t (statsmodels). Baseline uncertainty: conventional homoskedastic, serially independent OLS SE (se_iid).
  • HAC: Newey–West Bartlett kernel, weights 1 − j/(L+1), no small-sample degrees-of-freedom correction, normal critical value 1.96. Bandwidth L = hac_lags = 4, from the Newey–West (1994) plug-in rule floor(4·(T/100)^{2/9}) with T = 240 (hac_lags_rule_nw1994); the textbook rule floor(0.75·T^{1/3}) gives the same value (hac_lags_rule_sw). The statsmodels HAC SE was verified against a hand-coded Bartlett estimator.
  • No randomness (random_seed = null). out/analysis.py regenerates out/results.json, out/figure1.png, out/hac_sensitivity.csv, out/exclusions.csv.

# Results

  • Okun coefficient beta_hat = −0.256: a 1 percentage-point higher quarterly real GDP growth is associated with a 0.256 pp larger fall in the unemployment rate in that quarter.
  • Intercept alpha_hat = 0.184 pp; r_squared = 0.408.
  • Mean quarterly growth mean_growth = 0.754% (about 3.0% annualised). The growth rate at which predicted Δu = 0 is −α̂/β̂ ≈ 0.72% per quarter (derived from alpha_hat and beta_hat).
  • Figure: out/figure1.png (scatter of Δu_t against g_t with the fitted line).
  • okun_negative_5pct = true: β̂ < 0 and H0: β = 0 is rejected at 5% with the HAC SE (t_stat_hac = −7.14, p_value_hac ≈ 9.5e−13).

# Uncertainty

  • se_iid = 0.0200 (naïve baseline; 95% CI [baseline_ci_iid_low, baseline_ci_iid_high] = [−0.295, −0.217]).
  • se_hac = 0.0358 with hac_lags = 4; 95% HAC CI [beta_ci_low, beta_ci_high] = [−0.326, −0.186].
  • The HAC SE is about 1.8 times the iid SE (ratio of se_hac to se_iid), consistent with positively autocorrelated OLS residuals (resid_autocorr_lag1_4: 0.39, 0.29, 0.14, 0.07 at lags 1–4).
  • Bandwidth sensitivity (out/hac_sensitivity.csv): over L = 0…12 the HAC SE never exceeds se_hac_max_over_lags_0_12 = 0.0371 and the largest p-value is p_value_hac_max_over_lags_0_12 ≈ 5.7e−12, so the significance conclusion does not depend on the bandwidth. A small-sample df correction (n/(n−k)) changes the SE by under 0.5% (same CSV).

# Limitations and open issues

  • β is a descriptive linear-projection (reduced-form) coefficient, not a causal effect. It is also contemporaneous only (no lags of g_t), as the task specifies.
  • Current-vintage data are used, not real-time data; GDP revisions and the 2017 chain base are taken as given.
  • The coefficient is assumed constant over 1960–2019; parameter stability (for example across decades or recessions) was not tested because the task does not ask for it.
  • The HAC inference is asymptotic (normal critical values, Bartlett kernel). With T = 240 and |t| ≈ 7, the conclusion is far from the margin, so fixed-b or other small-sample refinements are unlikely to change it. They were not computed.
  • No part of the task was infeasible (feasibility = "complete").
Files · main
Menu

Theme