F5-conf-02 — Finite-sample bias of OLS for an AR(1) coefficient
Question
The model is a Gaussian AR(1), y_t = c + ρ y_{t−1} + ε_t, with c = 0 and σ = 1. The design is n = 30 and ρ = 0.8, with a stationary initial value. 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 E[ρ̂] − ρ ≈ −(1+3ρ)/n describe that bias at this design?
Data and exclusions
The only input is data/design.csv: 7 rows (n_input_rows), SHA-256 matching bundle.json. It specifies n = 30, ρ = 0.8, σ = 1, an intercept, a stationary y_1, R = 20000 replications and seed 20261029. No data problems were found (data_issues is empty). The only filtering rule drops replications with a non-finite ρ̂. It removed none, so n_analysed = n_replications = 20000 (out/exclusions.csv). Nothing is observed; all series are simulated.
Method
- Baseline (closed form). The baseline is
bias_analytical= −(1+3·0.8)/30 = −0.1133, evaluated at n = 30 as specified. Alongside it is the textbook asymptotic SE,se_asymptotic= √((1−ρ²)/n) = 0.1095. - Monte Carlo. I used
numpy.random.default_rng(20261029)(random_seed). The script first draws R stationary initial values y_1 ~ N(0, σ²/(1−ρ²)), then an R×(n−1) matrix of N(0, σ²) innovations. The series are built recursively with c = 0, and each replication is a fresh series of 30 observations. - Per-replication estimate. ρ̂ is the OLS slope from regressing y_t on (1, y_{t−1}) for t = 2..30, which is 29 regression observations. It is computed in vectorised demeaned form. For one replication it was checked against
numpy.linalg.lstsq. - Reported quantities.
bias_mc= mean(ρ̂) − ρ;bias_mc_se= sd(ρ̂)/√R;discrepancy_se_units= (bias_mc−bias_analytical)/bias_mc_se. - What kind of formula this is. −(1+3ρ)/n is the leading term of an asymptotic expansion in 1/n of E[ρ̂] − ρ. It is derived for a stationary Gaussian AR(1) with an estimated mean, and the error it leaves out is of order O(n⁻²). It is accurate in the sense that n·(E[ρ̂] − ρ) → −(1+3ρ) as n → ∞. It is not an exact finite-sample result. At fixed n, the left-out higher-order terms can be noticeable, especially when ρ is close to 1, where the expansion converges more slowly.
Results
| quantity | key | value |
|---|---|---|
| Analytical approximation | bias_analytical |
−0.11333 |
| Monte Carlo bias | bias_mc |
−0.12371 |
| MC standard error | bias_mc_se |
0.00105 |
| Mean of ρ̂ | rho_hat_mean |
0.67629 |
| SD of ρ̂ across replications | rho_hat_sd_mc |
0.14891 |
| Discrepancy in MC-SE units | discrepancy_se_units |
−9.85 |
| Asymptotic SE | se_asymptotic |
0.10954 |
- Size of the bias. OLS clearly underestimates ρ: the mean estimate is 0.676 against a true value of 0.8 (
rho_hat_mean). The median is 0.699 (rho_hat_median), and 79.3% of the estimates fall below ρ (share_rho_hat_below_rho). - How well the formula does. The formula gets the sign and roughly the size of the bias right. The simulated bias is 1.09 times the approximation (
ratio_bias_mc_to_analytical), a difference of −0.0104 (bias_mc_minus_analytical). So the formula understates the bias by about 9%. - The gap is not simulation noise. The difference is about 9.9 Monte Carlo SEs (
discrepancy_se_units). - Using 29 instead of 30 in the formula. With n−1 = 29, the number of regression observations, the approximation becomes −0.1172 (
bias_analytical_neff). The gap narrows but stays at 6.1 MC SEs (discrepancy_se_units_neff). - The bias is about as large as the sampling error. The bias is comparable in size to the textbook asymptotic SE (0.110,
se_asymptotic). The simulated sampling SD is 1.36 times larger than that SE (ratio_sd_mc_to_se_asymptotic).
Uncertainty
- Monte Carlo error. The only randomness is simulation noise. The MC SE of the bias is 0.00105 (
bias_mc_se), so an approximate 95% MC interval for the bias is −0.1237 ± 0.0021. That interval excludes the analytical value −0.1133. - Reproducibility. The results are fully reproducible for the given seed. A different seed would move
bias_mcby roughly ±0.001 (one MC SE). - No uncertainty in the formula value.
bias_analyticalandse_asymptoticare deterministic functions of the design.
Limitations and open issues
- What the discrepancy does and does not mean. The statistically clear gap (
discrepancy_se_units≈ −9.9) does not show that the Marriott–Pope/Kendall formula is "wrong". The formula is a first-order O(1/n) approximation, and a difference of order 1/n² at n = 30 with ρ = 0.8 is what one expects. The Monte Carlo only shows that, at this one design point, the approximation captures about 92% of the true bias (1/1.09) and leaves a small but real remainder. - What the Monte Carlo cannot tell us. It cannot establish how fast the approximation error shrinks with n. It cannot say how the formula performs at other values of (n, ρ), with non-Gaussian errors, without an intercept, or with a non-stationary start. Only one (n, ρ) point was simulated.
- Which n to plug in. The task specifies n = 30, the series length. The regression uses 29 observations, and the result with that choice is reported as a sensitivity check (
bias_analytical_neff). - Sampling-distribution caveat. ρ̂ is skewed to the left; the median lies above the mean (
rho_hat_median). The mean bias therefore does not fully describe the sampling distribution. - Scope. No higher-order bias formulas or bias corrections were evaluated; the task does not require them.