1. ホーム
  2. python

[解決済み] python の auto.arima() 相当品

2023-07-24 06:47:36

質問

週間売上を予測するために <ストライク ARMA ARIMA モデルを使っています。で order(p,d,q) を調整する関数が見つかりませんでした。 statsmodels . 現在、Rには関数 forecast::auto.arima() という関数があり、 (p,d,q) パラメータを調整することができます。

私のモデルのために正しい順序を選択するためにどのように行くのですか?この目的のためにpythonで利用可能なライブラリはありますか?

どのように解決するのですか?

いくつかのアプローチを実施することができます。

  1. ARIMAResults 含む aic そして bic . その定義によれば、( ここで はこちら ), これらの基準は、モデルのパラメータ数に対してペナルティを課します。ですから、モデルを比較するためにこれらの数字を使うことができます。また、scipyには optimize.brute があり、これは指定されたパラメータ空間でグリッド検索を行います。つまり、このようなワークフローが機能するはずです。

    def objfunc(order, exog, endog):
        from statsmodels.tsa.arima_model import ARIMA
        fit = ARIMA(endog, order, exog).fit()
        return fit.aic()
    
    from scipy.optimize import brute
    grid = (slice(1, 3, 1), slice(1, 3, 1), slice(1, 3, 1))
    brute(objfunc, grid, args=(exog, endog), finish=None)
    
    

    必ず brutefinish=None .

  2. 以下のものを取得することができます。 pvalues から ARIMAResults . ですから、一種のステップフォワードアルゴリズムは、追加されたパラメータに対して最も低いp値を得る次元にわたって、モデルの次数を増加させるという実装が簡単です。

  3. 使用方法 ARIMAResults.predict を使用して、代替モデルを交差検証します。最良のアプローチは、時系列の末尾(例えば、直近の5%のデータ)をサンプルとして除外し、これらのポイントを使用して、代替モデルを得ることです。 テスト エラー を得るためにこれらのポイントを使用することです。