SPB Git

spb/wp29_uqo

Public

# F5-conf-02 — Finite-sample bias of the OLS AR(1) coefficient

# Question

In the Gaussian AR(1) model y_t = c + ρ y_{t−1} + ε_t, ε_t ~ iid N(0, σ²), with an estimated intercept, how large is the finite-sample bias of the OLS estimator ρ̂, and how close is it to the Marriott–Pope/Kendall approximation −(1+3ρ)/n at the design n = 30, ρ = 0.8?

# Data and exclusions

The only input is data/design.csv (7 rows, n_input_rows; SHA-256 2f459c53…, which matches bundle.json). Design: n = 30, ρ = 0.8, σ = 1, intercept included, stationary start y_1 ~ N(0, σ²/(1−ρ²)), R = 20000 replications, seed 20261029 (random_seed). The DGP sets c = 0. I found no data issues (data_issues = []). One exclusion rule (drop replications where OLS is degenerate) removed 0 replications, so 20000 were analysed (n_replications, n_analysed; see out/exclusions.csv).

# Method

  • Analytical approximation (baseline). bias_analytical = −(1+3ρ)/n, evaluated with n = 30 as the task specifies. This is a first-order asymptotic (large-n) expansion of the bias: E[ρ̂] − ρ = −(1+3ρ)/n + O(n⁻²). It gets the leading 1/n term right, but it is not an exact finite-sample formula. Its relative error shrinks only as n grows, and the neglected higher-order terms are largest when n is small and ρ is near 1. It is derived for the stationary Gaussian model with an estimated mean. The baseline sampling scale is the textbook asymptotic SE, se_asymptotic = √((1−ρ²)/n).
  • Monte Carlo. I used numpy.random.default_rng(20261029) to draw one 20000×30 standard-normal matrix. Column 1 gives the stationary y_1 (scaled by σ/√(1−ρ²)). Columns 2–30 give the innovations, and y_t = ρ y_{t−1} + ε_t. In each replication ρ̂ is the OLS slope from regressing y_t on (1, y_{t−1}) for t = 2,…,n (29 pairs), computed as a demeaned cross-product ratio (Frisch–Waugh–Lovell). bias_mc = mean(ρ̂) − ρ; bias_mc_se = sd(ρ̂)/√R; discrepancy_se_units = (bias_mc − bias_analytical)/bias_mc_se. Everything is generated by out/analysis.py.

# Results

quantity key value
analytical bias −(1+3ρ)/n bias_analytical −0.11333
MC bias bias_mc −0.12234
MC SE of bias bias_mc_se 0.00105
mean ρ̂ rho_hat_mean 0.67766
sd ρ̂ across reps rho_hat_sd_mc 0.14792
discrepancy (SE units) discrepancy_se_units −8.61
asymptotic SE √((1−ρ²)/n) se_asymptotic 0.10954
  • OLS clearly underestimates ρ. The mean of ρ̂ is 0.678 against a true value of 0.8 (rho_hat_mean, bias_mc). About 79% of the estimates fall below ρ (supp_share_rho_hat_below_rho), and the median is 0.699 (supp_rho_hat_median).
  • The analytical formula captures most of the bias, but the MC bias is about 8% larger in magnitude (supp_ratio_bias_mc_to_analytical = 1.08). The difference is −0.0090, which is 8.6 Monte Carlo SEs (discrepancy_se_units). It is therefore not Monte Carlo noise.
  • Plugging the effective sample size n−1 = 29 into the formula gives −0.1172 (supp_bias_analytical_neff). That moves it closer but still leaves a gap of about 5 MC SEs, so the remaining difference is consistent with neglected O(n⁻²) terms rather than with how n is counted alone.
  • The bias is large relative to the sampling spread: about 0.83 sd of ρ̂ (supp_bias_mc_over_sd). The Monte Carlo sd of ρ̂ is 1.35 times the textbook asymptotic SE (supp_ratio_sd_mc_to_se_asymptotic), and the RMSE is 0.192 (supp_rmse_mc).

# Uncertainty

The MC standard error of the bias estimate is 0.00105 (bias_mc_se), giving an approximate 95% interval of [−0.1244, −0.1203] (supp_bias_mc_ci95_low, supp_bias_mc_ci95_high). The interval excludes the analytical value −0.1133. The analytical value has no sampling uncertainty because it is deterministic. Results are exactly reproducible with the fixed seed. I checked them by an independent per-replication least-squares recomputation (out/state/checks.md).

# Limitations and open issues

  • What the approximation is. −(1+3ρ)/n is a leading-order asymptotic expansion, accurate up to O(n⁻²). It is not meant to be exact at any fixed n. A statistically significant discrepancy at n = 30, ρ = 0.8 is therefore what the expansion itself allows for. It does not show that the formula is "wrong". It shows that at this design the higher-order terms are about 8% of the bias, enough to resolve with R = 20000.
  • What the Monte Carlo can and cannot establish. The MC estimates the exact finite-sample bias at this single design point only (n = 30, ρ = 0.8, Gaussian errors, stationary start, intercept). It cannot establish how the approximation behaves at other values of n or ρ, under non-Gaussian or heteroskedastic errors, with a fixed or non-stationary initial condition, without an intercept, or with a trend. It also cannot establish the O(n⁻²) rate itself; that would need a grid over n, which this task did not request.
  • The ±1.96·SE interval relies on a normal approximation for the mean of 20000 draws. This is unproblematic here, even though the distribution of ρ̂ is left-skewed.
  • The −8.6 SE discrepancy uses n = 30 in the formula, as the task specifies. Other conventions (n−1 effective observations) change its size but not its sign or significance.
Files · main
Menu

Theme