次の Python コードの出力はどれでしょうか?
Python コード:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(12)
data = np.random.randn(100)
ts = pd.Series(data)
pd.plotting.lag_plot(ts, lag=3)
plt.show()
回答の選択肢:
(A) 3期前のラグの時系列データの折れ線グラフ
(B) 3期後のラグの時系列データの折れ線グラフ
(C) 各時点と3期間前のデータの関係性を示す散布図
(D) 各時点と3期間後のデータの関係性を示す散布図
出力例:
正解: (C)
回答の選択肢:
(A) 3期前のラグの時系列データの折れ線グラフ
(B) 3期後のラグの時系列データの折れ線グラフ
(C) 各時点と3期間前のデータの関係性を示す散布図
(D) 各時点と3期間後のデータの関係性を示す散布図
このコードは、時系列データのラグプロット(遅延プロット)を作成します。ラグプロットは、時系列データがランダムなホワイトノイズか、それとも時間依存のパターンを持っているかを視覚的に確認するための有効なツールです。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(12)
data = np.random.randn(100)
ts = pd.Series(data)
pd.plotting.lag_plot(ts, lag=3)
plt.show()
詳しく説明します。
numpyのrandom.randn関数を使用して、平均0、標準偏差1の標準正規分布に従うランダムな100個の数字を生成します。このデータを時系列データとします。
np.random.seed(12)
data = np.random.randn(100)
data
に格納されているデータは次のようになっています。
[ 0.47298583 -0.68142588 0.2424395 -1.70073563 0.75314283 -1.53472134
0.00512708 -0.12022767 -0.80698188 2.87181939 -0.59782292 0.47245699
1.09595612 -1.2151688 1.34235637 -0.12214979 1.01251548 -0.91386915
-1.02953021 1.20979645 0.5018723 0.13884618 0.64076111 0.52733267
-1.15436024 -2.21333348 -1.68175651 -1.78809425 -2.21853495 -0.64743078
-0.52840432 -0.03920917 0.21497595 -0.3843588 -0.25390408 0.07325207
-0.99720384 -0.71385629 0.03541635 -0.67794537 -0.57188106 -0.10586232
1.33583134 0.31866529 -0.33759525 -0.58526828 -0.11491994 2.24181779
-3.14741652 0.53513589 0.23249044 0.86761195 -1.14821271 2.11434424
1.00094276 -0.051415 0.1597877 -0.71626359 0.05052283 -0.14333741
0.94357539 0.35764423 -0.0834492 0.6778061 0.55606037 0.22271946
-1.52898548 1.02921118 -1.16625876 -1.00956165 -0.10526799 0.51202216
1.40772776 -1.68769633 1.47123399 1.63646291 -0.46139494 -0.20136227
-0.57181673 -0.60329911 -1.33938922 -1.68965292 -0.19932734 0.25777259
1.82882072 -1.00100155 -2.09169121 0.14655971 -0.4663511 0.35622301
-0.39787973 -1.25922352 -0.68887869 0.80263045 0.27239104 -0.9691765
0.87196812 -1.44635944 -0.53648126 0.19792052]
この生成したデータをpandasのSeriesに変換しています。Seriesはpandasの基本的なデータ構造の一つで、1次元の配列のようなオブジェクトで、同じタイプのデータ(整数、文字列、浮動小数点数など)を保持できます。
ts = pd.Series(data)
ts
に格納されているデータは次のようになっています。
0 0.472986
1 -0.681426
2 0.242439
3 -1.700736
4 0.753143
...
95 -0.969176
96 0.871968
97 -1.446359
98 -0.536481
99 0.197921
Length: 100, dtype: float64
pandasのplotting.lag_plot関数を使用して、ラグプロットを生成しています。この関数は、時系列データのラグ(遅延)バージョンとオリジナルを散布図にプロットします。ここではラグを3に設定したので、各時点のデータ(t)に対して、3期間前のデータ(t-3)との関係が示されます。
pd.plotting.lag_plot(ts, lag=3)
plt.show()
matplotlibのshow関数を呼び出して、生成したプロットを表示しています。