我正在阅读《预测:原则与实践》一书,同时尝试“手动”编写所有内容,以便更好地理解。
我发现了一些我无法解释的东西:
- 给定由 AR(2) 过程生成的时间序列,
- 我尝试将其建模为线性回归问题
- 从我到目前为止所读到的内容来看——应该完全有可能使用这两种方法找到匹配的系数。
不幸的是,我得到了不同的结果。问题是为什么?
AR(p) 模型由以下等式描述:
我已经将时间序列滞后了 1 和 2,并创建了具有三列的经典数据框:
- 当前 x
- t-1 x
- t-2 x 并执行回归。
R代码示例如下:
library(xts)
x <- arima.sim(model = list(order=c(2,0,0), ar=c(0.6,0.3)), n=100)
x.ts <- as.xts(x)
# Generate dataframe
x.lag1 <- lag(x.ts, 1)
x.lag2 <- lag(x.ts, 2)
x.df <- data.frame(
x.curr=x.ts[-c(1:2)],
x.lag1=x.lag1[-c(1:2)],
x.lag2=x.lag2[-c(1:2)]
)
# Fit regression
fit.x <- lm(x.curr ~ ., data=x.df)
summary(fit.x)
# Fit ARIMA
arima(x = x.ts, order = c(2,0,0), include.mean = FALSE)
结果完全不同:
#Regression results
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.08173 0.11102 0.736 0.463
x.lag1 0.54860 0.10082 5.441 4.11e-07 ***
x.lag2 0.15724 0.09883 1.591 0.115
# Arima results
ar1 ar2 intercept
0.5919 0.1645 0.5572
s.e. 0.0983 0.1009 0.4268
系数相似,但略有不同。问题:
- 为什么会这样?AR(p)过程中的每个观察中都包含这个随机误差分量吗?
- 如何使用回归对具有差分(非平稳)的 ARMA 过程进行建模?我应该像这样将回归模型拟合到差异和滞后的时间序列吗?