繁体   English   中英

使用ARIMA预测一个月的每日数据的时间序列

[英]Time series prediction of daily data of a month using ARIMA

我每个周期工作30天(每月),因此历史数据集中大约有2个周期。

R脚本是

library(forecast)
value <- c(117.2 , 224.2 , 258.0 , 292.1 , 400.1 , 509.9 , 626.8 , 722.9 , 826.1 , 883.6,916.6, 1032.1, 1151.2, 1273.4 ,1391.8, 1499.2, 1532.5 ,1565.9 ,1690.9, 1813.6,1961.4 ,2102.8 ,2208.2, 2256.8, 2290.8 ,2413.7, 2569.4 ,2730.3, 2882.9 ,2977.5, 117.2 , 224.2 , 258.0 , 292.1 , 400.1 , 509.9 , 626.8 , 722.9 , 826.1 , 883.6,916.6, 1032.1, 1151.2, 1273.4 ,1391.8, 1499.2, 1532.5 ,1565.9 ,1690.9, 1813.6,1961.4 ,2102.8 ,2208.2, 2256.8, 2290.8 ,2413.7, 2569.4 ,2730.3, 2882.9 ,2977.5)

sensor<-ts(value,frequency=30)#daily data of month,here only 2 month's data
fit <- auto.arima(sensor)
LH.pred<-predict(fit,n.ahead=30)
plot(sensor,ylim=c(0,4000),xlim=c(0,5),type="o", lwd="1")
lines(LH.pred$pred,col="red",type="o",lwd="1")
grid()

结果图是 预测图

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

您要求大量的auto.arima()仅使用两个月的数据来查找模型。 至少可以通过建议季节差异有所帮助。 此外,请勿使用predict forecast功能好得多。

出于某种原因,为什么forecast()是“更精细的”,请参阅2008年7月的《统计软件杂志 》,尤其是4.4节:

Forecast()函数是通用函数,具有用于各种时间序列模型的S3方法。 它根据时间序列模型计算点预测和预测间隔。 存在使用ets(),auto.arima(),Arima(),arima(),ar(),HoltWinters()和StructTS()拟合的模型的方法。

ts对象还有一种方法。 如果将时间序列对象作为第一个参数传递给Forecast(),则该函数将根据第2节的指数平滑算法生成预测。

在大多数情况下,存在一个现成的predict()函数,旨在执行几乎相同的操作。 不幸的是,predict()函数产生的对象在每种情况下都包含不同的信息,因此无法为结果构建通用函数(例如plot()和summary())。 因此,相反,预报()充当了预报()的包装器,并将以通用格式(预报类)获得的信息打包。 我们还定义了一个默认的predict()方法,该方法在不存在现有的predict()函数时使用,并调用相关的Forecast()函数。 因此,预报()方法与预报()方法并行,但是后者提供更有用的一致输出。

请尝试以下方法。

fit <- auto.arima(sensor,D=1)
LH.pred <- forecast(fit,h=30)
plot(LH.pred)
grid()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM