簡體   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