https://momonoki2017.blogspot.com/2018/03/python10.html
こちらのサイトを参考に、秒刻みで記録されたflow1のARIMAによる予測を行っています。
python
1import statsmodels.api as sm 2import pandas as pd 3import numpy as np 4import requests 5import io 6from matplotlib import pylab as plt 7%matplotlib inline 8# グラフを横長にする 9from matplotlib.pylab import rcParams 10rcParams['figure.figsize'] = 15, 6 11 12row_data = pd.read_csv('2020.1.13sec.csv', encoding = "SHIFT-JIS") 13 14# float型にしないとモデルを推定する際にエラーがでる 15row_data.flow = row_data.flow.astype('float64') 16row_data.flow1 = row_data.flow1.astype('float64') 17# datetime型にしてインデックスにする 18row_data.time = pd.to_datetime(row_data.time) 19data = row_data.set_index("time") 20# 線形補間 21data['flow1'].interpolate(method='linear', inplace=True) 22 23# 階差を取る 24diff = data.flow1.diff() 25diff = diff.dropna() 26 27# Split data into train / test sets (約50000データあり) 28train = data.iloc[:len(data)-10000] 29test = data.iloc[len(data)-10000:] 30 31from statsmodels.tsa.arima_model import ARIMA 32model=ARIMA(train['flow1'],order=(5,1,2)) 33results=model.fit() 34 35start=len(train) 36end=len(train)+len(test)-1 37pred=results.predict(start=start,end=end,typ='levels').rename('ARIMA Predictions') 38pred.plot(legend=True) 39test['flow1'].plot(legend=True)
python
1predict_dy = results.get_prediction(start ='2021/1/14 3:41:01', end='2021/1/14 6:27:40') 2type(predict_dy)
AttributeError Traceback (most recent call last)
<ipython-input-50-d23d818922c4> in <module>
----> 1 predict_dy = results.get_prediction(start ='2021/1/14 3:41:01', end='2021/1/14 6:27:40')
2 type(predict_dy)
~/opt/anaconda3/lib/python3.8/site-packages/statsmodels/base/wrapper.py in getattribute(self, attr)
34 pass
35
---> 36 obj = getattr(results, attr)
37 data = results.model.data
38 how = self._wrap_attrs.get(attr)
AttributeError: 'ARIMAResults' object has no attribute 'get_prediction'
ここで行き詰まってしまいます。
最終的には
python
1plt.figure(figsize=(8, 4)) 2 3plt.plot(test, label="Actual") 4plt.plot(predict_dy.predicted_mean, c="b", label="model-pred", alpha=0.7) 5 6plt.fill_between(predict_dy_ci.index, predict_dy_ci.iloc[:, 0], predict_dy_ci.iloc[:, 1], color='g', alpha=0.2) 7plt.legend(loc='upper left')
を用いて予測の信頼区間を塗りつぶした図を目指しています。
get_predictionがうまくいかない理由がわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/15 06:13