#概要
アイスクリームの売り上げの月ごとデータがあり、コレログラムを書いたところ偏自己相関の値がおかしいです。
-40くらいになってしまう点が一つあります。
どこがおかしいのでしょうか?
以下のコードでやっていることは、
データを読み込んでfloat型にする。
最初の100時点のデータの差分を取って、AICとBICが最小になる次数を表示。
(p,q)=(2,2)でモデルを当てはめて、偏自己相関のコレログラムを作成。
という感じです。
(一番最後のlagsを指定しなければ自動的に20になり、コレログラムはおかしくありません。)
csvファイルを取ってきたURLは以下です。
アイスクリームの売り上げデータのURL
csvファイルはおかしくないと思います。最後にdf_iceの概要となるものを追加で示しました。
python
1import numpy as np 2np.random.seed(555) 3import matplotlib.pyplot as plt 4import pandas as pd 5from statsmodels.graphics import tsaplots 6from statsmodels.tsa import stattools 7from statsmodels.tsa.arima_model import ARMA 8 9df_ice = pd.read_csv('icecream.csv',encoding='shift-jis',skiprows=[0]) 10y = pd.Series(df_ice.アイスクリーム.values, 11 index=pd.date_range('2003-1', periods=len(df_ice), freq='M')) 12y = y.astype('float') 13y
2003-01-31 331.0
2003-02-28 268.0
2003-03-31 365.0
2003-04-30 492.0
2003-05-31 632.0
...
2012-08-31 1332.0
2012-09-30 849.0
2012-10-31 515.0
2012-11-30 326.0
2012-12-31 414.0
Freq: M, Length: 120, dtype: float64
python
1y_diff = y.diff()[:100].dropna() 2 3# 次数選択の指標にAICとBICを選択 4info_criteria = stattools.arma_order_select_ic(y_diff, ic=['aic', 'bic']) 5# AICとBICが最小になる次数をそれぞれ表示 6info_criteria.aic_min_order, info_criteria.bic_min_order
((2, 2), (2, 2))
python
1# p=2, q=2のARMAモデルのインスタンスを生成 2model = ARMA(y_diff, (2, 2)) 3# y_diffに対してモデルを当てはめる 4results = model.fit() 5# 残差の抽出 6res = results.resid 7# 偏自己相関 8tsaplots.plot_pacf(res, lags=40) 9#lagsの指定なしだと自動的に20になり、コレログラムはおかしくならない
###df_iceの概要
python
1df_ice = pd.read_csv('icecream.csv',encoding='shift-jis',skiprows=[0]) 2df_ice
年 月 アイスクリーム
0 2003 1 331
1 2003 2 268
2 2003 3 365
3 2003 4 492
4 2003 5 632
... ... ... ...
115 2012 8 1332
116 2012 9 849
117 2012 10 515
118 2012 11 326
119 2012 12 414
120 rows × 3 columns
python
1df_ice.アイスクリーム.plot()
時系列解析―自己回帰型モデル・状態空間モデル・異常検知 ― 島田 直希著
あなたの回答
tips
プレビュー