經常使用時間序列分析方法

#平滑法框架

     #滑動平均法函數

     #霍爾特指數平滑法spa

     #霍爾特-溫特指數平滑法code

     #平滑法應用場景數學

         #平滑法之移動平均法it

             #簡單移動平滑(Single Moving Average)io

             #指數平滑(Exponential Moving Average)ast

             #簡單的移動平滑和指數平滑法案例基礎

          #平滑法之霍爾特指數平滑法方法

          #平滑法之霍爾特溫特指數平滑法

             #霍爾特溫特指數平滑法案例

#ARMA(ARIMA)法

 

附件是數據

 

 

  •  平滑法

滑動平均法

    處於恆定水平和沒有季節性變更的時間序列

 

霍爾特指數平滑法

    有趨勢性但沒有季節性因素的時間序列

 

霍爾特-溫特指數平滑法

    有趨勢性且有季節性變更趨勢的時間序列

 

  • ARMA(ARIMA)法

    理論上能夠針對數據產生的機理構建動態模型,其實是根據數據擾動項之間相關性結構構建預測模型

    優勢:該方法在一個統一的框架下適用與全部的時間序列

    缺點:模型造成須要基於知識和經驗斷定

 

  • 平滑法應用場景

                                滑動平均法

 

                    霍爾特指數平滑法

            霍爾特-溫特指數平滑法

 

 

 

  • 平滑法之移動平均法

    

簡單移動平滑(Single Moving Average)

    簡單移動平均認爲最近 N 期的數據對當前數據有預測做用,並且認爲這 N 期數據的影響大小是相等的

 

數學表達式

    n表示移動平均的期數,n越長,擬合曲線越平滑;n越短,對近期變化越敏感

 

 

指數平滑(Exponential Moving Average)

    指數平滑認爲最近各期的影響權重會隨着時間間隔的變大而呈現指數衰減

 

數學表達式

 

    平滑係數α設定較大時,近期數據的權重變大,適合預測對近期敏感的時間序列數據,而α設定較小時則適合變化緩慢的時間序列數據, α的經驗值爲0.05到0.3之間

 

簡單的移動平滑和指數平滑法案例

#簡單的移動平滑和指數平滑法
#股票預測案例

> library(TTR)
> data(ttrc)#股票數據

#SMA() 表示簡單的移動平滑
> SMA(1:5,n=3)  # n=3 表示平均移動的期數3
[1] NA NA  2  3  4

#EMA() 表示指數平滑
> EMA(1:5,n=3,ratio = 0.2) # ratio表示係數α,例如最後一個預測數據根據公式等於2.92 = 5.0*0.2+2.40*2.92
[1]   NA   NA 2.00 2.40 2.92

> sma.20 <-SMA(ttrc[,"Close"], 20) #去前面的20期作平滑統計
> tail(sma.20) #獲取向量、矩陣、表、數據框架或函數或最後一個部分,head()開頭部分
[1] 51.6855 51.6930 51.7640 51.8470 51.8945 51.9440
> plot.ts(sma.20)  #以下圖

 

  • 平滑法之霍爾特指數平滑法

不考慮週期性時,而且當數據有 向上或向下的線性趨勢時,可使用 霍爾特指數平滑法(Holt Exponential Moving Average)進行預測

 

這種方法是指數平滑方法中的一種,其認爲序列是存在一個較固定的趨勢γ,那麼第 t 期的估計值應該爲第 t-1 期的觀測值加上固定趨勢的影響

每一期的固定趨勢會受到隨機因素的影響不恆等於r,因此r自己是一個隨機序列:

 

加入平滑係數 𝛼 獲得第 t 期的平滑值爲:

 

因爲r自己是一個隨機序列,天然也能夠被平滑:

 

𝑟_𝑡稱爲趨勢序列,因此霍爾特指數平滑法是含有兩個參數α和β的平滑方法

 

 

  • 平滑法之霍爾特溫特指數平滑法

當時間序列 除了趨勢性以外,還表現出 明顯的週期性或季節性時,可使用 霍爾特溫特指數平滑法(HoltWinters)進行預

    

HoltWinters來源於Holt指數平滑法,在其基礎上增長了季節項,而季節效應可分爲累加與累積兩種

 

累加公式以下

累積公式以下

 

二者比較

 

霍爾特溫特指數平滑法案例

#方式一

> par(mfrow = c(2,1))
> tsHW <- HoltWinters(tsdata)#霍爾特溫特指數平滑法默認是累加的 
> plot(tsHW) #下圖中上部分
> tsHW <- HoltWinters(tsdata,seasonal = 'multi') #默認是累加的,這裏用累乘的方法
> plot(tsHW) #下圖中下部分,紅色線是預測值,藍色是置信區間
> tsHW.Pred<-predict(tsHW,12, prediction.interval = TRUE) #模型進行預測 predict()等於調用predict.HolWinters()進行預測
                                                          #prediction.interval = TRUE 給出預測區
                                                          #12表示預測 12個月
> tsHW.Pred
              fit      upr      lwr
Jan 1961 447.0559 466.8057 427.3061
Feb 1961 419.7123 440.2920 399.1326
Mar 1961 464.8671 486.7712 442.9630
Apr 1961 496.0839 519.3350 472.8329
May 1961 507.5326 531.9278 483.1375
Jun 1961 575.4509 602.1935 548.7083
Jul 1961 666.5923 696.5558 636.6288
Aug 1961 657.9137 688.6454 627.1821
Sep 1961 550.3088 578.9777 521.6398
Oct 1961 492.9853 520.9553 465.0153
Nov 1961 420.2073 446.9458 393.4688
Dec 1961 465.6345 487.9686 443.3004
> plot(tsHW,tsHW.Pred)

 

#方式二:使用 forecast包中的 hw方法()

> library(forecast)
> par(mfrow = c(2,1))
> plot(hw(tsdata,h = 12))  #以下圖上部分
> plot(hw(tsdata,seasonal='multi',h = 12)) #以下圖下部分

 

相關文章
相關標籤/搜索