You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用rollapply带截距预测AR模型时预测值偏移问题排查

AR(3)模型拟合值偏移问题排查与解决

我模拟了一组截距为3的AR(3)数据:

set.seed(247)
library(astsa)
sim1 = 3+arima.sim(list(order=c(3,0,0), ar=c(-0.1,-0.3,-0.5)), n=60)
pacf(sim1)

使用arima()函数能正确估计系数:

est.1 = arima(x = sim1, order = c(3, 0, 0)) 
est.1

输出结果:

Coefficients:
          ar1      ar2      ar3  intercept
      -0.0614  -0.5098  -0.4286     2.9811

但使用zoo包的rollapply计算预测值时,结果与forecast包的拟合值存在偏移:

library(zoo)
library(forecast)  # 用于对比

f1 = rollapply(zoo(sim1), 4, function(w) {sum(c(1,w[1:3])*rev(est.1$coef))}, 
               align = "right",  partial = T)
plot(sim1,type="l")
lines(f1, col = 2, lwd = 2)  ## rollapply计算的结果
lines(fitted(est.1), col = 3, lwd = 2) ## forecast包的拟合值
legend(0.1, 6, legend=c("rollapply", "forecast fitted"), fill = c(2,3))

预测值对比图


问题原因

  1. AR模型参数定义理解偏差:
    R的arima()函数默认采用中心化建模逻辑,模型表达式为:
    [
    (X_t - \mu) = \phi_1(X_{t-1} - \mu) + \phi_2(X_{t-2} - \mu) + \phi_3(X_{t-3} - \mu) + \epsilon_t
    ]
    对应的拟合值计算公式应为:
    [
    \hat{X}t = \mu + \phi_1(X{t-1} - \mu) + \phi_2(X_{t-2} - \mu) + \phi_3(X_{t-3} - \mu)
    ]
    但代码中直接用sum(c(1,w[1:3])*rev(est.1$coef)),错误地将截距(\mu)与原始观测值直接加权求和,完全忽略了中心化的建模逻辑。

  2. 窗口与系数索引匹配错误:

    • 使用align="right"且窗口大小设为4时,窗口w包含[t-3, t-2, t-1, t]四个元素,但计算(\hat{X}_t)只需要前三个滞后项,窗口大小设为3即可满足需求。
    • rev(est.1$coef)反转了系数顺序:est.1$coef的默认顺序是ar1, ar2, ar3, intercept,反转后变成intercept, ar3, ar2, ar1,导致加权时系数与滞后项完全不对应。

修正后的代码

library(zoo)
library(forecast)

# 遵循中心化AR模型公式计算拟合值
f1_correct = rollapply(zoo(sim1), 3, function(w) {
  mu = est.1$coef["intercept"]
  phi = est.1$coef[c("ar1", "ar2", "ar3")]
  mu + sum(phi * (w - mu))
}, align = "right", partial = TRUE)

# 绘图对比验证
plot(sim1, type="l")
lines(f1_correct, col = 2, lwd = 2)  # 修正后的rollapply结果
lines(fitted(est.1), col = 3, lwd = 2)  # forecast拟合值
legend(0.1, 6, legend=c("修正后rollapply", "forecast fitted"), fill = c(2,3))

验证说明

修正后,rollapply计算的拟合值会和fitted(est.1)完全重合(前3个初始值因partial=TRUE处理逻辑略有差异,但整体趋势和数值完全匹配)。核心是严格遵循arima()函数的中心化建模逻辑,避免系数顺序和窗口索引的错误匹配。

内容的提问来源于stack exchange,提问作者Maverick Meerkat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:40:26