ARIMAとSARIMAモデル
AR、MA、Iの構成要素、ACF/PACFによるパラメータ選択、statsmodelsでのARIMAの適合について学習します。
「ARIMAとSARIMAモデル」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
ARIMAとは
ARIMAはAutoRegressive Integrated Moving Averageの略です。自己回帰(p)、積分/差分(d)、誤差の移動平均(q)という3つの要素を使って定常時系列をモデル化し、ARIMA(p, d, q)と表記します。
AR(p):自己回帰
AR項では、直前のp個の値の線形結合から次の値を予測します。今日の値が直近数日の値に強く依存する場合は、pにゼロ以外の値が必要です。
例:p=2では、直近2つの観測値を予測変数として使用します。
I(d):積分/差分
I項は、時系列を定常化するために必要なd差分次数です。これは前のレッスンでADF検定によって求めたdとまったく同じです。d=1で線形トレンドを取り除きます。
MA(q):移動平均
MA項では、過去q個の予測誤差(ショック)を使って次の値をモデル化します。AR項では捉えられない短期的なノイズの補正を表現します。
statsmodelsでのARIMAの適合
系列をendogとして渡し、選択した次数タプルを指定します。
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(endog=series, order=(p, d, q))
fit = model.fit()
print(fit.summary())予測
モデルを適合させたら、forecastまたはget_forecastを使って将来の値を生成します。get_forecastでは信頼区間も取得できます。
preds = fit.forecast(steps=12) # next 12 periods
fc = fit.get_forecast(steps=12)
ci = fc.conf_int() # confidence intervalsACFとPACFのプロット
pとqを選ぶには、自己相関プロットを確認します。
- ACF(自己相関)はq(MA次数)の選択に役立ちます。
- PACF(偏自己相関)はp(AR次数)の選択に役立ちます。
相関が急に打ち切られるラグを探します。
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
plot_acf(series.diff().dropna())
plot_pacf(series.diff().dropna())次数選択のためのAICとBIC
AICとBICは、複雑さに対するペナルティを加味しながらモデルの適合度を評価します。値が低いほど優れています。複数の(p,d,q)候補を適合させ、AICまたはBICが最も低いものを選びます。BICのほうが追加パラメータに対するペナルティが強くなります。
print("AIC:", fit.aic)
print("BIC:", fit.bic)次数のグリッドサーチ
一般的な方法では、p、d、qの小さな範囲を順に試し、それぞれを適合させて、AICが最も低いものを残します。pmdarima.auto_arimaのようなライブラリを使うと、この検索を自動化できます。
best = None
for p in range(3):
for q in range(3):
try:
f = ARIMA(series, order=(p, 1, q)).fit()
if best is None or f.aic < best[1]:
best = ((p, 1, q), f.aic)
except Exception:
pass
print(best)季節性のためのSARIMA
SARIMAでは季節要素を追加します。(P, D, Q, m)において、mは季節周期です(月次データで年周期なら12)。通常のARIMAでは扱えない繰り返しパターンに対応できます。
from statsmodels.tsa.statespace.sarimax import SARIMAX
model = SARIMAX(series,
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12))
fit = model.fit()ARIMAとSARIMA
- ARIMA(p,d,q):トレンドと短期的な依存関係を扱いますが、季節性は扱いません。
- SARIMA(p,d,q)(P,D,Q,m):繰り返し周期のための季節項を追加します。
分解結果で明確な季節性が確認できた場合は、SARIMAを選択します。
確認テスト
ARIMAに関する知識をテストします。
まとめ
ARIMA(p,d,q)について学びました。ARは過去の値を使い、Iは差分次数を表し、MAは過去の誤差を使います。ARIMA(endog, order=...)でモデルを適合させ、ACF/PACFとAIC/BICで次数を選択し、季節性に対応するためSARIMAへ拡張しました。次は自動予測のためのProphetです。
よくある質問
「ARIMAとSARIMAモデル」レッスンは無料ですか?
はい。「ARIMAとSARIMAモデル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「ARIMAとSARIMAモデル」で何を学びますか?
AR、MA、Iの構成要素、ACF/PACFによるパラメータ選択、statsmodelsでのARIMAの適合について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ARIMAとSARIMAモデル」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 時系列の構成要素と定常性
- ARIMAとSARIMAモデル
- 自動予測のためのProphet
- 時系列予測のためのLSTM