【Python】Python中的经典时间序列预测模型总结
時(shí)間序列預(yù)測(cè)是機(jī)器學(xué)習(xí)中一個(gè)經(jīng)常被忽視的重要領(lǐng)域。時(shí)間序列在觀察之間添加了顯式的順序依賴(lài)性:時(shí)間維度。這個(gè)額外的維度既是一個(gè)約束,也是一個(gè)提供額外信息來(lái)源的結(jié)構(gòu)。
時(shí)間序列
時(shí)間序列分析
使用經(jīng)典統(tǒng)計(jì)時(shí),主要關(guān)注的是時(shí)間序列的分析。
時(shí)間序列分析涉及開(kāi)發(fā)能夠最好地捕捉或描述觀察到的時(shí)間序列的模型,以了解根本原因。該研究領(lǐng)域?qū)で髸r(shí)間序列數(shù)據(jù)集背后的“為什么”。
時(shí)間序列預(yù)測(cè)
在時(shí)間序列數(shù)據(jù)的經(jīng)典統(tǒng)計(jì)處理中,對(duì)未來(lái)進(jìn)行預(yù)測(cè)稱(chēng)為外推。更現(xiàn)代的領(lǐng)域關(guān)注該主題并將其稱(chēng)為時(shí)間序列預(yù)測(cè)。預(yù)測(cè)涉及采用適合歷史數(shù)據(jù)的模型并使用它們來(lái)預(yù)測(cè)未來(lái)的觀察結(jié)果。
描述性模型可以借用未來(lái)(即平滑或去除噪聲),它們只尋求最好地描述數(shù)據(jù)。預(yù)測(cè)的一個(gè)重要區(qū)別是未來(lái)是完全不可用的,只能根據(jù)已經(jīng)發(fā)生的事情來(lái)估計(jì)。
時(shí)間序列的組成部分
時(shí)間序列分析提供了一系列技術(shù)來(lái)更好地理解數(shù)據(jù)集。也許其中最有用的是將時(shí)間序列分解為 4 個(gè)組成部分:
等級(jí)?如果系列是直線(xiàn),則為該系列的基線(xiàn)值。
趨勢(shì)?系列隨時(shí)間的可選且通常線(xiàn)性增加或減少的行為。
季節(jié)性?隨著時(shí)間的推移,可選的重復(fù)模式或行為循環(huán)。
噪音?模型無(wú)法解釋的觀測(cè)值中的可選變異性。
所有時(shí)間序列都有一個(gè)等級(jí),大多數(shù)都有噪音,趨勢(shì)和季節(jié)性是可選的。
所有代碼示例均使用 Python 編寫(xiě)并使用 Statsmodels 庫(kù)。
時(shí)間序列預(yù)測(cè)方法
本文主要參考11種經(jīng)典時(shí)間序列預(yù)測(cè)方法[1]
自回歸 (Holt Winter,?AR)
移動(dòng)平均線(xiàn) (Moving Average,?MA)
自回歸移動(dòng)平均線(xiàn) (Autoregressive Moving Average,?ARMA)
自回歸綜合移動(dòng)平均線(xiàn) (Autoregressive Integrated Moving Average,?ARIMA)
季節(jié)性自回歸整合移動(dòng)平均線(xiàn) (Seasonal Autoregressive Integrated Moving-Average,?SARIMA)
具有外生回歸量的季節(jié)性自回歸整合移動(dòng)平均線(xiàn) (Seasonal Autoregressive Integrated Moving-Average with Exogenous Regressors,?SARIMAX)
向量自回歸 (Vector Autoregression,?VAR)
向量自回歸移動(dòng)平均 (Vector Autoregression Moving-Average,?VARMA)
具有外源回歸量的向量自回歸移動(dòng)平均值 (Vector Autoregression Moving-Average with Exogenous Regressors,?VARMAX)
簡(jiǎn)單指數(shù)平滑 (Simple Exponential Smoothing, SES)
霍爾特·溫特的指數(shù)平滑 (Holt Winter’s Exponential Smoothing,?HWES)
01 自回歸 (AR)
自回歸 (AR) 方法將序列中的下一步建模為先前時(shí)間步長(zhǎng)觀測(cè)值的線(xiàn)性函數(shù)。
模型的符號(hào)涉及指定模型??的階數(shù)作為 AR 函數(shù)的參數(shù),例如 AR(p)。例如,AR(1) 是一階自回歸模型。
該方法適用于沒(méi)有趨勢(shì)和季節(jié)性成分的單變量時(shí)間序列。
定義
符號(hào)??表示??階的自回歸模型。模??型定義為:
在哪里??是模型的參數(shù) ,?是一個(gè)常數(shù),并且??是白噪聲。
在統(tǒng)計(jì)學(xué)、計(jì)量經(jīng)濟(jì)學(xué)和信號(hào)處理中,自回歸 (AR) 模型是一種隨機(jī)過(guò)程的表示;因此,它用于描述自然界、經(jīng)濟(jì)學(xué)等中的某些時(shí)變過(guò)程。自回歸模型指定輸出變量線(xiàn)性地取決于其自身先前的值和隨機(jī)項(xiàng)(不完全可預(yù)測(cè)的項(xiàng));因此該模型采用隨機(jī)差分方程的形式(或不應(yīng)與微分方程混淆的遞推關(guān)系)。
與移動(dòng)平均 (MA) 模型一起,它是更一般的時(shí)間序列自回歸移動(dòng)平均 (ARMA) 和自回歸綜合移動(dòng)平均 (ARIMA) 模型的特例和關(guān)鍵組成部分,它們具有更復(fù)雜的隨機(jī)結(jié)構(gòu)體; 它也是向量自回歸模型 (VAR) 的一個(gè)特例,它由一個(gè)包含多個(gè)互鎖隨機(jī)差分方程的系統(tǒng)組成,該系統(tǒng)包含多個(gè)演化隨機(jī)變量。
更多內(nèi)容可參見(jiàn)維基百科上的自回歸模型[2]
Python代碼
#?AR?example from?statsmodels.tsa.ar_model?import?AutoReg from?random?import?random #?contrived?dataset data?=?[x?+?random()?for?x?in?range(1,?100)] #?fit?model model?=?AutoReg(data,?lags=1) model_fit?=?model.fit() #?make?prediction yhat?=?model_fit.predict(len(data),?len(data)) print(yhat)02 移動(dòng)平均線(xiàn) (MA)
移動(dòng)平均(MA)方法將序列中的下一步建模為來(lái)自先前時(shí)間步驟的平均過(guò)程的殘余誤差的線(xiàn)性函數(shù)。
移動(dòng)平均模型與計(jì)算時(shí)間序列的移動(dòng)平均值不同。模型的符號(hào)包括指定模型的順序??作為MA函數(shù)的參數(shù),例如 MA(q)。例如,MA(1)是一階移動(dòng)平均模型。該方法適用于沒(méi)有趨勢(shì)和季節(jié)性成分的單變量時(shí)間序列。
定義
符號(hào)??是指順序的移動(dòng)平均模型?:
其中??是序列的平均值,θθ?是模型的參數(shù),而??是白噪聲誤差項(xiàng)。?的值稱(chēng)為 MA 模型的階數(shù)。
因此,移動(dòng)平均模型在概念上是系列當(dāng)前值與當(dāng)前和先前(觀察到的)白噪聲誤差項(xiàng)或隨機(jī)沖擊的線(xiàn)性回歸。假設(shè)每個(gè)點(diǎn)的隨機(jī)沖擊是相互獨(dú)立的,并且來(lái)自相同的分布,通常是正態(tài)分布,位置為零且尺度不變。
在時(shí)間序列分析中,移動(dòng)平均線(xiàn)(MA)模型是對(duì)單變量時(shí)間序列建模的常用方法。MA模型指定輸出變量線(xiàn)性取決于隨機(jī)(不完全可預(yù)測(cè))項(xiàng)的當(dāng)前值和各種過(guò)去值。
與自回歸 (AR) 模型 一起,MA模型是更一般的時(shí)間序列 ARMA 和 ARIMA 模型的特例和關(guān)鍵組件,它們具有更復(fù)雜的隨機(jī)結(jié)構(gòu)。
與 AR 模型相反,有限 MA 模型始終是靜止的。
更多內(nèi)容可參見(jiàn)?維基百科上的移動(dòng)平均模型[3]
Python代碼
我們可以使用 ARIMA 類(lèi)來(lái)創(chuàng)建 MA 模型并設(shè)置零階 AR 模型。我們必須在?order?參數(shù)中指定 MA 模型的順序。
#?MA?example from?statsmodels.tsa.arima.model?import?ARIMA from?random?import?random #?contrived?dataset data?=?[random()?for?x?in?range(1,?100)] #?fit?model model?=?ARIMA(data,?order=(0,?0,?1)) model_fit?=?model.fit() #?make?prediction yhat?=?model_fit.predict(len(data),?len(data))03 自回歸移動(dòng)平均線(xiàn) (ARMA)
自回歸移動(dòng)平均 (ARMA) 方法將序列中的下一步建模為之前時(shí)間步驟的觀測(cè)值和殘差的線(xiàn)性函數(shù)。
它結(jié)合了自回歸 (AR) 和移動(dòng)平均 (MA) 模型。模型的符號(hào)涉及指定??和??模型的順序作為 ARMA 函數(shù)的參數(shù),例如?。ARIMA 模型可用于開(kāi)發(fā) AR 或 MA 模型。
該方法適用于沒(méi)有趨勢(shì)和季節(jié)性成分的單變量時(shí)間序列。
定義
符號(hào)??指的是具有??個(gè)自回歸項(xiàng)和??個(gè)移動(dòng)平均項(xiàng)的模型。該模型包含??和??模型,
在時(shí)間序列的統(tǒng)計(jì)分析中,自回歸移動(dòng)平均( ARMA )模型根據(jù)兩個(gè)多項(xiàng)式提供了對(duì)(弱)平穩(wěn)隨機(jī)過(guò)程的簡(jiǎn)約描述,一個(gè)用于自回歸(AR),第二個(gè)用于移動(dòng)平均(嘛)。一般ARMA模型在1951年的論文中被描述彼得·惠特爾,在時(shí)間序列分析假設(shè)檢驗(yàn),它是在1970年的書(shū)普及喬治EP盒和格威利姆·詹金斯。
給定數(shù)據(jù)X t的時(shí)間序列,ARMA 模型是一種用于理解和預(yù)測(cè)該系列未來(lái)值的工具。AR 部分涉及根據(jù)其自己的滯后(即過(guò)去)值對(duì)變量進(jìn)行回歸。MA 部分涉及將誤差項(xiàng)建模為過(guò)去不同時(shí)間同時(shí)發(fā)生的誤差項(xiàng)的線(xiàn)性組合。
更多內(nèi)容可參見(jiàn)維基百科上的自回歸移動(dòng)平均模型[4]
Python代碼
#?ARMA?example from?statsmodels.tsa.arima.model?import?ARIMA from?random?import?random #?contrived?dataset data?=?[random()?for?x?in?range(1,?100)] #?fit?model model?=?ARIMA(data,?order=(2,?0,?1)) model_fit?=?model.fit() #?make?prediction yhat?=?model_fit.predict(len(data),?len(data)) print(yhat)04 自回歸綜合移動(dòng)平均線(xiàn) (ARIMA)
自回歸整合移動(dòng)平均(ARIMA)方法將序列中的下一步建模為先前時(shí)間步長(zhǎng)的差異觀測(cè)值和殘差誤差的線(xiàn)性函數(shù)。
它結(jié)合了自回歸(AR)和移動(dòng)平均(MA)模型以及序列的差分預(yù)處理步驟,使序列靜止,稱(chēng)為積分(I)。
該模型的表示法涉及將?,?和??模型的順序指定為 ARIMA 函數(shù)的參數(shù),例如 ARIMA 函數(shù)的參數(shù)。?。ARIMA 模型也可用于開(kāi)發(fā) AR,MA 和 ARMA 模型。
該方法適用于具有趨勢(shì)且沒(méi)有季節(jié)性成分的單變量時(shí)間序列。
ARIMA的各個(gè)組成部分:
AR 部分?表示感興趣的演化變量對(duì)其自身的滯后(即先驗(yàn))值進(jìn)行回歸。
MA 部分?表示回歸誤差實(shí)際上是誤差項(xiàng)的線(xiàn)性組合,其值同時(shí)發(fā)生在過(guò)去的不同時(shí)間。
I 部分?表示數(shù)據(jù)值已被替換為其值與先前值之間的差值(并且這個(gè)差值過(guò)程可能已經(jīng)執(zhí)行了不止一次)。這些特征中的每一個(gè)的目的都是使模型盡可能地?cái)M合數(shù)據(jù)。
非季節(jié)性 ARIMA 模型通常表示為??其中參數(shù)?和?是非負(fù)整數(shù),?是自回歸模型的階數(shù)(時(shí)間滯后數(shù)),?是差分(數(shù)據(jù)減去過(guò)去值的次數(shù)),?是移動(dòng)平均模型的階數(shù)。
季節(jié)性 ARIMA 模型通常表示為?,其中??指的是每個(gè)季節(jié)的周期數(shù),大寫(xiě)的??指的是 ARIMA 模型的季節(jié)性部分的自回歸、差分和移動(dòng)平均項(xiàng)。
更多內(nèi)容可參見(jiàn)維基百科上的自回歸綜合移動(dòng)平均線(xiàn)[5]
Python代碼
#?ARIMA?example from?statsmodels.tsa.arima.model?import?ARIMA from?random?import?random #?contrived?dataset data?=?[random()?for?x?in?range(1,?100)] #?fit?model model?=?ARIMA(data,?order=(1,?1,?1)) model_fit?=?model.fit() #?make?prediction yhat?=?model_fit.predict(len(data),?len(data),?typ='levels')05 季節(jié)性自回歸綜合移動(dòng)平均 (SARIMA)
季節(jié)ARIMA模型(SARIMA)方法模型序列中的下一步驟中用作差分觀測(cè)的線(xiàn)性函數(shù),錯(cuò)誤,季節(jié)性求差的觀察,和季節(jié)性的錯(cuò)誤在先前時(shí)間的步驟。
它將 ARIMA 模型與在季節(jié)性水平上執(zhí)行相同的自回歸、差分和移動(dòng)平均建模的能力相結(jié)合。
模型的符號(hào)包括指定?、和?模型的順序作為 ARIMA 函數(shù)和?、、?和??的參數(shù)季節(jié)級(jí)別的參數(shù)。
例如??,其中“m”是每個(gè)季節(jié)(季節(jié)期間)的時(shí)間步長(zhǎng)數(shù)。SARIMA 模型可用于開(kāi)發(fā) AR、MA、ARMA 和 ARIMA 模型。
該方法適用于具有趨勢(shì)和/或季節(jié)性成分的單變量時(shí)間序列。
ARIMA 模型有許多變體
如果使用多個(gè)時(shí)間序列,則??可以被認(rèn)為是向量,此時(shí) VARIMA 模型較為合適。
如果懷疑在模型中存在季節(jié)性效應(yīng),在這種情況下,通常認(rèn)為使用 SARIMA(季節(jié)性ARIMA)模型比增加模型的 AR 或 MA 部分的階數(shù)更好。
如果懷疑時(shí)間序列具有長(zhǎng)期相關(guān)性,那么在自回歸分?jǐn)?shù)積分移動(dòng)平均模型中可以允許??參數(shù)具有非整數(shù)值,該模型也稱(chēng)為分?jǐn)?shù) ARIMA(FARIMA 或 ARFIMA)) 模型。
Python代碼
#?SARIMA?example from?statsmodels.tsa.statespace.sarimax?import?SARIMAX from?random?import?random #?contrived?dataset data?=?[random()?for?x?in?range(1,?100)] #?fit?model model?=?SARIMAX(data,?order=(1,?1,?1),?seasonal_order=(0,?0,?0,?0)) model_fit?=?model.fit(disp=False) #?make?prediction yhat?=?model_fit.predict(len(data),?len(data))06 具有外生回歸量的季節(jié)性自回歸整合移動(dòng)平均線(xiàn)(SARIMAX)
具有外源回歸量的季節(jié)性自回歸整合移動(dòng)平均值(SARIMAX)是 SARIMA 模型的擴(kuò)展,其還包括外生變量的建模。
外生變量也稱(chēng)為協(xié)變量,可以被認(rèn)為是并行輸入序列,其在與原始序列相同的時(shí)間步驟中具有觀察結(jié)果。初級(jí)系列可以稱(chēng)為內(nèi)源性數(shù)據(jù),以將其與外源序列進(jìn)行對(duì)比。對(duì)于外源變量的觀察結(jié)果直接在每個(gè)時(shí)間步驟包括在模型中,并且不以與主要內(nèi)源序列相同的方式建模(例如作為 AR,MA 等過(guò)程)。
SARIMAX 方法還可用于使用外生變量對(duì)包含的模型進(jìn)行建模,例如 ARX、MAX、ARMAX 和 ARIMAX。
該方法適用于具有趨勢(shì)和/或季節(jié)性成分和外生變量的單變量時(shí)間序列。
Python代碼
#?SARIMAX?example from?statsmodels.tsa.statespace.sarimax?import?SARIMAX from?random?import?random #?contrived?dataset data1?=?[x+random()?for?x?in?range(1,?100)] data2?=?[x+random()?for?x?in?range(101,?200)] #?fit?model model?=?SARIMAX(data1,?exog=data2,?order=(1,?1,?1),?seasonal_order=(0,?0,?0,?0)) model_fit?=?model.fit(disp=False) #?make?prediction exog2?=?[200+random()] yhat?=?model_fit.predict(len(data1),?len(data1),?exog=[exog2])07 向量自回歸 (VAR)
向量自回歸(VAR)方法使用 AR 模型模擬每個(gè)時(shí)間序列中的下一步。AR 是多個(gè)并行時(shí)間序列的推廣,例如,多變量時(shí)間序列。
該模型的符號(hào)涉及指定??模型的階數(shù)作為 VAR 函數(shù)的參數(shù),例如?。
該方法適用于沒(méi)有趨勢(shì)和季節(jié)性成分的多變量時(shí)間序列。
定義
VAR 模型描述了一組??個(gè)變量(稱(chēng)為內(nèi)生變量)隨時(shí)間的演變。每個(gè)時(shí)間段都有編號(hào),
一般而言,?階 VAR 是指包含最后??個(gè)時(shí)間段的滯后的 VAR 模型。?階VAR模型表示為""。一個(gè)??階 VAR 模型寫(xiě)為
?表示變量在??個(gè)時(shí)間段之前的值,稱(chēng)為??的"第??個(gè)滯后" 。變量??是常數(shù)的??向量,用作模型的截距。?是時(shí)不變() 矩陣,而??是誤差項(xiàng)的??向量。誤差項(xiàng)必須滿(mǎn)足三個(gè)條件:
?每個(gè)誤差項(xiàng)的均值為零。
?誤差項(xiàng)的同期協(xié)方差矩陣是一個(gè)??正半定矩陣,表示為?。
?對(duì)于任何非零?,跨時(shí)間沒(méi)有相關(guān)性。特別是,在單個(gè)誤差項(xiàng)中沒(méi)有序列相關(guān)性。
矢量自回歸(VAR) 是一種統(tǒng)計(jì)模型,用于捕捉隨時(shí)間變化的多個(gè)數(shù)量之間的關(guān)系。VAR 是一種隨機(jī)過(guò)程模型。VAR模型通過(guò)允許多變量時(shí)間序列來(lái)概括單變量(單變量)自回歸模型。VAR 模型經(jīng)常用于經(jīng)濟(jì)學(xué)和自然科學(xué)。
與自回歸模型一樣,每個(gè)變量都有一個(gè)方程來(lái)模擬其隨時(shí)間的演變。該方程包括變量的滯后(過(guò)去)值、模型中其他變量的滯后值以及誤差項(xiàng)。
VAR 模型不需要像具有聯(lián)立方程的結(jié)構(gòu)模型那樣了解影響變量的力。唯一需要的先驗(yàn)知識(shí)是可以假設(shè)隨著時(shí)間的推移相互影響的變量列表。
更多內(nèi)容可參見(jiàn)維基百科上的向量自回歸[6]
Python代碼
#?VAR?example from?statsmodels.tsa.vector_ar.var_model?import?VAR from?random?import?random #?contrived?dataset?with?dependency data?=?list() for?i?in?range(100):v1?=?i?+?random()v2?=?v1?+?random()row?=?[v1,?v2]data.append(row) #?fit?model model?=?VAR(data) model_fit?=?model.fit() #?make?prediction yhat?=?model_fit.forecast(model_fit.y,?steps=1)08 向量自回歸移動(dòng)平均值(VARMA)
向量自回歸移動(dòng)平均(VARMA)方法使用 ARMA 模型對(duì)每個(gè)時(shí)間序列中的下一步進(jìn)行建模。這是 ARMA 對(duì)多個(gè)并行時(shí)間序列的推廣,例如多變量時(shí)間序列。
該模型的表示法涉及將??和??模型的順序指定為 VARMA 函數(shù)的參數(shù),例如,?。VARMA 模型也可用于開(kāi)發(fā) VAR 或 VMA 模型。
該方法適用于沒(méi)有趨勢(shì)和季節(jié)性成分的多元時(shí)間序列。
Python代碼
#?VARMA?example from?statsmodels.tsa.statespace.varmax?import?VARMAX from?random?import?random #?contrived?dataset?with?dependency data?=?list() for?i?in?range(100):v1?=?random()v2?=?v1?+?random()row?=?[v1,?v2]data.append(row) #?fit?model model?=?VARMAX(data,?order=(1,?1)) model_fit?=?model.fit(disp=False) #?make?prediction yhat?=?model_fit.forecast()09 具有外源回歸量的向量自回歸移動(dòng)平均值(VARMAX)
帶有外生回歸量的向量自回歸移動(dòng)平均 (VARMAX) 是 VARMA 模型的擴(kuò)展,它還包括外生變量的建模。它是 ARMAX 方法的多元版本。
外生變量也稱(chēng)為協(xié)變量,可以被認(rèn)為是并行輸入序列,它們?cè)谂c原始序列相同的時(shí)間步長(zhǎng)中進(jìn)行觀察。主要系列被稱(chēng)為內(nèi)源數(shù)據(jù),以將其與外源序列進(jìn)行對(duì)比。外生變量的觀察值在每個(gè)時(shí)間步直接包含在模型中,并且不以與主要內(nèi)生序列相同的方式建模(例如作為 AR、MA 等過(guò)程)。
VARMAX 方法還可用于對(duì)具有外生變量的包含模型進(jìn)行建模,例如 VARX 和 VMAX。
該方法適用于具有外生變量的沒(méi)有趨勢(shì)和季節(jié)性成分的多元時(shí)間序列。
Python代碼
#?VARMAX?example from?statsmodels.tsa.statespace.varmax?import?VARMAX from?random?import?random #?contrived?dataset?with?dependency data?=?list() for?i?in?range(100):v1?=?random()v2?=?v1?+?random()row?=?[v1,?v2]data.append(row) data_exog?=?[x?+?random()?for?x?in?range(100)] #?fit?model model?=?VARMAX(data,?exog=data_exog,?order=(1,?1)) model_fit?=?model.fit(disp=False) #?make?prediction data_exog2?=?[[100]] yhat?=?model_fit.forecast(exog=data_exog2)10 簡(jiǎn)單指數(shù)平滑 (SES)
簡(jiǎn)單指數(shù)平滑 (SES) 方法將下一個(gè)時(shí)間步建模為先前時(shí)間步觀測(cè)值的指數(shù)加權(quán)線(xiàn)性函數(shù)。
該方法適用于沒(méi)有趨勢(shì)和季節(jié)性成分的單變量時(shí)間序列。
定義
指數(shù)平滑的最簡(jiǎn)單形式由以下公式給出:
式中??是平滑因子,并且?。換句話(huà)說(shuō),平滑的統(tǒng)計(jì)量??是當(dāng)前觀測(cè)值的簡(jiǎn)單加權(quán)平均值??和之前的平滑統(tǒng)計(jì)?。簡(jiǎn)單的指數(shù)平滑很容易應(yīng)用,只要有兩個(gè)觀測(cè)值,它就會(huì)生成平滑的統(tǒng)計(jì)量。
平滑因子??具有較大的值,實(shí)際上降低平滑水平,并在極限情況下??輸出系列只是當(dāng)前的觀察結(jié)果。
?的值接近 1 的平滑效果較小,并且對(duì)數(shù)據(jù)中最近的變化給予更大的權(quán)重。
而??值 接近于零,具有更大的平滑效果并且對(duì)最近的變化的響應(yīng)更小。
指數(shù)平滑是一種利用指數(shù)窗函數(shù)平滑時(shí)間序列數(shù)據(jù)的經(jīng)驗(yàn)法則。而在簡(jiǎn)單的移動(dòng)平均中,過(guò)去的觀測(cè)值的權(quán)重是相等的。指數(shù)函數(shù)被用來(lái)分配隨著時(shí)間呈指數(shù)遞減的權(quán)重。
指數(shù)平滑是信號(hào)處理中常用的平滑數(shù)據(jù)的窗口函數(shù)之一,作為低通濾波器去除高頻噪聲。
更多內(nèi)容可參見(jiàn)維基百科上的指數(shù)平滑[7]
Python代碼
#?SES?example from?statsmodels.tsa.holtwinters?import?SimpleExpSmoothing from?random?import?random #?contrived?dataset data?=?[random()?for?x?in?range(1,?100)] #?fit?model model?=?SimpleExpSmoothing(data) model_fit?=?model.fit() #?make?prediction yhat?=?model_fit.predict(len(data),?len(data)) print(yhat)11 霍爾特·溫特的指數(shù)平滑(HWES)
Holt Winter 的指數(shù)平滑(HWES)也稱(chēng)為三次指數(shù)平滑方法,將下一個(gè)時(shí)間步長(zhǎng)建模為先前時(shí)間步長(zhǎng)的觀測(cè)值的指數(shù)加權(quán)線(xiàn)性函數(shù),并考慮趨勢(shì)和季節(jié)性。
該方法適用于具有趨勢(shì)和/或季節(jié)性分量的單變量時(shí)間序列。
Python代碼
#?HWES?example from?statsmodels.tsa.holtwinters?import?ExponentialSmoothing from?random?import?random #?contrived?dataset data?=?[x?+?random()?for?x?in?range(1,?100)] #?fit?model model?=?ExponentialSmoothing(data) model_fit?=?model.fit() #?make?prediction yhat?=?model_fit.predict(len(data),?len(data))參考資料
[1]?
11種經(jīng)典時(shí)間序列預(yù)測(cè)方法:?https://machinelearningmastery.com/time-series-forecasting-methods-in-python-cheat-sheet/
[2]?自回歸模型:?https://en.wikipedia.org/wiki/Autoregressive_model
[3]?移動(dòng)平均模型:?https://en.wikipedia.org/wiki/Moving-average_model
[4]?自回歸移動(dòng)平均模型:?https://en.wikipedia.org/wiki/Autoregressive–moving-average_model
[5]?自回歸綜合移動(dòng)平均線(xiàn):?https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average
[6]?向量自回歸:?https://en.wikipedia.org/wiki/Vector_autoregression
[7]?指數(shù)平滑:?https://en.wikipedia.org/wiki/Exponential_smoothing
往期精彩回顧適合初學(xué)者入門(mén)人工智能的路線(xiàn)及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線(xiàn)手冊(cè)深度學(xué)習(xí)筆記專(zhuān)輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專(zhuān)輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁(yè)完整版課件本站qq群554839127,加入微信群請(qǐng)掃碼:
總結(jié)
以上是生活随笔為你收集整理的【Python】Python中的经典时间序列预测模型总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spring boot打包问题,访问问题
- 下一篇: Android、iOS平台RTMP/RT