据我所知,包中的arimax函数是唯一适合干预模型传递函数的包。尽管有时需要它,但它缺少预测功能。TSAR
以下是解决此问题的方法吗,利用了优秀的forecast软件包?预测间隔是否正确?在我的示例中,组件的标准错误是“关闭”的。
- 使用预测包 arima 函数确定干预前噪声序列并添加任何异常值调整。
- 拟合相同的模型,
arimax但添加传递函数 - 获取传递函数的拟合值(来自 的系数
arimax)并将它们作为 xreg 添加到 中arima。 - 预测与
arima
library(TSA) library(forecast) data(airmiles) air.m1<-arimax(log(airmiles),order=c(0,0,1), xtransf=data.frame(I911=1*(seq(airmiles)==69)), transfer=list(c(1,0)) )空气.m1
输出:
Coefficients:
ma1 intercept I911-AR1 I911-MA0
0.5197 17.5172 0.5521 -0.4937
s.e. 0.0798 0.0165 0.2273 0.1103
sigma^2 estimated as 0.01223: log likelihood=88.33
AIC=-168.65 AICc=-168.09 BIC=-155.02
这是过滤器,延长了 5 个数据周期
tf<-filter(1*(seq(1:(length(airmiles)+5))==69),filter=0.5521330,method='recursive',side=1)*(-0.4936508)
forecast.arima<-Arima(log(airmiles),order=c(0,0,1),xreg=tf[1:(length(tf)-5)])
forecast.arima
输出:
Coefficients:
ma1 intercept tf[1:(length(tf) - 5)]
0.5197 17.5173 1.0000
s.e. 0.0792 0.0159 0.2183
sigma^2 estimated as 0.01223: log likelihood=88.33
AIC=-168.65 AICc=-168.28 BIC=-157.74
然后预测
predict(forecast.arima,n.ahead = 5, newxreg=tf[114:length(tf)])