【備忘用】時系列データの定常化と非定常化用のモデル
時系列の統計的な性質が時間の推移によって変化しない定常過程を前提として分析が行われる。
ということで非定常過程のデータは定常過程に変換しないと分析できない。
定常化
1.バラつきが多い
対数変換 np.log(df)
平方根変換
2.トレンドが発生
階差系列 df.diff()
n移動平均を引く df - df.rolling(window=n).mean()
3.四半期毎の周期性の除去
季節階差
import statsmodels.api as sm
sm.tsa.seasonal_decompose(df, freq=周期)
4.ADF検定 拡張ディッキー-フラー検定(Augmented Dickey-Fuller test, ADF test)
単位根過程かどうかを調べる
p <= 0.05なら「単位根過程である」ことを「棄却」する ≒ 定常データ
import statsmodels.api as sm
adf_result = sm.tsa.stattools.adfuller(df, autolag ='AIC')
print(adf_result[1])
非定常用のモデル
1.ARIMAモデル
以前の値に影響されるモデルであり直前p個の値と相関をもつようなARモデルAR(p)と、
以前の誤差に影響されるモデルで直前q個の値の影響を受けるようなMAモデルMA(q)
を合成したARMA(p, q)を、d時点前の階差系列に適応したもの。
手順としては、
df_diff = np.diff(df, n=i)
print(sm.tsa.arma_order_select_ic(df_diff, ic="aic", trend="nc"))
上記でi次和文過程のAIC値を表示します。
これをi次を変えながら繰り返しAICが一番小さい行列を行=p、列=q、i=dとしてモデルを作成する
2.SARIMAモデル
ARIMAモデルをさらに季節周期を持つ時系列データにも拡張できるようにしたモデル。
SARIMAモデルは(p, d, q)のパラメーターに加えて(sp, sd, sq, s)というパラメーターも持つ。
この記事が気に入ったらサポートをしてみませんか?