SPB Git

spb/wp29_uqo

Public

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

# Question

In the Gaussian AR(1) y_t = c + ρ y_{t−1} + ε_t (c = 0 in the DGP), how large is the finite-sample bias of the OLS estimator ρ̂ from the regression of y_t on (1, y_{t−1}), and how well does the Marriott–Pope/Kendall approximation −(1+3ρ)/n describe it at the design n = 30, ρ = 0.8?

# Data and exclusions

Only data/design.csv (7 parameter rows, n_input_rows; SHA-256 recorded in out/state/data_audit.md) was used: n = 30, ρ = 0.8, σ = 1, intercept included, stationary initial condition, R = 20000 replications (n_replications), seed 20261029 (random_seed). No data issues were found (data_issues = []). The only exclusion rule (drop replications whose ρ̂ is not finite) removed 0 replications, so n_analysed = 20000 (out/exclusions.csv).

# Method

  • Analytical approximation: −(1+3ρ)/n with n = 30, the design series length (bias_analytical). This formula is the leading term of an asymptotic expansion of E[ρ̂] − ρ in powers of 1/n. It is valid for a stationary process (|ρ| < 1) with an estimated intercept. Its error is of order O(n⁻²), and the constant in that error depends on ρ and grows as ρ approaches 1. So the formula is accurate in the sense that n·(bias − approximation) → 0 as n → ∞. It is not an exact finite-sample result. It can also be noticeably off at small n when ρ is near the unit root.
  • Monte Carlo: I used numpy.random.default_rng(20261029). For each replication, y_1 is drawn from N(0, σ²/(1−ρ²)) for all R series. All innovations, an R × (n−1) N(0, σ²) array, are then drawn and the recursion is run with c = 0. ρ̂ is the OLS slope of y_t on (1, y_{t−1}) for t = 2,…,n, computed in closed form with demeaned regressors. Bias = mean(ρ̂) − ρ, and its MC SE = sd(ρ̂)/√R.
  • Baseline: the textbook asymptotic SE √((1−ρ²)/n) (se_asymptotic), which carries no bias correction.

# Results

  • Analytical bias: bias_analytical = −0.1133.
  • Monte Carlo bias: bias_mc = −0.1237 (MC SE bias_mc_se = 0.00105). The mean of ρ̂ is rho_hat_mean = 0.6763 against a true value of 0.8.
  • Discrepancy: (bias_mc − bias_analytical)/SE = discrepancy_se_units = −9.85. The approximation captures about 92% of the actual bias, so it understates the bias by about 0.010, roughly 8% (relative error −0.084 in out/diagnostics.json). With 20000 replications, this gap is far outside Monte Carlo noise.
  • Sampling dispersion: rho_hat_sd_mc = 0.149, compared with se_asymptotic = 0.110 (ratio ≈ 1.36 in diagnostics). The bias is about 0.83 of the actual sampling sd, so it is not negligible for inference.
  • Sensitivity (diagnostics only, not a required key): using the effective sample size n − 1 = 29 gives −0.1172, which still differs from bias_mc by −6.1 MC SEs.

# Uncertainty

The only stochastic uncertainty is Monte Carlo error. bias_mc_se = 0.00105 gives a 95% interval of about [−0.1258, −0.1216] for the true finite-sample bias at this design (out/diagnostics.json), and this interval excludes bias_analytical. The analytical value is deterministic. The result is reproducible exactly with the fixed seed, and a clean re-run gave byte-identical output (out/state/checks.md).

# Limitations and open issues

  • The size of the discrepancy is consistent with what an approximation of this kind should do: it is a first-order (O(1/n)) term and drops O(n⁻²) terms, which matter at n = 30 with ρ = 0.8. The ~10-SE discrepancy shows that the approximation is not exact at this design. It does not show that the formula is "wrong". Its sign, order of magnitude and about 92% of its size match the simulation.
  • The Monte Carlo evidence covers a single design point only: n = 30, ρ = 0.8, Gaussian errors, stationary start, intercept included, c = 0. It cannot establish how accurate the approximation is at other n or ρ, under non-Gaussian errors, with other initial conditions, or near or at a unit root. It also does not prove the asymptotic rate; that is a theoretical result.
  • It is ambiguous whether "n" in the formula means the series length (30) or the number of regression observations (29). Following the task wording, I used 30. Either choice leaves a statistically significant gap.
  • σ does not affect ρ̂, because ρ̂ is scale-invariant, so σ = 1 is innocuous.
Files · main
Menu

Theme