我是时间序列的新手,我正试图弄清楚 R 中的场景之外到底发生了什么。假设我有 MA 过程:
在哪里是 iid 标准正常。为了具体,让,和. 我已经实现了这个过程的模拟,并在上面拟合了一个 MA(2) 模型:
set.seed(47)
n = 200
a = rnorm(n,0,1)
a0 = rnorm(1,0,1)
an1 = rnorm(1,0,1)
theta = c(0.2, 0.5)
y = NULL
y[1] = a[1] + theta[1]*a0 + theta[2]*an1
y[2] = a[2] + theta[1]*a[1] + theta[2]*a0
for (t in 3:n) {
y[t] = a[t] + theta[1]*a[t-1] + theta[2]*a[t-2]
}
MAfit = arima(y,order = c(0,0,2))
现在,当我从这个 arima() 调用中获取残差时,第一个残差是 2.745251。但是,当我减去根据 arima() 产生的平均值的估计,我得到 3.122668。那么 R 是如何计算第一个残差的呢?我用于这些各自计算的代码是:
residuals(MAfit)[1] (returns 2.745251)
y[1] - coef(MAfit)[3] (returns 3.122668)
我的理解是,对于, 我们有:
从重新排列我的第一个方程并仅使用预期值和. 我哪里出错了?谢谢!
请注意,我在使用给我的 TS 数据时遇到了同样的问题,所以我认为这不是我的 MA(2) 实现的问题。