SPB Git

spb/wp29_uqo

Public
4.0 KB · 46 lines markdown
1# Okun's law in U.S. quarterly data, 1960Q1–2019Q4, with HAC uncertainty (F2-conf-04)23## Question4Estimate β in the linear projection Δu_t = α + β g_t + e_t. Here u_t is the quarterly average of monthly UNRATE (pp) and g_t = 100·ln(GDPC1_t/GDPC1_{t−1}), i.e. quarter-on-quarter growth in percent, not annualised. The sample is 1960Q1–2019Q4. The task asks whether β is negative and significantly different from zero at the 5% level, using a Newey–West standard error.56## Data and exclusions7- Inputs: `data/UNRATE.csv` (945 monthly rows) and `data/GDPC1.csv` (319 quarterly rows) (`n_input_rows`). Both SHA-256 checksums match `data/README.md`; see `out/state/data_audit.md`.8- Data issue: one UNRATE value is missing (2025-10-01). It lies outside the range the regression needs, so it has no effect (`data_issues`).9- Exclusions (`out/exclusions.csv`), counted on the quarterly panel:10  - 319 GDPC1 quarters to start.11  - −78 quarters outside 1959Q4–2019Q4.12  - −0 quarters dropped for lacking 3 UNRATE months (none in the window).13  - −1 for 1959Q4, which is used only as the level for the first differences.14  - This leaves 240 quarters (`n_analysed`), from `first_quarter` = 1960Q1 to `last_quarter` = 2019Q4.1516## Method17- I estimated the regression by OLS of Δu_t on a constant and g_t (statsmodels).18- Naïve baseline: the conventional OLS standard error, which assumes independent, equal-variance errors (`se_iid`).19- Robust standard error: Newey–West HAC with a Bartlett kernel, without a small-sample degrees-of-freedom correction (`se_hac`).20  - Bandwidth: `hac_lags` = 4. This comes from the Newey–West (1994) rule of thumb floor(4·(T/100)^{2/9}) with T = 240. The alternative rule floor(0.75·T^{1/3}) also gives 4.21  - Choosing a HAC correction at all is justified: the OLS residuals have a first-order autocorrelation of 0.39 (`resid_lag1_autocorr`).22- The 95% interval is β̂ ± 1.96·`se_hac` (normal critical value, `z_crit`).23- The script uses no randomness (`random_seed` = null).24- Figure: `out/figure1.png` plots Δu_t against g_t with the fitted line.2526## Results27- Okun coefficient: `beta_hat` = −0.2558. Each extra percentage point of quarterly real GDP growth goes with a fall of about 0.26 pp in the unemployment rate in the same quarter.28- Intercept: `alpha_hat` = 0.1844 pp.29- Fit: `r_squared` = 0.408.30- Implied break-even growth, where predicted Δu = 0: −α̂/β̂ ≈ 0.72 % per quarter, about 2.9 % annualised. This is derived arithmetically from `alpha_hat` and `beta_hat`.31- Average growth: `mean_growth` = 0.754 % per quarter.32- Conclusion: `okun_negative_5pct` = true. β̂ is negative, and the HAC t-statistic is −7.14 (`t_stat_hac`, two-sided p ≈ 1e-12, `p_value_hac`).3334## Uncertainty35- `se_iid` = 0.0200; `se_hac` = 0.0358 (L = 4). The HAC standard error is about 1.8 times the naïve one, so ignoring serial correlation understates the uncertainty substantially.36- 95% HAC interval: [`beta_ci_low`, `beta_ci_high`] = [−0.326, −0.186]. The naïve interval is [−0.295, −0.217] (`baseline_ci_iid_low`, `baseline_ci_iid_high`).37- Sensitivity to the bandwidth (`se_hac_by_lags`): the HAC standard error ranges from 0.029 (L = 0, which is White's heteroskedasticity-robust SE) to 0.037 (L = 8). It is 0.0364 at L = 12.38- Applying the small-sample correction n/(n−k) gives 0.0360 (`se_hac_small_sample_corrected`).39- Under every one of these choices the interval stays well below zero.4041## Limitations and open issues42- β is a descriptive linear-projection coefficient, not a causal effect. It assumes a stable relation over 1960–2019; Okun coefficients are known to drift over time, and I did not test for structural breaks because the task does not ask for it.43- The data are the current vintage, with GDP revised and in chained 2017 dollars, not the real-time data available at each date.44- Normal-approximation inference with a Bartlett HAC estimator can over-reject in finite samples when residuals are persistent. Given |t| ≈ 7, this does not threaten the conclusion.45- No part of the task was infeasible (`feasibility` = "complete").46
Files · main
Menu

Theme