SARIMAモデル

Pythonで学ぶARIMAモデル

James Fulton

Climate informatics researcher

SARIMAモデルの概要

季節ARIMA = SARIMA

  • 非季節の次数
    • p: 自己回帰次数
    • d: 差分次数
    • q: 移動平均次数

SARIMA(p,d,q)(P,D,Q)$_S$

  • 季節の次数
    • P: 季節自己回帰次数
    • D: 季節差分次数
    • Q: 季節移動平均次数
    • S: 1サイクル当たりの時点数
Pythonで学ぶARIMAモデル

SARIMAモデルの概要

ARIMA(2,0,1)モデル: $$y_t = a_1 y_{t-1} + a_2 y_{t-2} + m_1 \epsilon_{t-1} + \epsilon_t$$

SARIMA(0,0,0)(2,0,1)$_7$モデル: $$y_t = a_7 y_{t-7} + a_{14} y_{t-14} + m_7 \epsilon_{t-7} + \epsilon_t$$

Pythonで学ぶARIMAモデル

SARIMAモデルの当てはめ

# Imports
statsmodels.tsa.statespace.sarimax import SARIMAX

# Instantiate model model = SARIMAX(df, order=(p,d,q), seasonal_order=(P,D,Q,S))
# Fit model results = model.fit()
Pythonで学ぶARIMAモデル

季節差分

1シーズン前の値を引きます

$$\Delta y_t = y_t - y_{t-S}$$

# Take the seasonal difference
df_diff = df.diff(S)
Pythonで学ぶARIMAモデル

SARIMAの差分化

時系列

Pythonで学ぶARIMAモデル

SARIMAの差分化

一次差分後の時系列

Pythonで学ぶARIMAモデル

SARIMAの差分化

一次差分+季節一次差分後の時系列

Pythonで学ぶARIMAモデル

p と q の特定

Pythonで学ぶARIMAモデル

P と Q の特定

Pythonで学ぶARIMAモデル

季節ACFとPACFのプロット

# Create figure
fig, (ax1, ax2) = plt.subplots(2,1)

# Plot seasonal ACF
plot_acf(df_diff,  lags=[12,24,36,48,60,72], ax=ax1)

# Plot seasonal PACF
plot_pacf(df_diff, lags=[12,24,36,48,60,72], ax=ax2)

plt.show()
Pythonで学ぶARIMAモデル

練習に進みましょう!

Pythonで学ぶARIMAモデル

Preparing Video For Download...