在业余时间,我尝试提高我的预测技巧和今天的问题,重点是预测多个回归量。我创建了一个受两个回归量影响的时间序列,但想知道如何用它们进行预测。
library(forecast)
我尝试了以下内容:
首先是我的时间序列:
ts.series3 <- structure(c(313, 253, 230, 258, 261, 303, 266, 269, 245, 274,
346, 252, 283, 286, 260, 365, 295, 268, 301, 304, 353, 310, 313,
285, 319, 403, 294, 330, 333, 303, 425, 343, 312, 350, 354, 411,
361, 366, 333, 469, 380, 346, 487, 394, 359, 404, 511, 372, 418
), .Tsp = c(2003.08333333333, 2007.08333333333, 12), class = "ts")
上面的时间序列基于ts.trend
(下方)中的趋势显示,并由修饰符修改。如果第一个修饰符是相关的,则值增加25%,而在第二个修饰符的情况下,该值减少10%。两者都适用时,它们会增加15%。
ts.trend <- structure(c(250, 253, 255, 258, 261, 264, 266, 269, 272, 274,
277, 280, 283, 286, 289, 292, 295, 298, 301, 304, 307, 310, 313,
316, 319, 323, 326, 330, 333, 337, 340, 343, 347, 350, 354, 357,
361, 366, 370, 375, 380, 385, 390, 394, 399, 404, 409, 414, 418
), .Tsp = c(2003.08333333333, 2007.08333333333, 12), class = "ts")
两个回归量的多变量时间序列:
modifiers <- structure(c(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(60L,
2L), .Dimnames = list(NULL, c("Adjust1", "Adjust2")), .Tsp = c(2003.08333333333,
2008, 12), class = c("mts", "ts"))
然后我尝试制作以下模型:
fit.series3 <- auto.arima(ts.series3,xreg=window(modifiers,end=2007.16))
fcast.series3 <- forecast(fit.series3,xreg=window(modifiers,start=2007.161))
代码看起来工作得很好,但是情节(见下文)并没有真正意义,因为没有发现回归量,你会发现预测会或多或少地跟随趋势线。是否有人可以提供一些有关这里发生的事情的见解?
plot(fcast.series3)
当我没有使用任何回归变量时,预测图看起来如下。我对这个预测比对上图中的预测更有信心。我使用以下代码行来生成图表:
fit.series3clean <- auto.arima(ts.series3)
fcast.series3clean <- forecast(fit.series3clean)
plot(fcast.series3clean)
我想知道是否有人通过多变量xreg值了解我的预测情况。此外,我很想知道其他多变量回归预测方法。
答案 0 :(得分:2)
看一下您的拟合模型:
> fit.series3
Series: ts.series3
ARIMA(0,1,1)(0,1,0)[12]
Coefficients:
ma1 Adjust1 Adjust2
-0.7586 80.1919 285.6239
s.e. 0.0832 0.0842 NaN
sigma^2 estimated as 71.55: log likelihood=-128.38
AIC=264.76 AICc=266.05 BIC=271.09
Warning message:
In sqrt(diag(x$var.coef)) : NaNs produced
系数Adjust2
存在问题,标准错误为NaN
。
以下代码显示了问题:
> window(diff(diff(modifiers[,2],12)),end=2007.16)
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2004 0 0 0 0 0 0 0 0 0 0
2005 0 0 0 0 0 0 0 0 0 0 0 0
2006 0 0 0 0 0 0 0 0 0 0 0 0
2007 0 0
在拟合期间,两次差异Adjust2
始终为零,使得系数基本上未定义(并且具有无限方差)。