時間序列 預測分析 R語言


在對短期數據的預測分析中,我們經常用到時間序列中的指數平滑做數據預測,然后根據不同。

下面我們來看下具體的過程

x<-data.frame(rq=seq(as.Date('2016-11-15'),as.Date('2016-11-22'),by='day'),
          sr=c(300,697,511,1534,1155,1233,1509,1744))

xl<-ts(x$sr) #構建時間序列

plot.ts(xl)

從上圖的結果來看,這是一個增長趨勢的時間序列。

模型選擇上我們可以依據以下標准進行判斷,自己要選用的時間序列算法。

簡單指數平滑法——處於恆定水平和沒有季節性變動的時間序列。
霍爾特指數平滑法——有增長或下降趨勢的,但沒有季節性因素的時間序列
霍爾特-溫特指數平滑法——有增長或下降趨勢,且有季節性變動趨勢的時間序列

按照上面的的時間序列趨勢來看,數據有增長的趨勢,不存在季節性因素,這里我們要選擇霍爾特指數平滑法。

接下來我們構建時間序列模型
model<-HoltWinters(xl,gamma=FALSE,l.start=300,b.start=200)

這里的參數,gamma 是用於霍爾特-溫特指數平滑法,這里要用false屏蔽,同樣構建簡單指數平滑時也要把beta參數屏蔽,l.start 通常用的是時間序列的第一個值,b.start表示斜率,這里需要個人基於數據增長趨勢給一個預估值,也可以用簡單的方法,把較近的兩個值進行相見得到一個預估值。

model

Holt-Winters exponential smoothing with trend and without seasonal component.

Call:
HoltWinters(x = xl, gamma = FALSE, l.start = 300, b.start = 200)

Smoothing parameters:
 alpha: 0.2437346
 beta : 0.01562883
 gamma: FALSE

Coefficients:
       [,1]
a 1717.1539
b  203.1948    

從模型結果來看
alpha 和 beta 參數來看都相對較低(在0到1之間),數值較低說明較遠的時間點上的數值權重較高。

plot(model)

從模型的預測值和實際值來看,預測后期的數據重合度較高,整體上模型預測效果應該相對不錯。

library(forecast)
premodel<-forecast.HoltWinters(model, h=7)  #預測未來7天的數據走勢
premodel

Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
9 1920.349 1481.805 2358.892 1249.654 2591.044
10 2123.543 1671.763 2575.324 1432.605 2814.482
11 2326.738 1861.705 2791.772 1615.531 3037.946
12 2529.933 2051.626 3008.240 1798.425 3261.441
13 2733.128 2241.522 3224.733 1981.282 3484.974
14 2936.323 2431.390 3441.255 2164.095 3708.550
15 3139.517 2621.227 3657.808 2346.861 3932.174

plot.forecast(premodel)

從增長趨勢來看預測結果吻合度較高。

接下來,我們要檢驗下模型的預測誤差是否非存在自相關性,

premodel$residuals

Time Series:
Start = 1
End = 8
Frequency = 1
[1] NA NA 11.000000 831.277018 46.457606 -90.251162 4.704513 35.498288

查看模型預測誤差情況,里面存着NA值,我們需要先去掉

b<-premodel$residuals[-which(is.na(premodel$residuals))]
acf(b,lag.max=7,plot=TRUE)

從結果來看,模型滯后5階內都沒有超出置信邊界。

Box.test(premodel$residuals,lag=5, type="Ljung-Box")

Box-Ljung test

data:  premodel$residuals
X-squared = 1.01, df = 5, p-value = 0.9618

檢驗的結果來看p值較大,可能存在自相關性。由於樣本整體較小,預測誤差服從零均值,方差不變的正太分布可能性較小。

整體上來看,上面的預測走勢應該是相對比較接近真實情況,這里也給我們一個反思的地方,要使得模型具有足夠的說服力,樣本數據應該較大的情況下才能得出更准確的預測模型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM