7

我有以下 R 代码

library(forecast)
value <- c(1.2, 1.7, 1.6, 1.2, 1.6, 1.3, 1.5, 1.9, 5.4, 4.2, 5.5, 6, 5.6, 
6.2, 6.8, 7.1, 7.1, 5.8, 0, 5.2, 4.6, 3.6, 3, 3.8, 3.1, 3.4, 
2, 3.1, 3.2, 1.6, 0.6, 3.3, 4.9, 6.5, 5.3, 3.5, 5.3, 7.2, 7.4, 
7.3, 7.2, 4, 6.1, 4.3, 4, 2.4, 0.4, 2.4)

sensor<-ts(value,frequency=24)
fit <- auto.arima(sensor)
LH.pred<-predict(fit,n.ahead=24)
plot(sensor,ylim=c(0,10),xlim=c(0,5),type="o", lwd="1")
lines(LH.pred$pred,col="red",type="o",lwd="1")
grid()

结果图是 预言

但我对这个预测并不满意。有什么方法可以使预测看起来与之前的价值趋势相似(见图)?

4

4 回答 4

20

当您将频率定义为 24 时,我假设您每个周期使用 24 小时(每天),因此在您的历史数据集中大约有 2 个周期。一般来说,这是启动时间序列预测的有限样本数据。我建议您获取更多数据,然后您可以再次进行预测模型。您拥有的数据越多,它就越能捕捉到季节性,从而预测未来的价值。由于 auto.arima 等可用的自动算法有限,通常默认使用类似于移动平均线的东西。您的数据集应该得到比移动平均线更好的东西,因为周期中有一些季节性。有许多预测算法可以帮助您更好地塑造远期曲线;Holt-Winters 或其他指数平滑方法可能会有所帮助。然而,自动。

获取更多数据并执行相同的例程将改善您的图表。就个人而言,我更喜欢使用forecastover predict; 数据似乎和图表一样好一点,因为它显示了您的置信区间。在代码中,我还通过复制两个句点稍微扩展了数据集,所以我们得到了四个句点。看下面的结果:

library(forecast)
value <- c(1.2,1.7,1.6, 1.2, 1.6, 1.3, 1.5, 1.9, 5.4, 4.2, 5.5, 6.0, 5.6, 6.2, 6.8, 7.1, 7.1, 5.8, 0.0, 5.2, 4.6, 3.6, 3.0, 3.8, 3.1, 3.4, 2.0, 3.1, 3.2, 1.6, 0.6, 3.3, 4.9, 6.5, 5.3, 3.5, 5.3, 7.2, 7.4, 7.3, 7.2, 4.0, 6.1, 4.3, 4.0, 2.4, 0.4, 2.4, 1.2,1.7,1.6, 1.2, 1.6, 1.3, 1.5, 1.9, 5.4, 4.2, 5.5, 6.0, 5.6, 6.2, 6.8, 7.1, 7.1, 5.8, 0.0, 5.2, 4.6, 3.6, 3.0, 3.8, 3.1, 3.4, 2.0, 3.1, 3.2, 1.6, 0.6, 3.3, 4.9, 6.5, 5.3, 3.5, 5.3, 7.2, 7.4, 7.3, 7.2, 4.0, 6.1, 4.3, 4.0, 2.4, 0.4, 2.4)
sensor <- ts(value,frequency=24) # consider adding a start so you get nicer labelling on your chart. 
fit <- auto.arima(sensor)
fcast <- forecast(fit)
plot(fcast)
grid()
fcast
         Point Forecast     Lo 80    Hi 80      Lo 95    Hi 95
3.000000       2.867879 0.8348814 4.900877 -0.2413226 5.977081
3.041667       3.179447 0.7369338 5.621961 -0.5560547 6.914950
3.083333       3.386926 0.7833486 5.990503 -0.5949021 7.368754
3.125000       3.525089 0.8531946 6.196984 -0.5612211 7.611400
3.166667       3.617095 0.9154577 6.318732 -0.5147025 7.748892

四个周期的图表

于 2013-01-11T07:37:05.740 回答
2

auto.arima() 根据 AIC、AICc 或 BIC 值返回最佳 ARIMA 模型。根据您的“价值”数据集,它可能选择了 ARMA(1,0) 或 AR(1) 模型,如您所见,它往往会很快恢复到平均值。从长远来看,AR(1) 模型总是会发生这种情况,因此如果您想预测超过几个步骤,它就不是很有用。

您可以通过分析价值数据的 acf 和 pacf 来考虑拟合不同类型的模型。然后,您需要检查您的替代模型是否适合数据。

于 2014-03-23T15:15:07.097 回答
0

您可能需要考虑使用移动平均线来更准确地绘制预测图。

于 2013-01-11T06:49:09.620 回答
-3

我建议在https://code.google.com/p/ltp/上查看ltp 包,您还可以在https://github.com/matteoredaelli/predictoR 上查看 Web 前端

于 2014-08-05T13:01:08.570 回答