R语言时间序列分析——与有漂移的ARIMA差分模型有关的若干问题

标签:
r时间序列 |
当我们拟合ARIMA模型的时候,如果有差分,常数项是不包括在模型中的。在直接用ARIMA模型拟合有差分的模型时候,要小心。
∇x(t)=
φ*∇x(t-1)
+ w(t) (没有常数项)
例子:arima(x,order=c(1,1,0))
#(1) 的结果 与 arima(diff(x),order=c(1,0,0)) #(2)
的结果并不一样。
因为在(1)中,R会拟合
但是在(2)中,R会拟合
∇x(t) =
α
+
φ*∇x(t-1) +
w(t).
如果α
不等于0,那么两个拟合得到的结果一样。但是如果α
等于0,(1)中的拟合和预测都会出现问题。
如果α 不等于0,正确的做法是:
arima(x, order = c(1, 1, 0),
xreg=1:length(x))
#
(1+)
为什么这样做是正确的呢?机理是这样的,xreg = t,R将会用 y(t) =
x(t)-β*t 代替 x(t)
,这样,将会拟合
∇y(t)= φ*∇y(t-1) +
w(t),
或者
∇[x(t) - β*t] = φ*∇[x(t-1) -
β*(t-1)] + w(t)
简化后,有
∇x(t) = α + φ*∇x(t-1) + w(t) ,这里
α = β*(1-φ).
错误的预测:
fit1 = arima(gtemp, order=c(1,1,1))
fore1 = predict(fit1, 15)
nobs = length(gtemp)
ts.plot(gtemp,fore1$pred, col=1:2,
main="WRONG")
正确的预测:
fit2 = arima(gtemp, order=c(1,1,1),
xreg=1:nobs)
fore2 = predict(fit2, 15, newxreg=(nobs+1):(nobs+15))
par(mfrow=c(2,1))
ts.plot(gtemp,fore2$pred, col=1:2, main="RIGHT")
后一篇:R语言时间序列分析——季节模型