- 問題
- 答え
- 解説
Python コード:
import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.graphics.tsaplots import plot_acf np.random.seed(0) data = np.random.randn(100) df = pd.Series(data) plot_acf(df, lags=20) plt.show()
回答の選択肢:
(A) 時系列データの自己共分散グラフ
(B) 時系列データの移動平均グラム
(C) 時系列データの偏交互相関グラフ
(D) 時系列データの自己相関グラフ
正解: (D)
回答の選択肢:
(A) 時系列データの自己共分散グラフ
(B) 時系列データの移動平均グラム
(C) 時系列データの偏交互相関グラフ
(D) 時系列データの自己相関グラフ
- コードの解説
-
このコードは、時系列データの自己相関を可視化するためのものです。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.graphics.tsaplots import plot_acf np.random.seed(0) data = np.random.randn(100) df = pd.Series(data) plot_acf(df, lags=20) plt.show()
詳しく説明します。
まず、乱数生成のシードを設定し、平均0、標準偏差1の正規分布に従うランダムな数値を100個生成します。
np.random.seed(0) data = np.random.randn(100)
生成したランダムな数値を
Pandas
のSeries
オブジェクトに変換します。df = pd.Series(data)
df
に格納されているデータは以下です。0 1.764052 1 0.400157 2 0.978738 3 2.240893 4 1.867558 ... 95 0.706573 96 0.010500 97 1.785870 98 0.126912 99 0.401989 Length: 100, dtype: float64
時系列データ
df
の自己相関関数(ACF)をラグ20までプロットします。plot_acf(df, lags=20) plt.show()
- コレログラムとは?
-
コレログラム(Correlogram)とは、時系列データの自己相関関数(ACF)を視覚的に表現したグラフのことです。
自己相関関数は、時系列データの異なる時点間の相関を測定するもので、特定のラグ(遅れ)に対する相関係数を計算します。
コレログラムは、これらの相関係数をラグごとにプロットしたもので、時系列データの周期性や自己相関のパターンを視覚的に確認するのに役立ちます。
コレログラムの特徴
- ラグ(Lag): 横軸はラグ(遅れ)を示し、縦軸は相関係数を示します。
- 相関係数(Correlation Coefficient): 各ラグに対する相関係数がプロットされます。相関係数は-1から1の範囲を取り、1に近いほど強い正の相関、-1に近いほど強い負の相関を示します。
- 信頼区間(Confidence Interval): 通常、コレログラムには信頼区間が表示され、相関係数が統計的に有意かどうかを判断するのに役立ちます。
コレログラムは、時系列データの分析において、データの自己相関構造を理解し、モデルの選択やパラメータの設定に役立ちます。
例えば、自己回帰モデル(ARモデル)や移動平均モデル(MAモデル)の適合性を評価する際に使用されます。
- コレログラムの見方
-
コレログラムは、時系列データの自己相関関数(ACF)を視覚的に表現したグラフです。
以下のポイントに注目してコレログラムを読み取ります。
ラグ(Lag)
- 横軸はラグ(遅れ)を示します。
- ラグ0は自己相関が1(完全相関)であることを示します。
- ラグが1, 2, 3,…と増えるごとに、データポイントがどれだけ遅れているかを示します。
相関係数(Correlation Coefficient)
- 縦軸は相関係数を示します。
- 相関係数は-1から1の範囲を取り、1に近いほど強い正の相関、-1に近いほど強い負の相関を示します。
- 0に近い値は相関がないことを示します。
信頼区間(Confidence Interval)
- 通常、コレログラムには信頼区間が表示されます。
- 信頼区間は、相関係数が統計的に有意かどうかを判断するのに役立ちます。
- 信頼区間の外にある相関係数は、統計的に有意である可能性が高いです。
周期性(Seasonality)
- コレログラムに周期的なパターンが見られる場合、データに周期性があることを示します。
- 例えば、ラグが一定間隔で高い相関を示す場合、データに周期的な変動があることを示唆します。
減衰(Decay)
- ラグが増えるにつれて相関係数が減衰する場合、データに自己相関があることを示します。
- 減衰の速さは、データの自己相関の強さを示します。
具体的な例を見てみましょう。
以下のコードを実行して、コレログラムを表示します。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.graphics.tsaplots import plot_acf np.random.seed(0) data = np.random.randn(100) df = pd.Series(data) plot_acf(df, lags=20) plt.show()
このコードは、ランダムなデータのコレログラムを表示します。
コレログラムを見て、上記のポイントに注目してデータの特性を読み取ります。