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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4417閲覧

時系列データを使った偏自己相関のコレログラムが描画されません

chaki1957

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/01/17 02:16

RのサンプルデータAir Passenger を用い、自己相関(AFC)と偏自己相関(PAFC)のコレログラムを描画しようと思っていますが、自己相関は描画されますが、偏自己相関が描画されません。
環境:Python3.x,Jupyternotebook

Python3

1# ライブラリの読み込み 2import pandas as pd 3import numpy as np 4import matplotlib.pyplot as plt 5%matplotlib inline 6import statsmodels.api as sm 7 8# データ(csv)の読み込みと確認 9df = pd.read_csv('AirPassengers.csv') 10pd.read_csv("AirPassengers.csv") 11 12# データ整形 13# pd.Series()を使って、データはDataFrameに取り込んだ乗客数(#Passengers)を指定して、dtypeにfloatに設定 14passengers = pd.Series(df['#Passengers'], 15 dtype='float' 16 ) 17 18# インデックスに日付を設定 19passengers.index = pd.to_datetime(df['Month']) 20 21#データ格納の可否を確認 22print(passengers.index.dtype) 23print(len(passengers)) 24passengers.head() 25 26# 自己相関(ACF)のグラフ(コレログラム)自動作成 27fig = plt.figure(figsize=(12,4)) 28ax1 = fig.add_subplot(111) 29 30# 飛行乗客数データ、ラグ40、 31sm.graphics.tsa.plot_acf(passengers, 32 lags=40, 33 ax=ax1 34 ) 35 36plt.show() 37 38# 自己相関(ACF)と偏自己相関(PACF)のグラフを縦に並べ比較 39# 自己相関(ACF)のグラフ 40ax1 = fig.add_subplot(211) 41sm.graphics.tsa.plot_acf(passengers, 42 lags=40, 43 ax=ax1 44 ) 45plt.show() 46 47# 偏自己相関(PACF)のグラフ 48ax2 = fig.add_subplot(212) 49sm.graphics.tsa.plot_pacf(passengers, 50 lags=40, 51 ax=ax2 52 ) 53 54 55plt.tight_layout() 56

偏自己相関のコレログラムが描かれず、以下のメッセージが出ます。
(自己相関のコレログラムは描かれます)
C:\Users\User name\Anaconda3\lib\site-packages\statsmodels\regression\linear_model.py:1283: RuntimeWarning: invalid value encountered in sqrt
return rho, np.sqrt(sigmasq)

教えて下さると助かります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

出力されない原因は、plt.show()の位置が影響しています。
途中のplt.show()を全て削除し、plt.tight_layoutの直後に1回だけ記述すると表示されるようになります。

質問に記載のメッセージはワーニングです。内容は偏自己相関の計算途中であり得ない値を検出したというものです。(具体的には平方根のインプットであるsigmasqが負値)

投稿2019/01/17 08:01

R.Shigemori

総合スコア3376

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

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

chaki1957

2019/01/21 01:13

ご回答ありがとうございます。所用でレスが遅れて申し訳ありませんでした。 ご指摘通り、plt.tight_layoutの直後に1回だけ記述することで表示されました。 ただし、依然同様のワーニングが出ます。この点は、当方のコードのどこかに不備があるかと思いますのので、コードを見直してみます。 取り急ぎのお礼までです。
R.Shigemori

2019/01/21 04:40

ワーニングの件ですが、以下の記事で使用しているものと同一だとすると、自己相関を計算する前に少し工夫をする必要があります。 https://logics-of-blue.com/python-time-series-analysis/ 記事にある生データのプロットからわかるように、このデータは時間が進むにつれ振幅が大きくなります。このような場合、そのまま自己相関を求めるとlagパラメーターの大きさによっては計算不能のワーニングが出ます。 回避方法としては1)lag=36などと値を小さくする、2)あらかじめ対数変換を行う、というものがあります。一般的に時系列分析をする際、対象データは定常性が仮定されるので、時間が経つにつれ振幅が大きくなるようなデータは定常仮定にないので、対数変換してから自己相関を求めます。
chaki1957

2019/01/21 06:39

ご指摘ありがとうございます。lag数を小さくすることで、ワーニングが出なくなりました。 データー自体が大きくないと思われたので対数数列は考えませんでした。 次は、2)あらかじめ対数変換を行う を試し、lag数を小さくたものとの比較を行ってみたいと思います。 どうもありがとうごっざいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問