Python での自動 ARIMA

Zeeshan Afridi 2023年10月10日
  1. Python での自動 ARIMA
  2. Python で auto_arima() 関数を使用する
  3. まとめ
Python での自動 ARIMA

この記事では、Python の Auto ARIMA とその仕組みについて学びます。

Python での自動 ARIMA

pmdarima ライブラリの auto_arima() 関数は、ARIMA モデルの最適なパラメーターの決定を支援し、結果として適合された ARIMA モデルを提供します。

このパッケージは、"pmdarima" に名前が変更される前は "Pyramid" と呼ばれていたことに注意してください。 "pmdarima" パッケージがインストールされていることを確認します。

パッケージがない場合は、ターミナルで次のコマンドを実行してインストールします。

pip install pmdarima

次のコマンドを使用して、パッケージが正常に作成されたかどうかをテストします。

from pmdarima.arima import auto_arima

Python で auto_arima() 関数を使用する

次のコードでは、data.csv はデータを含む CSV ファイルであり、Auto ARIMA に使用されます。 出力は、インデックス pqorder=(P,D,Q) を持つ値を持つデータフレームになります。

コード例:

import pmdarima as pm
import pandas as pd

df1 = pd.read_csv("data.csv", names=["value"], header=0)
model_1 = pm.auto_arima(
    df1.value,
    start_p=1,
    start_q=1,
    test="adf",
    max_p=3,
    max_q=3,
    m=1,
    d=None,
    seasonal=False,
    start_P=0,
    D=0,
    trace=True,
    error_action="ignore",
    suppress_warnings=True,
    stepwise=True,
)

print(model_1.summary())

出力:

Performing stepwise search to minimize aic
 ARIMA(1,1,1)(0,0,0)[0] intercept   : AIC=1605.366, Time=0.09 sec
 ARIMA(0,1,0)(0,0,0)[0] intercept   : AIC=1660.860, Time=0.01 sec
 ARIMA(1,1,0)(0,0,0)[0] intercept   : AIC=1619.269, Time=0.04 sec
 ARIMA(0,1,1)(0,0,0)[0] intercept   : AIC=1604.209, Time=0.04 sec
 ARIMA(0,1,0)(0,0,0)[0]             : AIC=1658.968, Time=0.01 sec
 ARIMA(0,1,2)(0,0,0)[0] intercept   : AIC=1605.215, Time=0.08 sec
 ARIMA(1,1,2)(0,0,0)[0] intercept   : AIC=1606.845, Time=0.12 sec
 ARIMA(0,1,1)(0,0,0)[0]             : AIC=1603.295, Time=0.02 sec
 ARIMA(1,1,1)(0,0,0)[0]             : AIC=1604.373, Time=0.03 sec
 ARIMA(0,1,2)(0,0,0)[0]             : AIC=1604.196, Time=0.04 sec
 ARIMA(1,1,0)(0,0,0)[0]             : AIC=1617.588, Time=0.04 sec
 ARIMA(1,1,2)(0,0,0)[0]             : AIC=1605.883, Time=0.04 sec

Best model:  ARIMA(0,1,1)(0,0,0)[0]
Total fit time: 0.580 seconds
                               SARIMAX Results
==============================================================================
Dep. Variable:                      y   No. Observations:                  173
Model:               SARIMAX(0, 1, 1)   Log Likelihood                -799.648
Date:                Sat, 03 Sep 2022   AIC                           1603.295
Time:                        23:15:18   BIC                           1609.590
Sample:                             0   HQIC                          1605.849
                                - 173
Covariance Type:                  opg
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
ma.L1         -0.5856      0.056    -10.478      0.000      -0.695      -0.476
sigma2       637.6579     54.893     11.616      0.000     530.069     745.247
===================================================================================
Ljung-Box (L1) (Q):                   0.54   Jarque-Bera (JB):                24.81
Prob(Q):                              0.46   Prob(JB):                         0.00
Heteroskedasticity (H):               0.18   Skew:                             0.41
Prob(H) (two-sided):                  0.00   Kurtosis:                         4.67
===================================================================================

Process finished with exit code 0

まとめ

ARIMA モデルは、今後数日間の株式のパフォーマンスを広範囲に推定します。 Python の auto_arima() 関数を使用して、当てはめた ARIMA モデルの最適なパラメーターを特定します。

auto_arima() 関数は、pmdarima という名前の Python ライブラリからインポートできます。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn