質問編集履歴

3

画像の変更、画像の詳細を記載

2020/01/20 00:43

投稿

lala012
lala012

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,115 +1,3 @@
1
- ```ここに言語を入力
2
-
3
- コード
4
-
5
- import pandas as pd
6
-
7
- import numpy as np
8
-
9
- import matplotlib.pyplot as plt
10
-
11
- %matplotlib inline
12
-
13
- plt.style.use('ggplot')
14
-
15
- plt.xkcd()
16
-
17
- import statsmodels.api as sm # version 0.8.0以上
18
-
19
-
20
-
21
- # CSVファイル読み込み(事前にダウンロードしたCSVファイルを利用)
22
-
23
- df = pd.read_csv('3ye.csv')
24
-
25
-
26
-
27
- # Pandas.Seriesにデータを格納(データに気温、インデックスは日付)
28
-
29
- data = pd.Series(df['kion'], dtype='float')
30
-
31
- data.index = pd.to_datetime(df['day'])
32
-
33
-
34
-
35
- #passengers.plot()
36
-
37
-
38
-
39
- data_diff = data - data.shift() # 差分(1階差) Pandasのdiff()でpassengers.diff()としてもOK
40
-
41
- data_diff = data_diff.dropna() # 1個できるNaNデータは捨てる
42
-
43
- #data_diff.plot()
44
-
45
-
46
-
47
- import warnings
48
-
49
- warnings.filterwarnings('ignore') # 計算警告を非表示
50
-
51
-
52
-
53
- # 自動ARMAパラメータ推定関数
54
-
55
- res_selection = sm.tsa.arma_order_select_ic(data_diff, ic='aic', trend='nc')
56
-
57
- #res_selection
58
-
59
-
60
-
61
- sarimax = sm.tsa.SARIMAX(data,
62
-
63
- order=(3, 1, 3),
64
-
65
- seasonal_order=(0, 1, 1, 12),
66
-
67
- enforce_stationarity = False,
68
-
69
- enforce_invertibility = False
70
-
71
- ).fit()
72
-
73
- sarimax_resid = sarimax.resid
74
-
75
-
76
-
77
- data_train = data['2015-01-01':'2017-12-01'] # モデル作成用データ
78
-
79
- data_test = data['2017-01-01':'2019-01-01'] # テスト用データ2年分
80
-
81
-
82
-
83
- sarimax_train = sm.tsa.SARIMAX(data_train,
84
-
85
- order=(3, 1, 2),
86
-
87
- seasonal_order=(0, 1, 1, 4),
88
-
89
- enforce_stationarity = False,
90
-
91
- enforce_invertibility = False
92
-
93
- ).fit()
94
-
95
-
96
-
97
- sarimax_train_pred = sarimax_train.predict('2018-01-01', '2019-12-01') # テストデータ2年分予測
98
-
99
-
100
-
101
- plt.plot(passengers, label="original")
102
-
103
- plt.plot(sarimax_train_pred, c="b", label="model-pred", alpha=0.7)
104
-
105
- plt.legend(loc='best')
106
-
107
- print(sarimax_train_pred)
108
-
109
-
110
-
111
- ```コード
112
-
113
1
  ```### 前提・実現したいこと
114
2
 
115
3
 
@@ -119,6 +7,74 @@
119
7
 
120
8
 
121
9
  ### 該当のソースコード
10
+
11
+ import pandas as pd
12
+
13
+ import numpy as np
14
+
15
+ import matplotlib.pyplot as plt
16
+
17
+ import statsmodels.api as sm
18
+
19
+ import datetime
20
+
21
+ %matplotlib inline
22
+
23
+ plt.style.use('ggplot')
24
+
25
+
26
+
27
+ import warnings
28
+
29
+ warnings.filterwarnings('ignore') # 計算警告を非表示
30
+
31
+
32
+
33
+ data_df = pd.read_csv('3ye.csv')
34
+
35
+ temp = pd.Series(data_df['kion'], dtype='float')
36
+
37
+ temp.index = pd.to_datetime(data_df['day'])
38
+
39
+
40
+
41
+ res_selection = sm.tsa.arma_order_select_ic(temp, ic='aic', trend='nc')
42
+
43
+ #res_selection
44
+
45
+
46
+
47
+ sarimax = sm.tsa.SARIMAX(temp,
48
+
49
+ order=(3, 2, 2),
50
+
51
+ seasonal_order=(1, 1, 1, 12),
52
+
53
+ enforce_stationarity=False,
54
+
55
+ enforce_invertibility=False
56
+
57
+ ).fit()
58
+
59
+
60
+
61
+
62
+
63
+ sarimax_pred = sarimax.predict('2017-01', '2019-10')
64
+
65
+
66
+
67
+ plt.figure(figsize=(12, 6))
68
+
69
+
70
+
71
+ plt.plot(sarimax_pred, c="b", label="model-pred")
72
+
73
+ plt.legend(loc='best')
74
+
75
+ ```
76
+
77
+ 使用している言語・ライブラリ
122
78
 
123
79
  ```ここに言語名を入力
124
80
 
@@ -132,8 +88,12 @@
132
88
 
133
89
 
134
90
 
135
- order=(p,d,q)の数値を換えてみたりした
91
+ order=(p,d,q)の数値を換えてみたりしましが結果が変わらなかった
136
92
 
137
- ![イメージ説明](113d21448735e0cbebaa787415d43d44.png)
93
+ ![イメージ説明](0b6e883b713e132971778ff161fa42d7.png)
138
94
 
139
95
  ここにより詳細な情報を記載してください。
96
+
97
+ 2017年1月から2019年10月までのグラフです。
98
+
99
+ 予測している部分は2019年1月から2019年10月までの部分です

2

コードの挿入部にコードを書き直しました

2020/01/20 00:42

投稿

lala012
lala012

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,6 @@
1
- ### 前提・実現したい
1
+ ```こに言語を入力
2
2
 
3
-
4
-
5
- SARIMAモデルを使用して気温予測をしたいのですがうまくいきません
6
-
7
-
8
-
9
- ### 該当のソースコード
3
+ コード
10
4
 
11
5
  import pandas as pd
12
6
 
@@ -112,6 +106,20 @@
112
106
 
113
107
  print(sarimax_train_pred)
114
108
 
109
+
110
+
111
+ ```コード
112
+
113
+ ```### 前提・実現したいこと
114
+
115
+
116
+
117
+ SARIMAモデルを使用して気温予測をしたいのですがうまくいきません
118
+
119
+
120
+
121
+ ### 該当のソースコード
122
+
115
123
  ```ここに言語名を入力
116
124
 
117
125
  python jupyter Notebook

1

文字の修正

2020/01/20 00:24

投稿

lala012
lala012

スコア4

test CHANGED
File without changes
test CHANGED
@@ -16,9 +16,9 @@
16
16
 
17
17
  %matplotlib inline
18
18
 
19
- plt.style.use('ggplot') # グラフのデザイン変更(お好みで利用)
19
+ plt.style.use('ggplot')
20
20
 
21
- plt.xkcd() # グラフのデザイン変更(お好みで利用、日本語は未対応)
21
+ plt.xkcd()
22
22
 
23
23
  import statsmodels.api as sm # version 0.8.0以上
24
24
 
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- # Pandas.Seriesにデータを格納(データに乗客数、インデックスは日付)
33
+ # Pandas.Seriesにデータを格納(データに気温、インデックスは日付)
34
34
 
35
35
  data = pd.Series(df['kion'], dtype='float')
36
36
 
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
 
83
- data_train = data['2015-01-01':'2017-12-01'] # モデル作成用データ(訓練)
83
+ data_train = data['2015-01-01':'2017-12-01'] # モデル作成用データ
84
84
 
85
85
  data_test = data['2017-01-01':'2019-01-01'] # テスト用データ2年分
86
86