我将 R 与 Rob Hyndman 的预测版本 5.4 插件一起使用。这是一个非常好的软件包,但它的行为似乎很奇怪,预测相似数据的结果大相径庭。我很确定这与此处数据末尾生成的警告消息有关,但我不确定如何修复它。
library(forecast)
v <- vector("numeric")
v <- append(v,0.0)
v <- append(v,115.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,115.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,115.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,117.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,117.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,117.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,113.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,112.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,120.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,119.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
series <- ts(v, frequency=12)
series
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1 0 115 0 0 0 115 0 0 0 115 0 0
2 0 0 117 0 0 0 117 0 0 0 117 0
3 0 0 0 0 113 0 0 0 112 0 0 0
4 0 0 0 0 120 0 0 0 119 0 0 0
a <- auto.arima(series)
// Note there is no error
v <- vector("numeric")
v <- append(v,0.0)
v <- append(v,109.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,120.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,114.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,125.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,135.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,130.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,104.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,114.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,126.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,114.0)
v <- append(v,0.0)
v <- append(v,0.0)
v <- append(v,0.0)
series <- ts(v, frequency=12)
a <- auto.arima(series)
Warning message:
In max(which(abs(testvec) 1e-08)) :
no non-missing arguments to max; returning -Inf
series
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1 0 109 0 0 0 120 0 0 0 114 0 0
2 0 0 125 0 0 0 135 0 0 0 130 0
3 0 0 0 0 104 0 0 0 114 0 0 0
4 0 0 0 0 126 0 0 0 114 0 0 0
您可以看到数据集几乎相同,但第二个会引发警告消息。如果您复制并粘贴到 R 中,您可以看到第二个的预测也是关闭的。
有想法该怎么解决这个吗?
* 更新 *
请注意,此示例是在大约一天的 R 经验后整理的,并且只是记录器文本。使用 JRI(R 的 Java 接口),我想出了以下方法来模拟 ArrayList。早期的原型并不总是最漂亮的。
eval(re, "v <- vector(\"numeric\")");
for (int i = 0; i < months.size(); i++) {
eval(re, "v <- append(v," + months.get(i) + ")");
}