質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

909閲覧

時系列分析でのモデルの次数選択の際にWarningが出る

a18.

総合スコア13

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/12 03:06

#概要
私は現在、アイスクリームの売り上げの月ごとデータを使って時系列分析の勉強をしています。
その中で、AICとBICが最小になる次数を調べる段階で、Warningが出てしまいます。
調べたりしたのですが解決しませんでした。(試したことは最後にまとめました)
以下のコードでやっていることは、

データを読み込んで概要を表示。
全120時点中の最初の100時点のデータの1階差分を取って、そのグラフなどを表示。
AICとBICが最小になる次数を表示。(ここでWarningが出る)

という感じです。

csvファイルを取ってきたURLは以下です。
アイスクリームの売り上げデータのURL
csvファイルやその数値はおかしくないと思います。
csvファイルのデータの概要は以下のコード内で示してありますのでご覧ください。

#コード

python

1import numpy as np 2import matplotlib.pyplot as plt 3import pandas as pd 4from statsmodels.tsa import stattools 5 6df_ice = pd.read_csv('/content/drive/MyDrive/icecream.csv',encoding='shift-jis',skiprows=[0]) 7print(df_ice) 8df_ice.アイスクリーム.plot()

年 月 アイスクリーム
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
アイスクリームの売り上げのグラフ
アイスクリームの売り上げデータなので、周期性が見て取れます。
そして、10年分のデータなので大きな山が綺麗に10個あることも確認できます。

python

1y = pd.Series(df_ice.アイスクリーム.values, 2 index=pd.date_range('2003-1', periods=len(df_ice), freq='M')) 3y_diff = y[:100].diff().dropna() 4print(y_diff) 5y_diff.plot()

2003-02-28 -63.0
2003-03-31 97.0
2003-04-30 127.0
2003-05-31 140.0
2003-06-30 98.0
...
2010-12-31 72.0
2011-01-31 -77.0
2011-02-28 -57.0
2011-03-31 40.0
2011-04-30 133.0
Freq: M, Length: 99, dtype: float64
最初の100時点の差分

python

1# 次数選択の指標にAICとBICを選択 2info_criteria = stattools.arma_order_select_ic(y_diff, ic=['aic',"bic"]) 3# AICとBICが最小になる次数をそれぞれ表示 4info_criteria.aic_min_order,info_criteria.bic_min_order

python

1#結果 2#Warningメッセージ 3 4/usr/local/lib/python3.7/dist-packages/statsmodels/tsa/tsatools.py:668: RuntimeWarning: overflow encountered in exp 5 newparams = ((1-np.exp(-params))/(1+np.exp(-params))).copy() 6/usr/local/lib/python3.7/dist-packages/statsmodels/tsa/tsatools.py:668: RuntimeWarning: invalid value encountered in true_divide 7 newparams = ((1-np.exp(-params))/(1+np.exp(-params))).copy() 8/usr/local/lib/python3.7/dist-packages/statsmodels/tsa/tsatools.py:669: RuntimeWarning: overflow encountered in exp 9 tmp = ((1-np.exp(-params))/(1+np.exp(-params))).copy() 10/usr/local/lib/python3.7/dist-packages/statsmodels/tsa/tsatools.py:669: RuntimeWarning: invalid value encountered in true_divide 11 tmp = ((1-np.exp(-params))/(1+np.exp(-params))).copy() 12/usr/local/lib/python3.7/dist-packages/statsmodels/base/model.py:492: HessianInversionWarning: Inverting hessian failed, no bse or cov_params available 13 'available', HessianInversionWarning) 14/usr/local/lib/python3.7/dist-packages/statsmodels/base/model.py:512: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals 15 "Check mle_retvals", ConvergenceWarning) 16 17#AICとBICが最小になる次数それぞれ 18((2, 2), (2, 2))

#試したこと
y_diffではなく、yを用いて次数選択などをしてみましたが、変わらずWarningが出ました。

y_diff = y[:100].diff().dropna()の部分を、
y_diff = y[:100]
y_diff = y_diff.diff()
y_diff = y_diff.dropna()
という風に分解して書いてみましたが、改善しませんでした。

Warningメッセージについて調べましたが、解決のヒントになるようなものは見つかりませんでした。

英文でも、Google日本語訳文でもメッセージを読みましたが解決はできませんでした。

#コード一部引用

時系列解析―自己回帰型モデル・状態空間モデル・異常検知 ― 島田 直希著

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aokikenichi

2021/10/24 06:11

値が大きくなりすぎている。0で割っている。等の警告かと思います。 Warningなので、無視で良いと思いますがどこに不都合があるのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問