arima模型是時間序列分析中應用最廣泛的模型之一,arima(p,d,q)由三個部分組成
- ar(p):ar是autoregressive的縮寫,表示自回歸模型。含義是當前時間點的值等於過去若干個時間點的回歸——因為不依賴與別的解釋變數,只依賴於自己過去的歷史值,故稱為自回歸;如果依賴過去最近的p個歷史值,稱階數為p,記為ar(p)模型。
- i(d):i是integrated的縮寫,含義是模型對時間序列進行差分。因為時間序列分析要求平穩性,不平穩的序列需要通過一定手段轉化為平穩序列,一般採用的方法就是差分,d表示差分的階數。
如果d=0:xt
=xt'>如果d=1:xt
=xt'>xt=
xt−x
t−1'>如果d=2:xt
=xt'>xt=
xt−x
t−1'>xt=
(xt−
xt−1
)−(x
t−1−
xt−2
)=xt
−2xt
−1+x
t−2'>以此類推。
- ma(q):移動平均模型,和上面的移動平均法不同,這裡本質上還是回歸,含義是當前時間點的值等於過去若干個時間點的**誤差的回歸;**誤差=模型**值-真實值;如果序列依賴過去最近的q個歷史**誤差值,稱階數為q,即為ma(q)模型。
aic和bic,以及inlkhd都是越接近0表示模型越好
總的來說,holt-winters將時間序列訊號拆解為三個分量:
(1)平穩隨機訊號分量:
(2)趨勢訊號分量:
(3)週期性訊號分量:
有三個引數:
其中 α是資料平滑因子, 0 < α < 1;β是趨勢平滑因子,0 < β < 1; γ是季節改變平滑因子0 < γ < 1
對於三次指數平滑法,我們必須初始化乙個完整的」季節「的值。至於如何選擇引數α
'>α
α,β'>β
β,γ'>γ
γ,乙個比較笨拙但可行的方法是反覆試驗,定義乙個誤差,比如平均絕對誤差(mean absolute error,mae)或平均平方誤差(mean squared error,mse),設定幾個引數的範圍,然後找到範圍內誤差最小的那組引數值。
具體**實現:
arima和holter-winters是從不同的角度去分解時間序列訊號的演算法,兩種方法各有它考慮訊號的角度:holt-winters更多考慮的是如何做「平滑」;arima則主要是基於「回歸」的思想;在實際的時間序列分析問題中,面對更複雜的場景時,可能需要加入考慮其他的特徵或者加入非線性,都可以從這些經典演算法得到啟發來不斷改進和優化。
例如使用ensemble的思想將不同的演算法得到的結果作為特徵(或者說是「成分」)輸入到新的模型中,又或者將某個演算法中的平滑部分使用其他更巧妙的平滑方式取代,還可以借助神經網路來生成非線性特徵,使得模型可以學習到非線性;另外,所有的回歸演算法也都可以用來解決**問題。
回歸**模型的評估方法見先前的部落格:
時間訊號常考慮的組成成分:(1)趨勢;(2)季節性(或其他週期性);(3)噪音;(4)歷史狀態轉換;(5)本身的時間序列特徵;(6)其他。
此外,也有根據業務場景自身特點來分解訊號的,比如按不同地區來分解,或者按不同間隔粒度來分解等。
其他應用例項:
《演算法》學習筆記 演算法分析(1)
用於研究理解演算法的思想和方法 任務 科學家理解自然世界 策略 細緻地觀察真實世界的特點,通常還要有精確的測量 根據觀察結果提出假設模型 根據模型來 未來的事件 繼續觀察並核實 的準確性 如此反覆知道確認 和觀察一致 分類和類別 程式的執行時間。精確 近似 原理與通則 準確測量程式的執行時間是困難的...
時間序列分析 學習筆記(一)
import pandas as pd 匯入pandas 庫,主要用於資料集的匯入和資料的處理 import numpy as np 匯入numpy 庫,主要用於一些運算 import matplotlib.pyplot as plt 匯入matplotlib庫,主要用於繪製時序圖 from sta...
演算法 學習筆記
1.輸入輸出演算法至少有乙個或多個輸出 2.有窮性 3.確定性 4.可行性 1.正確性a.演算法程式沒有語法錯誤 b.演算法程式對於合法的輸入資料能夠產生滿足要求的輸出結果 c.演算法程式對於非法的輸入資料能夠得出滿足規格說明的結果 d.演算法對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果...