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

Nan*_*ndu 0 r time-series forecasting

我每个周期工作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()
Run Code Online (Sandbox Code Playgroud)

结果图是 预测图

但我对预测并不满意.有没有办法让预测看起来与之前的价值趋势相似(见图表)?

Rob*_*man 8

您只需要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()).因此,forecast()充当predict()的包装器,并将以通用格式(预测类)获取的信息打包.我们还定义了一个默认的predict()方法,该方法在没有现有的predict()函数时使用,并调用相关的forecast()函数.因此,predict()方法并行预测()方法,但后者提供更可用的一致输出.

请尝试以下方法.

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

在此输入图像描述