我正在使用以下代码模拟 10000 个数据集,每个数据集长度为 20,它们遵循滞后 1 的自回归模型:
set.seed(1)
N = 20
n.reps <- 10000
burn.in = 50
total <- N + burn.in
x <- matrix(NA, n.reps, total)
x[ , 1] <- 0.1
noise <- rnorm(n.reps*total, 0, 0.1)
for(j in 1:n.reps)
for(i in 2:total)
x[j, i] <- 0.5*x[j, i-1] + noise[j + i]
x <- x[ , -(1:burn.in) ]
然后我使用两个线性回归估计了每个观察到的路径的自回归系数(在这种情况下为 0.5):
res1 <- res2 <- numeric(n.reps)
for(i in 1:n.reps)
{
res1[i] <- lm(x[i, 2:N] ~ -1 + I(x[i, 1:(N-1)]))$coef
res2[i] <- lm(x[i, 2:N] ~ I(x[i, 1:(N-1)]))$coef[2]
}
mean(res1) # 0.4687619
mean(res2) # 0.3845817
在第一行中,我拟合了正确的线性模型,而在第二行中,我包含了数据生成过程中不存在的截距。我希望这两种方法都能给我自回归系数的无偏估计,但看起来包括截距会使估计偏向下。随着样本量 N 的增加,偏差消失。
第二个线性模型嵌套了真实模型,因此我预计在拟合较大模型时估计值的方差会更高,但不会出现偏差。所以我的问题是:我做错了吗?谢谢!