最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python中的ARIMA模型、SARIMA模型和SARIMAX模型對時間序列預(yù)測

2021-03-19 10:02 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=12272

?

使用ARIMA模型,您可以使用序列過去的值預(yù)測時間序列。在本文中,我們從頭開始構(gòu)建了一個最佳ARIMA模型,并將其擴展到Seasonal ARIMA(SARIMA)和SARIMAX模型。

?

1.時間序列預(yù)測簡介

時間序列是在定期時間間隔內(nèi)記錄度量的序列。

根據(jù)頻率,時間序列可以是每年(例如:年度預(yù)算),每季度(例如:支出),每周(例如:銷售數(shù)量),每天(例如天氣),每小時(例如:股票價格),分鐘(例如:來電提示中的呼入電話),甚至是幾秒鐘(例如:網(wǎng)絡(luò)流量)。

為什么要預(yù)測?

因為預(yù)測時間序列(如需求和銷售)通常具有巨大的商業(yè)價值。

在大多數(shù)制造公司中,它驅(qū)動基本的業(yè)務(wù)計劃,采購和生產(chǎn)活動。預(yù)測中的任何錯誤都會擴散到整個供應(yīng)鏈或與此相關(guān)的任何業(yè)務(wù)環(huán)境中。因此,準(zhǔn)確地進行預(yù)測很重要,以節(jié)省成本,這對于成功至關(guān)重要。

不僅在制造業(yè)中,時間序列預(yù)測背后的技術(shù)和概念還適用于任何業(yè)務(wù)。

現(xiàn)在,預(yù)測時間序列可以大致分為兩種類型。

如果僅使用時間序列的先前值來預(yù)測其未來值,則稱為??單變量時間序列預(yù)測。

如果您使用序列以外的其他預(yù)測變量(也稱為外生變量)進行預(yù)測,則稱為??多變量時間序列預(yù)測

這篇文章重點介紹一種稱為ARIMA??建模的特殊類型的預(yù)測方法? 。

ARIMA是一種預(yù)測算法,其基于以下思想:時間序列的過去值中的信息可以單獨用于預(yù)測未來值。

2. ARIMA模型簡介

那么ARIMA模型到底是什么?

ARIMA是一類模型,可以根據(jù)自身的過去值(即自身的滯后和滯后的預(yù)測誤差)“解釋”給定的時間序列,因此可以使用方程式預(yù)測未來價值。

任何具有模式且不是隨機白噪聲的“非季節(jié)性”時間序列都可以使用ARIMA模型進行建模。

ARIMA模型的特征在于3個項:p,d,q

p是AR項

q是MA項

d是使時間序列平穩(wěn)所需的差分?jǐn)?shù)

如果時間序列具有季節(jié)性模式,則需要添加季節(jié)性條件,該時間序列將變成SARIMA(“季節(jié)性ARIMA”的縮寫)。一旦完成ARIMA。

那么,“AR項的順序”到底意味著什么?我們先來看一下“ d”。

3. ARIMA模型中的p,d和q是什么意思

建立ARIMA模型的第一步是??使時間序列平穩(wěn)。

為什么?

因為ARIMA中的“自動回歸”一詞意味著它是一個??線性回歸模型??,使用自己的滯后作為預(yù)測因子。如您所知,線性回歸模型在預(yù)測變量不相關(guān)且彼此獨立時最有效。

那么如何使一序列平穩(wěn)呢?

最常見的方法是加以差分。即,從當(dāng)前值中減去先前的值。

因此,d的值是使序列平穩(wěn)所需的最小差分?jǐn)?shù)。如果時間序列已經(jīng)平穩(wěn),則d = 0。

接下來,什么是“ p”和“ q”?

“ p”是“自回歸”(AR)術(shù)語的順序。它指的是要用作預(yù)測變量的Y的滯后次數(shù)。而“ q”是“移動平均”(MA)項的階數(shù)。它是指應(yīng)輸入ARIMA模型的滯后預(yù)測誤差的數(shù)量。

4.什么是AR和MA模型

那么什么是AR和MA模型?AR和MA模型的實際數(shù)學(xué)公式是什么?

AR模型是Yt僅取決于其自身滯后的模型。也就是說,Yt是“ Yt滯后”的函數(shù)。

?

同樣,純??移動平均線(僅MA)模型??是Yt僅取決于滯后預(yù)測誤差的模型。

?

誤差項是各個滯后的自回歸模型的誤差。誤差Et和E(t-1)是來自以下方程式的誤差:

?

那分別是AR和MA模型。

那么ARIMA模型的方程是什么樣的呢?

ARIMA模型是這樣的模型,其中時間序列至少差分一次以使其平穩(wěn),然后將AR和MA項組合在一起。因此,等式變?yōu)椋?/p>

因此,目的是識別p,d和q的值。?

5.如何在ARIMA模型中找到差分階數(shù)(d)

進行差分的目的是使時間序列平穩(wěn)。

但是您需要注意不要使系列過分差分。因為,超差分序列可能仍然是平穩(wěn)的,這反過來將影響模型參數(shù)。

那么如何確定正確的差分階數(shù)呢?

正確的差分階數(shù)是獲得近似平穩(wěn)序列的最小差分,該序列圍繞定義的平均值波動,并且ACF曲線相當(dāng)快地達到零。

如果自相關(guān)對于許多階數(shù)之后(10個或更多)為正,則該序列需要進一步求差。?

在這種情況下,你不能真正確定兩個差分階數(shù)之間的差,然后選擇在差分序列中給出最小標(biāo)準(zhǔn)偏差的階數(shù)。

讓我們來看一個例子。

首先,我將使用Augmented Dickey Fuller測試()檢查該系列是否平穩(wěn)。

為什么?

因為,僅當(dāng)序列非平穩(wěn)時才需要進行差分。否則,不需要差分,即d = 0。

ADF檢驗的零假設(shè)是時間序列是非平穩(wěn)的。因此,如果檢驗的p值小于顯著性水平(0.05),則拒絕原假設(shè),并推斷時間序列確實是平穩(wěn)的。

因此,在我們的情況下,如果P值> 0.05,我們將繼續(xù)尋找差分的階數(shù)。

由于P值大于顯著性水平,因此讓我們對序列進行差分,看看自相關(guān)圖的樣子。

?

差分?

對于以上序列,時間序列達到平穩(wěn),具有兩個不同的階數(shù)。但是,在查看第二次差分的自相關(guān)圖時,滯后會很快進入負(fù)值區(qū)域,這表明該序列可能已經(jīng)過差分。

因此,即使該序列不是完全平穩(wěn)的(平穩(wěn)性較弱),我也將暫時將差分的階數(shù)設(shè)置為1。

6.如何找到AR項的階數(shù)(p)

下一步是確定模型是否需要AR。您可以通過檢查偏自相關(guān)(PACF)圖來找出所需的AR階數(shù)。

但是什么是PACF?

排除部分滯后的影響后,可以將偏自相關(guān)想象為序列與其滯后之間的相關(guān)性。因此,PACF的傳遞傳達了滯后與序列之間的純相關(guān)性。這樣,您將知道在AR中是否需要該滯后。

如何找到AR項的階數(shù)?

平穩(wěn)序列中的任何自相關(guān)都可以通過添加足夠的AR項進行校正。因此,我們最初將AR項的階數(shù)等于超過PACF圖中顯著性區(qū)間的滯后階數(shù)。

?

AR階數(shù)

可以觀察到,PACF滯后1非常重要,因為它遠高于顯著性線。滯后2也很重要,稍微超過了顯著性區(qū)間(藍色區(qū)域)。

7.如何找到MA項的階數(shù)(q)

就像我們在PACF圖上查看AR項的階數(shù)一樣,您也可以在ACF圖上查看MA項的階數(shù)。MA從技術(shù)上講是滯后預(yù)測的誤差。

ACF指示要消除平穩(wěn)序列中的自相關(guān)需要多少個MA項。

讓我們看一下差分序列的自相關(guān)圖。

?

MA階數(shù)

幾個滯后遠高于界限。因此,讓我們暫時將q固定為2。

8.如何處理時間序列差值是否過低或過高

該如何處理?

如果您的序列有少許差異,通常添加一個或多個其他AR即可。同樣,如果略有差異,請嘗試添加其他MA項。

9.如何建立ARIMA模型

現(xiàn)在,已經(jīng)確定了p,d和q的值,已經(jīng)具備了擬合ARIMA模型的所有條件。

該模型摘要揭示了很多信息。中間的表是系數(shù)表,其中“ coef”下的值是相應(yīng)項的權(quán)重。

請注意,這里的MA2項的系數(shù)接近零 。理想情況下,各個X的值應(yīng)小于0.05。

因此,讓我們在沒有MA2術(shù)語的情況下重建模型。

AIC模型已減少,這很好。AR1和MA1項的P值已提高并且非常顯著(<< 0.05)。

讓我們繪制殘差 。

?

殘差密度

殘差似乎很好,均值接近零且方差均勻。讓我們使用繪制實際值和擬合值?。

?

實際vs擬合

設(shè)置???樣本內(nèi)時,滯后值用于預(yù)測。

也就是說,模型被訓(xùn)練到上一個值進行下一個預(yù)測。?

因此,我們似乎有一個不錯的ARIMA模型。但是那是最好的嗎?

目前不能這么說,因為我們還沒有真正預(yù)測未來數(shù)據(jù),而是將預(yù)測與實際數(shù)據(jù)進行了比較。

因此, 現(xiàn)在需要交叉驗證。

10.如何使用交叉驗證手動找到最佳ARIMA模型

在“交叉驗證”中,可以預(yù)測將來的數(shù)據(jù)。然后,您將預(yù)測值與實際值進行比較。

要進行超時的交叉驗證,您需要創(chuàng)建訓(xùn)練和測試數(shù)據(jù)集,方法是將時間序列按大約75:25的比例或基于序列時間頻率的合理比例分成兩個連續(xù)的部分。

為什么不隨機采樣訓(xùn)練數(shù)據(jù)?

這是因為時間序列的順序序列應(yīng)完整無缺,以便用于預(yù)測。

現(xiàn)在,您可以在訓(xùn)練數(shù)據(jù)集上構(gòu)建ARIMA模型,對其進行預(yù)測和繪制。

?

預(yù)測與實際

從圖表中,ARIMA(1,1,1)模型似乎給出了方向正確的預(yù)測。實際觀察值在95%置信區(qū)間內(nèi)。

但是每個預(yù)測的預(yù)測始終低于實際。這意味著,通過在我們的預(yù)測中添加一個小的常數(shù),精度一定會提高。因此,肯定有改進的余地。

所以,我要做的是將差分的階數(shù)增加到2,即進行設(shè)置,???然后將p迭代地增加到5,然后將q反復(fù)增加到5,以查看哪個模型給出的AIC最小,同時還要尋找一個給出更接近實際情況和預(yù)測。

在執(zhí)行此操作時,我會關(guān)注模型摘要中AR和MA項的P值。它們應(yīng)盡可能接近零,理想情況下應(yīng)小于0.05。

?

修訂后的預(yù)測與實際值

AIC已從515減少到440。X項的P值小于<0.05,這很好。

所以總的來說要好得多。

理想情況下,應(yīng)該返回多個時間點,例如返回1、2、3和4個季度,并查看一年中各個時間點的預(yù)測效果如何。

?

11.時間序列預(yù)測的準(zhǔn)確性指標(biāo)

用來判斷預(yù)測的常用準(zhǔn)確性指標(biāo)是:

  1. 平均絕對百分比誤差(MAPE)

  2. 平均誤差(ME)

  3. 平均絕對誤差(MAE)

  4. 平均百分比誤差(MPE)

  5. 均方根誤差(RMSE)

  6. 滯后1自相關(guān)誤差(ACF1)

  7. 實際與預(yù)測之間的相關(guān)性(corr)

  8. 最小最大誤差(minmax)

通常,如果要比較兩個不同序列的預(yù)測,則可以使用MAPE,Correlation和Min-Max Error。

為什么不使用其他指標(biāo)?

因為只有上述三個是百分比誤差,所以誤差在0到1之間變化。因此,無論序列的規(guī)模如何,您都可以判斷預(yù)測的質(zhì)量如何。

其他誤差度量是數(shù)量。這意味著,平均值為1000的序列的RMSE為100,平均值為10的序列的RMSE為5。因此,不能真正使用它們來比較兩個不同比例時間序列的預(yù)測。

大約2.2%的MAPE表示該模型在預(yù)測接下來的15個觀測值時的準(zhǔn)確性約為97.8%。

但是在工業(yè)應(yīng)用情況下,將給您提供很多時間序列來進行預(yù)測,并且定期重復(fù)進行預(yù)測。

因此,我們需要一種使最佳模型選擇過程自動化的方法。

12.如何在Python中進行自動Arima預(yù)測

使用逐步方法來搜索p,d,q參數(shù)的多個組合,并選擇具有最小AIC的最佳模型。

13.如何解釋ARIMA模型中的殘差圖

讓我們查看殘差圖。

?

殘差圖

那么如何解釋?

左上方:??殘余誤差似乎在零均值附近波動,并且具有均勻的方差。

右上方:??密度圖建議均值為零的正態(tài)分布。

左下:??所有圓點應(yīng)與紅線完全一致。任何明顯的偏差都意味著分布偏斜。

右下:??Correlogram(又名ACF)圖顯示殘差誤差不是自相關(guān)的。任何自相關(guān)都將暗示殘差中存在某種模式,該模式未在模型中進行解釋。因此,您將需要為模型尋找更多的X(預(yù)測變量)。

總體而言,這似乎很合適。讓我們預(yù)測一下。

?

?

14.如何在python中自動構(gòu)建SARIMA模型

普通ARIMA模型的問題在于它不支持季節(jié)性。

如果您的時間序列定義了季節(jié)性,那么,請使用季節(jié)性差分的SARIMA。

季節(jié)性差分與常規(guī)差分相似,但是您可以從上一季節(jié)中減去該值,而不是減去連續(xù)項。

因此,該模型將表示為SARIMA(p,d,q)x(P,D,Q),其中P,D和Q分別是SAR,季節(jié)性差分的階數(shù)和smA項,并且???是時間的頻率系列。

如果您的模型具有明確定義的季節(jié)性模式,則對給定的頻率“ x”強制執(zhí)行D = 1。

這是有關(guān)構(gòu)建SARIMA模型的一些實用建議:

通常,將模型參數(shù)設(shè)置為D不得超過1。并且總的差異'd + D'永遠不會超過2。如果模型具有季節(jié)性成分,請嘗試僅保留SAR或smA項。

我們在藥物銷售數(shù)據(jù)集上建立一個SARIMA模型 。

?

季節(jié)性差分

在應(yīng)用通常的差分(滯后1)之后,季節(jié)性峰值是完整的。鑒于此,應(yīng)在季節(jié)性差分后進行糾正。

讓我們建立使用SARIMA模型。為此,您需要設(shè)置??,設(shè)置?按月序列的頻率? 并強制執(zhí)行??。

?

該模型估計了AIC,系數(shù)的P值看起來很重要。讓我們看一下殘差的診斷圖。

最佳模型???的AIC為528.6,P值很重要。

讓我們預(yù)測未來的24個月。

?

SARIMA –最終預(yù)測

?

15.如何用外生變量建立SARIMAX模型

我們構(gòu)建的SARIMA模型很好。

但是為了完整起見,讓我們嘗試將外部預(yù)測變量(也稱為“外生變量”)強加到模型中。該模型稱為SARIMAX模型。

使用外生變量的唯一要求是您還需要在預(yù)測期內(nèi)知道變量的值。

為了演示,我將對?最近36個月的數(shù)據(jù)使用經(jīng)典季節(jié)性分解中的季節(jié)性指數(shù)? 。

為什么要季節(jié)性指數(shù)? SARIMA是否已經(jīng)在模擬季節(jié)性?

你是對的。

而且,我想看看如果我們將最近的季節(jié)性模式強加到訓(xùn)練和預(yù)測中,模型將如何顯示。

其次,這是一個很好的演示目的變量。因此,你可以將其用作模板,并將任何變量插入代碼中。季節(jié)性指數(shù)是一個很好的外生變量,因為它每個頻率周期都會重復(fù)一次,在這種情況下為12個月。

因此,你將始終知道季節(jié)性指數(shù)將對未來的預(yù)測保持何種價值。

讓我們計算季節(jié)性指數(shù),以便可以將其作為SARIMAX模型的(外部)預(yù)測變量。

外生變量(季節(jié)指數(shù))已準(zhǔn)備就緒。讓我們構(gòu)建SARIMAX模型。

因此,我們擁有帶有外生項的模型。但是該系數(shù)對于?來說很小?,因此該變量的貢獻可以忽略不計。讓我們繼續(xù)預(yù)測吧。

我們已有效地將模型中最近3年的最新季節(jié)性影響強加給模型。

好吧,讓我們預(yù)測下一個24個月。為此,你需要接下來24個月的季節(jié)性指數(shù)值。

SARIMAX預(yù)測

?

最受歡迎的見解

1.在python中使用lstm和pytorch進行時間序列預(yù)測

2.python中利用長短期記憶模型lstm進行時間序列預(yù)測分析

3.使用r語言進行時間序列(arima,指數(shù)平滑)分析

4.r語言多元copula-garch-模型時間序列預(yù)測

5.r語言copulas和金融時間序列案例

6.使用r語言隨機波動模型sv處理時間序列中的隨機波動

7.r語言時間序列tar閾值自回歸模型

8.r語言k-shape時間序列聚類方法對股票價格時間序列聚類

9.python3用arima模型進行時間序列預(yù)測


Python中的ARIMA模型、SARIMA模型和SARIMAX模型對時間序列預(yù)測的評論 (共 條)

分享到微博請遵守國家法律
滦南县| 鲁山县| 青海省| 邻水| 广丰县| 碌曲县| 乌恰县| 望都县| 南阳市| 汽车| 招远市| 安乡县| 九龙坡区| 大连市| 四子王旗| 南川市| 呈贡县| 天峨县| 大田县| 将乐县| 关岭| 乐陵市| 五家渠市| 莆田市| 惠水县| 泰来县| 桂平市| 罗城| 霞浦县| 左贡县| 石台县| 雅江县| 顺义区| 太保市| 朝阳市| 资兴市| 大关县| 特克斯县| 库伦旗| 绩溪县| 滦南县|