| 原文鏈接:http:///?p=12272 使用ARIMA模型,您可以使用序列過去的值預(yù)測時(shí)間序列。在本文中,我們從頭開始構(gòu)建了一個(gè)最佳ARIMA模型,并將其擴(kuò)展到Seasonal ARIMA(SARIMA)和SARIMAX模型。 1.時(shí)間序列預(yù)測簡介時(shí)間序列是在定期的時(shí)間間隔內(nèi)記錄度量的序列。 根據(jù)頻率,時(shí)間序列可以是每年(例如:年度預(yù)算),每季度(例如:支出),每周(例如:銷售數(shù)量),每天(例如天氣),每小時(shí)(例如:股票價(jià)格),分鐘(例如:來電提示中的呼入電話),甚至是幾秒鐘(例如:網(wǎng)絡(luò)流量)。 為什么要預(yù)測?因?yàn)轭A(yù)測時(shí)間序列(如需求和銷售)通常具有巨大的商業(yè)價(jià)值。 在大多數(shù)制造公司中,它驅(qū)動基本的業(yè)務(wù)計(jì)劃,采購和生產(chǎn)活動。預(yù)測中的任何錯(cuò)誤都會在整個(gè)供應(yīng)鏈或與此相關(guān)的任何業(yè)務(wù)環(huán)境中蔓延。因此,準(zhǔn)確地進(jìn)行預(yù)測很重要,以節(jié)省成本,這對于成功至關(guān)重要。 不僅在制造業(yè)中,時(shí)間序列預(yù)測背后的技術(shù)和概念還適用于任何業(yè)務(wù)。 現(xiàn)在,預(yù)測時(shí)間序列可以大致分為兩種類型。 如果僅使用時(shí)間序列的先前值來預(yù)測其未來值,則稱為 單變量時(shí)間序列預(yù)測。 如果您使用序列以外的其他預(yù)測變量(也稱為外生變量)進(jìn)行預(yù)測,則稱為 多變量時(shí)間序列預(yù)測。 這篇文章重點(diǎn)介紹一種稱為ARIMA 建模的特殊類型的預(yù)測方法 。 ARIMA是一種預(yù)測算法,其基于以下思想:時(shí)間序列的過去值中的信息可以單獨(dú)用于預(yù)測未來值。 2. ARIMA模型簡介那么ARIMA模型到底是什么? ARIMA是一類模型,可以根據(jù)自身的過去值(即自身的滯后和滯后的預(yù)測誤差)“解釋”給定的時(shí)間序列,因此可以使用方程式預(yù)測未來價(jià)值。 任何具有模式且不是隨機(jī)白噪聲的“非季節(jié)性”時(shí)間序列都可以使用ARIMA模型進(jìn)行建模。 ARIMA模型的特征在于3個(gè)項(xiàng):p,d,q p是AR項(xiàng) q是MA項(xiàng) d是使時(shí)間序列平穩(wěn)所需的差分?jǐn)?shù) 如果時(shí)間序列具有季節(jié)性模式,則需要添加季節(jié)性條件,該時(shí)間序列將變成SARIMA(“季節(jié)性ARIMA”的縮寫)。一旦完成ARIMA。 那么,“AR項(xiàng)的順序”到底意味著什么?在我們?nèi)ツ抢镏?,我們先來看一下?d”。 3. ARIMA模型中的p,d和q是什么意思建立ARIMA模型的第一步是 使時(shí)間序列平穩(wěn)。 為什么? 因?yàn)锳RIMA中的“自動回歸”一詞意味著它是一個(gè) 線性回歸模型 ,使用自己的滯后作為預(yù)測因子。如您所知,線性回歸模型在預(yù)測變量不相關(guān)且彼此獨(dú)立時(shí)最有效。 那么如何使一序列穩(wěn)定呢? 最常見的方法是加以差分。即,從當(dāng)前值中減去先前的值。 因此,d的值是使序列平穩(wěn)所需的最小差分?jǐn)?shù)。如果時(shí)間序列已經(jīng)固定,則d = 0。 接下來,什么是“ p”和“ q”? “ p”是“自回歸”(AR)術(shù)語的順序。它指的是要用作預(yù)測變量的Y的滯后次數(shù)。而“ q”是“移動平均”(MA)項(xiàng)的順序。它是指應(yīng)輸入ARIMA模型的滯后預(yù)測誤差的數(shù)量。 4.什么是AR和MA模型那么什么是AR和MA模型?AR和MA模型的實(shí)際數(shù)學(xué)公式是什么? 僅AR模型是Yt僅取決于其自身滯后的模型。也就是說,Yt是“ Yt滯后”的函數(shù)。 同樣,純 移動平均線(僅MA)模型 是Yt僅取決于滯后預(yù)測誤差的模型。 誤差項(xiàng)是各個(gè)滯后的自回歸模型的誤差。誤差Et和E(t-1)是來自以下方程式的誤差: 那分別是AR和MA模型。 那么ARIMA模型的方程是什么樣的呢? ARIMA模型是這樣的模型,其中時(shí)間序列至少差分一次以使其穩(wěn)定,然后將AR和MA項(xiàng)組合在一起。因此,等式變?yōu)椋?/p> 因此,目的是識別p,d和q的值。 5.如何在ARIMA模型中找到差分階數(shù)(d)進(jìn)行差分的目的是使時(shí)間序列平穩(wěn)。 但是您需要注意不要使系列過分差分。因?yàn)?,超差分序列可能仍然是靜止的,這反過來將影響模型參數(shù)。 那么如何確定正確的差分順序呢? 正確的差分順序是獲得近似平穩(wěn)序列的最小差分,該序列圍繞定義的平均值漫游,并且ACF曲線相當(dāng)快地達(dá)到零。 如果自相關(guān)對于許多之后(10個(gè)或更多)為正,則該序列需要進(jìn)一步求差。 在這種情況下,你不能真正確定兩個(gè)差分階數(shù)之間的差,然后選擇在差分序列中給出最小標(biāo)準(zhǔn)偏差的階次。 讓我們來看一個(gè)例子。 首先,我將使用 為什么? 因?yàn)?,僅當(dāng)序列非平穩(wěn)時(shí)才需要進(jìn)行區(qū)分。否則,不需要差分,即d = 0。 ADF檢驗(yàn)的零假設(shè)是時(shí)間序列是非平穩(wěn)的。因此,如果檢驗(yàn)的p值小于顯著性水平(0.05),則拒絕原假設(shè),并推斷時(shí)間序列確實(shí)是平穩(wěn)的。 因此,在我們的情況下,如果P值> 0.05,我們將繼續(xù)尋找差分的順序。 from statsmodels.tsa.stattools import adfullerfrom numpy import logresult = adfuller(df.value.dropna())print('ADF Statistic: %f' % result[0])print('p-value: %f' % result[1])ADF Statistic: -2.464240p-value: 0.124419由于P值大于顯著性水平,因此讓我們對序列進(jìn)行差分,看看自相關(guān)圖的樣子。 import numpy as np, pandas as pdfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacfimport matplotlib.pyplot as pltplt.rcParams.update({'figure.figsize':(9,7), 'figure.dpi':120})df = pd.read_csv('wwwusage.csv', names=['value'], header=0)fig, axes = plt.subplots(3, 2, sharex=True)axes[0, 0].plot(df.value); axes[0, 0].set_title('Original Series')plot_acf(df.value, ax=axes[0, 1])axes[1, 0].plot(df.value.diff()); axes[1, 0].set_title('1st Order Differencing')plot_acf(df.value.diff().dropna(), ax=axes[1, 1])axes[2, 0].plot(df.value.diff().diff()); axes[2, 0].set_title('2nd Order Differencing')plot_acf(df.value.diff().diff().dropna(), ax=axes[2, 1])plt.show()差分對于以上序列,時(shí)間序列達(dá)到平穩(wěn),具有兩個(gè)不同的階數(shù)。但是,在查看第二次差分的自相關(guān)圖時(shí),滯后會很快進(jìn)入負(fù)值區(qū)域,這表明該序列可能已經(jīng)過差分。 因此,即使該序列不是完全平穩(wěn)的(平穩(wěn)性較弱),我也將暫時(shí)將差分的階數(shù)固定為1。 ## Adf Testndiffs(y, test='adf')  # 2# KPSS testndiffs(y, test='kpss')  # 0# PP test:ndiffs(y, test='pp')  # 22 0 26.如何找到AR項(xiàng)的階數(shù)(p)下一步是確定模型是否需要任何AR條款。您可以通過檢查偏自相關(guān)(PACF)圖來找出所需的AR項(xiàng)數(shù)。 什么是PACF?排除部分滯后的影響后,可以將部分自相關(guān)想象為序列與其滯后之間的相關(guān)性。因此,PACF的傳遞傳達(dá)了滯后與序列之間的純相關(guān)性。這樣,您將知道在AR術(shù)語中是否需要該滯后。 如何找到AR項(xiàng)的階數(shù)? 平穩(wěn)序列中的任何自相關(guān)都可以通過添加足夠的AR項(xiàng)進(jìn)行校正。因此,我們最初將AR項(xiàng)的階數(shù)等于跨過PACF圖中顯著性區(qū)間的滯后階數(shù)。 # PACF plot of 1st differenced seriesplt.show()AR階數(shù) 可以觀察到,PACF滯后1非常重要,因?yàn)樗h(yuǎn)高于顯著性線。滯后2事實(shí)也很重要,稍微超過了顯著性區(qū)間(藍(lán)色區(qū)域)。 7.如何找到MA項(xiàng)的階數(shù)(q)就像我們在PACF圖上查看AR項(xiàng)的階數(shù)一樣,您也可以在ACF圖上查看MA項(xiàng)的階數(shù)。MA從技術(shù)上講是滯后預(yù)測的誤差。 ACF指示要?jiǎng)h除平穩(wěn)序列中的任何自相關(guān)需要多少個(gè)MA項(xiàng)。 讓我們看一下差分序列的自相關(guān)圖。 fig, axes = plt.subplots(1, 2, sharex=True)axes[0].plot(df.value.diff()); axes[0].set_title('1st Differencing')axes[1].set(ylim=(0,1.2))plot_acf(df.value.diff().dropna(), ax=axes[1])plt.show()MA階數(shù) 幾個(gè)滯后遠(yuǎn)高于界限。因此,讓我們暫時(shí)將q固定為2。 8.如何處理時(shí)間序列差值是否過低或過高該如何處理? 如果您的系列有少許差異,通常添加一個(gè)或多個(gè)其他AR即可。同樣,如果略有差異,請嘗試添加其他MA項(xiàng)。 9.如何建立ARIMA模型現(xiàn)在,已經(jīng)確定了p,d和q的值,已經(jīng)具備了擬合ARIMA模型的所有條件。                              ARIMA Model Results==============================================================================Dep. Variable:                D.value   No. Observations:                   99Model:                 ARIMA(1, 1, 2)   Log Likelihood                -253.790Method:                       css-mle   S.D. of innovations              3.119Date:                Wed, 06 Feb 2019   AIC                            517.579Time:                        23:32:56   BIC                            530.555Sample:                             1   HQIC                           522.829=================================================================================                    coef    std err          z      P>|z|      [0.025      0.975]---------------------------------------------------------------------------------const             1.1202      1.290      0.868      0.387      -1.409       3.649ar.L1.D.value     0.6351      0.257      2.469      0.015       0.131       1.139ma.L1.D.value     0.5287      0.355      1.489      0.140      -0.167       1.224ma.L2.D.value    -0.0010      0.321     -0.003      0.998      -0.631       0.629                                    Roots=============================================================================                  Real          Imaginary           Modulus         Frequency-----------------------------------------------------------------------------AR.1            1.5746           +0.0000j            1.5746            0.0000MA.1           -1.8850           +0.0000j            1.8850            0.5000MA.2          545.3515           +0.0000j          545.3515            0.0000-----------------------------------------------------------------------------該模型摘要揭示了很多信息。中間的表是系數(shù)表,其中“ coef”下的值是相應(yīng)項(xiàng)的權(quán)重。 請注意,這里的MA2項(xiàng)的系數(shù)接近零 。理想情況下,各個(gè)X的值應(yīng)小于0.05。 因此,讓我們在沒有MA2術(shù)語的情況下重建模型。                              ARIMA Model Results==============================================================================Dep. Variable:                D.value   No. Observations:                   99Model:                 ARIMA(1, 1, 1)   Log Likelihood                -253.790Method:                       css-mle   S.D. of innovations              3.119Date:                Sat, 09 Feb 2019   AIC                            515.579Time:                        12:16:06   BIC                            525.960Sample:                             1   HQIC                           519.779=================================================================================                    coef    std err          z      P>|z|      [0.025      0.975]---------------------------------------------------------------------------------const             1.1205      1.286      0.871      0.386      -1.400       3.641ar.L1.D.value     0.6344      0.087      7.317      0.000       0.464       0.804ma.L1.D.value     0.5297      0.089      5.932      0.000       0.355       0.705                                    Roots=============================================================================                  Real          Imaginary           Modulus         Frequency-----------------------------------------------------------------------------AR.1            1.5764           +0.0000j            1.5764            0.0000MA.1           -1.8879           +0.0000j            1.8879            0.5000-----------------------------------------------------------------------------AIC模型已減少,這很好。AR1和MA1項(xiàng)的P值已提高并且非常顯著(<< 0.05)。 讓我們繪制殘差 。 殘差密度 殘差似乎很好,均值接近零且方差均勻。讓我們使用繪制實(shí)際值和擬合值 。 實(shí)際vs擬合 設(shè)置   也就是說,模型被訓(xùn)練到上一個(gè)值進(jìn)行下一個(gè)預(yù)測。 因此,我們似乎有一個(gè)不錯(cuò)的ARIMA模型。但是那是最好的嗎? 目前不能這么說,因?yàn)槲覀冞€沒有真正預(yù)測未來,而是將預(yù)測與實(shí)際績效進(jìn)行了比較。 因此, 現(xiàn)在需要的真正驗(yàn)證是超時(shí)交叉驗(yàn)證。 10.如何使用超時(shí)交叉驗(yàn)證手動找到最佳ARIMA模型在“交叉驗(yàn)證”中,可以倒退幾步,并預(yù)測將來的步伐。然后,您將預(yù)測值與實(shí)際值進(jìn)行比較。 要進(jìn)行超時(shí)的交叉驗(yàn)證,您需要?jiǎng)?chuàng)建訓(xùn)練和測試數(shù)據(jù)集,方法是將時(shí)間序列按大約75:25的比例或基于序列時(shí)間頻率的合理比例分成兩個(gè)連續(xù)的部分。 為什么不隨機(jī)采樣訓(xùn)練數(shù)據(jù)? 這是因?yàn)闀r(shí)間序列的順序序列應(yīng)完整無缺,以便用于預(yù)測。 現(xiàn)在,您可以在訓(xùn)練數(shù)據(jù)集上構(gòu)建ARIMA模型,對其進(jìn)行預(yù)測和繪制。 # Plotplt.figure(figsize=(12,5), dpi=100)plt.plot(train, label='training')plt.plot(test, label='actual')plt.plot(fc_series, label='forecast')plt.fill_between(lower_series.index, lower_series, upper_series,                 color='k', alpha=.15)plt.title('Forecast vs Actuals')plt.legend(loc='upper left', fontsize=8)plt.show()預(yù)測與實(shí)際從圖表中,ARIMA(1,1,1)模型似乎給出了方向正確的預(yù)測。實(shí)際觀察值在95%置信帶內(nèi)。 但是每個(gè)預(yù)測的預(yù)測始終低于實(shí)際。這意味著,通過在我們的預(yù)測中添加一個(gè)小的常數(shù),精度一定會提高。因此,肯定有改進(jìn)的余地。 所以,我要做的是將微分的階數(shù)增加到2,即進(jìn)行設(shè)置,   在執(zhí)行此操作時(shí),我會關(guān)注模型摘要中AR和MA項(xiàng)的P值。它們應(yīng)盡可能接近零,理想情況下應(yīng)小于0.05。                              ARIMA Model Results==============================================================================Dep. Variable:               D2.value   No. Observations:                   83Model:                 ARIMA(3, 2, 1)   Log Likelihood                -214.248Method:                       css-mle   S.D. of innovations              3.153Date:                Sat, 09 Feb 2019   AIC                            440.497Time:                        12:49:01   BIC                            455.010Sample:                             2   HQIC                           446.327==================================================================================                     coef    std err          z      P>|z|      [0.025      0.975]----------------------------------------------------------------------------------const              0.0483      0.084      0.577      0.565      -0.116       0.212ar.L1.D2.value     1.1386      0.109     10.399      0.000       0.924       1.353ar.L2.D2.value    -0.5923      0.155     -3.827      0.000      -0.896      -0.289ar.L3.D2.value     0.3079      0.111      2.778      0.007       0.091       0.525ma.L1.D2.value    -1.0000      0.035    -28.799      0.000      -1.068      -0.932                                    Roots=============================================================================                  Real          Imaginary           Modulus         Frequency-----------------------------------------------------------------------------AR.1            1.1557           -0.0000j            1.1557           -0.0000AR.2            0.3839           -1.6318j            1.6763           -0.2132AR.3            0.3839           +1.6318j            1.6763            0.2132MA.1            1.0000           +0.0000j            1.0000            0.0000-----------------------------------------------------------------------------修訂后的預(yù)測與實(shí)際值AIC已從515減少到440。X項(xiàng)的P值小于<0.05,這很好。 所以總的來說要好得多。 理想情況下,應(yīng)該返回多個(gè)時(shí)間點(diǎn),例如返回1、2、3和4個(gè)季度,并查看一年中各個(gè)時(shí)間點(diǎn)的預(yù)測效果如何。 11.時(shí)間序列預(yù)測的準(zhǔn)確性指標(biāo)用來判斷預(yù)測的常用準(zhǔn)確性指標(biāo)是: 
 通常,如果要比較兩個(gè)不同系列的預(yù)測,則可以使用MAPE,Correlation和Min-Max Error。 為什么不使用其他指標(biāo)?因?yàn)橹挥猩鲜鋈齻€(gè)是百分比誤差,所以誤差在0到1之間變化。因此,無論序列的規(guī)模如何,您都可以判斷預(yù)測的質(zhì)量如何。 其他誤差度量是數(shù)量。這意味著,平均值為1000的系列的RMSE為100,平均值為10的系列的RMSE為5。因此,不能真正使用它們來比較兩個(gè)不同比例時(shí)間序列的預(yù)測。 forecast_accuracy(fc, test.values)#> {'mape': 0.02250131357314834,>  'me': 3.230783108990054,>  'mae': 4.548322194530069,>  'mpe': 0.016421001932706705,>  'rmse': 6.373238534601827,>  'acf1': 0.5105506325288692,>  'corr': 0.9674576513924394,>  'minmax': 0.02163154777672227}大約2.2%的MAPE表示該模型在預(yù)測接下來的15個(gè)觀測值時(shí)的準(zhǔn)確性約為97.8%。 但是在工業(yè)情況下,將給您提供很多時(shí)間序列來進(jìn)行預(yù)測,并且定期重復(fù)進(jìn)行預(yù)測活動。 因此,我們需要一種使最佳模型選擇過程自動化的方法。 12.如何在Python中進(jìn)行自動Arima預(yù)測使用逐步方法來搜索p,d,q參數(shù)的多個(gè)組合,并選擇具有最小AIC的最佳模型。 print(model.summary())#> Fit ARIMA: order=(1, 2, 1); AIC=525.586, BIC=535.926, Fit time=0.060 seconds#> Fit ARIMA: order=(0, 2, 0); AIC=533.474, BIC=538.644, Fit time=0.005 seconds#> Fit ARIMA: order=(1, 2, 0); AIC=532.437, BIC=540.192, Fit time=0.035 seconds#> Fit ARIMA: order=(0, 2, 1); AIC=525.893, BIC=533.648, Fit time=0.040 seconds#> Fit ARIMA: order=(2, 2, 1); AIC=515.248, BIC=528.173, Fit time=0.105 seconds#> Fit ARIMA: order=(2, 2, 0); AIC=513.459, BIC=523.798, Fit time=0.063 seconds#> Fit ARIMA: order=(3, 2, 1); AIC=512.552, BIC=528.062, Fit time=0.272 seconds#> Fit ARIMA: order=(3, 2, 0); AIC=515.284, BIC=528.209, Fit time=0.042 seconds#> Fit ARIMA: order=(3, 2, 2); AIC=514.514, BIC=532.609, Fit time=0.234 seconds#> Total fit time: 0.865 seconds#>                              ARIMA Model Results#> ==============================================================================#> Dep. Variable:                   D2.y   No. Observations:                   98#> Model:                 ARIMA(3, 2, 1)   Log Likelihood                -250.276#> Method:                       css-mle   S.D. of innovations              3.069#> Date:                Sat, 09 Feb 2019   AIC                            512.552#> Time:                        12:57:22   BIC                            528.062#> Sample:                             2   HQIC                           518.825#>#> ==============================================================================#>                  coef    std err          z      P>|z|      [0.025      0.975]#> ------------------------------------------------------------------------------#> const          0.0234      0.058      0.404      0.687      -0.090       0.137#> ar.L1.D2.y     1.1586      0.097     11.965      0.000       0.969       1.348#> ar.L2.D2.y    -0.6640      0.136     -4.890      0.000      -0.930      -0.398#> ar.L3.D2.y     0.3453      0.096      3.588      0.001       0.157       0.534#> ma.L1.D2.y    -1.0000      0.028    -36.302      0.000      -1.054      -0.946#>                                     Roots#> =============================================================================#>                   Real          Imaginary           Modulus         Frequency#> -----------------------------------------------------------------------------#> AR.1            1.1703           -0.0000j            1.1703           -0.0000#> AR.2            0.3763           -1.5274j            1.5731           -0.2116#> AR.3            0.3763           +1.5274j            1.5731            0.2116#> MA.1            1.0000           +0.0000j            1.0000            0.0000#> -----------------------------------------------------------------------------13.如何解釋ARIMA模型中的殘差圖讓我們查看殘差圖。 
 殘差圖 那么如何解釋診斷? 左上方: 殘余誤差似乎在零均值附近波動,并且具有均勻的方差。 右上方: 密度圖建議均值為零的正態(tài)分布。 左下: 所有圓點(diǎn)應(yīng)與紅線完全一致。任何明顯的偏差都意味著分布偏斜。 右下: Correlogram(又名ACF)圖顯示殘差誤差不是自相關(guān)的。任何自相關(guān)都將暗示殘留誤差中存在某種模式,該模式未在模型中進(jìn)行解釋。因此,您將需要為模型尋找更多的X(預(yù)測變量)。 總體而言,這似乎很合適。讓我們預(yù)測一下。 
 14.如何在python中自動構(gòu)建SARIMA模型普通ARIMA模型的問題在于它不支持季節(jié)性。 如果您的時(shí)間序列定義了季節(jié)性,那么,請使用季節(jié)性差異的SARIMA。 季節(jié)性差異與常規(guī)差異相似,但是您可以從上一季節(jié)中減去該值,而不是減去連續(xù)項(xiàng)。 因此,該模型將表示為SARIMA(p,d,q)x(P,D,Q),其中P,D和Q分別是SAR,季節(jié)性差異的階數(shù)和SMA項(xiàng),并且   如果您的模型具有明確定義的季節(jié)性模式,則對給定的頻率“ x”強(qiáng)制執(zhí)行D = 1。 這是有關(guān)構(gòu)建SARIMA模型的一些實(shí)用建議: 通常,將模型參數(shù)設(shè)置為D不得超過1。并且總的差異'd + D'永遠(yuǎn)不會超過2。如果模型具有季節(jié)性成分,請嘗試僅保留SAR或SMA項(xiàng)。 讓我們在藥物銷售數(shù)據(jù)集上建立一個(gè)SARIMA模型 。 
 季節(jié)性差異在應(yīng)用通常的差異(滯后1)之后,季節(jié)性峰值是完整的。鑒于此,應(yīng)在季節(jié)性差異后進(jìn)行糾正。 讓我們建立使用SARIMA模型。為此,您需要設(shè)置   Fit ARIMA: order=(1, 0, 1) seasonal_order=(0, 1, 1, 12); AIC=534.818, BIC=551.105, Fit time=1.742 secondsFit ARIMA: order=(0, 0, 0) seasonal_order=(0, 1, 0, 12); AIC=624.061, BIC=630.576, Fit time=0.028 secondsFit ARIMA: order=(1, 0, 0) seasonal_order=(1, 1, 0, 12); AIC=596.004, BIC=609.034, Fit time=0.683 secondsFit ARIMA: order=(0, 0, 1) seasonal_order=(0, 1, 1, 12); AIC=611.475, BIC=624.505, Fit time=0.709 secondsFit ARIMA: order=(1, 0, 1) seasonal_order=(1, 1, 1, 12); AIC=557.501, BIC=577.046, Fit time=3.687 seconds(...TRUNCATED...)Fit ARIMA: order=(3, 0, 0) seasonal_order=(1, 1, 1, 12); AIC=554.570, BIC=577.372, Fit time=2.431 secondsFit ARIMA: order=(3, 0, 0) seasonal_order=(0, 1, 0, 12); AIC=554.094, BIC=570.381, Fit time=0.220 secondsFit ARIMA: order=(3, 0, 0) seasonal_order=(0, 1, 2, 12); AIC=529.502, BIC=552.305, Fit time=2.120 secondsFit ARIMA: order=(3, 0, 0) seasonal_order=(1, 1, 2, 12); AIC=nan, BIC=nan, Fit time=nan secondsTotal fit time: 31.613 seconds該模型估計(jì)了AIC,系數(shù)的P值看起來很重要。讓我們看一下殘留的診斷圖。 最佳模型   讓我們預(yù)測未來的24個(gè)月。 
 SARIMA –最終預(yù)測 15.如何用外生變量建立SARIMAX模型我們構(gòu)建的SARIMA模型很好。 但是為了完整起見,讓我們嘗試將外部預(yù)測變量(也稱為“外生變量”)強(qiáng)加到模型中。該模型稱為SARIMAX模型。 使用外生變量的唯一要求是您還需要在預(yù)測期內(nèi)知道變量的值。 為了演示,我將對 最近36個(gè)月的數(shù)據(jù)使用經(jīng)典季節(jié)性分解中的季節(jié)性指數(shù) 。 為什么要季節(jié)性指數(shù)?SARIMA是否已經(jīng)在模擬季節(jié)性? 你是對的。 而且,我想看看如果我們將最近的季節(jié)性模式強(qiáng)加到訓(xùn)練和預(yù)測中,模型將如何顯示。 其次,這是一個(gè)很好的演示目的變量。因此,你可以將其用作模板,并將任何變量插入代碼中。季節(jié)性指數(shù)是一個(gè)很好的外生變量,因?yàn)樗總€(gè)頻率周期都會重復(fù)一次,在這種情況下為12個(gè)月。 因此,你將始終知道季節(jié)性指數(shù)將對未來的預(yù)測保持何種價(jià)值。 讓我們計(jì)算季節(jié)性指數(shù),以便可以將其作為SARIMAX模型的(外部)預(yù)測變量。 外生變量(季節(jié)指數(shù))已準(zhǔn)備就緒。讓我們構(gòu)建SARIMAX模型。 Fit ARIMA: order=(1, 0, 1) seasonal_order=(0, 1, 1, 12); AIC=536.818, BIC=556.362, Fit time=2.083 secondsFit ARIMA: order=(0, 0, 0) seasonal_order=(0, 1, 0, 12); AIC=626.061, BIC=635.834, Fit time=0.033 secondsFit ARIMA: order=(1, 0, 0) seasonal_order=(1, 1, 0, 12); AIC=598.004, BIC=614.292, Fit time=0.682 secondsFit ARIMA: order=(0, 0, 1) seasonal_order=(0, 1, 1, 12); AIC=613.475, BIC=629.762, Fit time=0.510 secondsFit ARIMA: order=(1, 0, 1) seasonal_order=(1, 1, 1, 12); AIC=559.530, BIC=582.332, Fit time=3.129 seconds(...Truncated...)Fit ARIMA: order=(3, 0, 0) seasonal_order=(0, 1, 0, 12); AIC=556.094, BIC=575.639, Fit time=0.260 secondsFit ARIMA: order=(3, 0, 0) seasonal_order=(0, 1, 2, 12); AIC=531.502, BIC=557.562, Fit time=2.375 secondsFit ARIMA: order=(3, 0, 0) seasonal_order=(1, 1, 2, 12); AIC=nan, BIC=nan, Fit time=nan secondsTotal fit time: 30.781 seconds
 因此,我們擁有帶有外生項(xiàng)的模型。但是該系數(shù)對于來說很小   我們已有效地將模型中最近3年的最新季節(jié)性影響強(qiáng)加給模型。 好吧,讓我們預(yù)測下一個(gè)24個(gè)月。為此,你需要接下來24個(gè)月的季節(jié)性指數(shù)值。 
 SARIMAX預(yù)測 | 
|  |