【統計基礎】pythonで実装!時系列データの自己相関:コレログラムの作成

python
あい
あい

今回はpythonで

コレログラムを実装します

[PR]※本サイトには、プロモーションが含まれています

今回使用するデータセット

3年分の電気使用量データ

使用量(kWh)
20211320
20212280
20213300
20214310
20215350
20216400
20217450
20218480
20219420
202110370
202111340
202112390
20221330
20222290
20223310
20224320
20225360
20226410
20227460
20228490
20229430
202210380
202211350
202212400
20231340
20232300
20233320
20234330
20235370
20236420
20237470
20238500
20239440
202310390
202311360
202312410

コレログラムを実装する

まずpythonにデータを読み込ませます

import pandas as pd
import matplotlib.pyplot as plt

# データをリストにまとめる
data = {
    '年': [2021]*12 + [2022]*12 + [2023]*12,
    '月': list(range(1, 13)) * 3,
    '使用量(kWh)': [
        320, 280, 300, 310, 350, 400, 450, 480, 420, 370, 340, 390,
        330, 290, 310, 320, 360, 410, 460, 490, 430, 380, 350, 400,
        340, 300, 320, 330, 370, 420, 470, 500, 440, 390, 360, 410
    ]
}

# データフレームに変換
df = pd.DataFrame(data)

# データフレームを表示
print(df.head(5))

実行結果

      年  月  使用量(kWh)
0  2021  1       320
1  2021  2       280
2  2021  3       300
3  2021  4       310
4  2021  5       350

読み込めていますね

次に横軸年と、縦軸電気の使用量の

折れ線グラフを作成し電気量の推移を確認します

最初に年と月のデータを合体させます

df['年月'] = df.apply(lambda row: f"{row['年']}-{row['月']:02d}", axis=1)
print(df["年月"])

実行結果

0    2021-01-01
1    2021-02-01
2    2021-03-01
3    2021-04-01
4    2021-05-01
5    2021-06-01

合体出来ました

折れ線グラフを下記コードで作成します

plt.plot(df["年月"], df["使用量(kWh)"], marker ="o")
plt.xticks(rotation = 90)
plt.xlabel("日付",fontname ="MS Gothic")
plt.ylabel("使用量(kwh)",fontname ="MS Gothic")
plt.title("電気の使用量(kwh)",fontname = "MS Gothic")
plt.tight_layout()
plt.show()

実行結果

コレログラムを作成します

下記ライブラリをインストールしてください

from statsmodels.graphics.tsaplots import plot_acf

コレログラムを下記コードで作成してください

plot_acf(df['使用量(kWh)'], lags=24, alpha=None, title='使用量 (kWh) のコレログラム', zero=False)

# グラフのタイトルとラベルを設定
plt.title('使用量 (kWh) のコレログラム', fontsize=16, fontname='MS Gothic')
plt.xlabel('ラグ', fontsize=14, fontname='MS Gothic')
plt.ylabel('相関', fontsize=14, fontname='MS Gothic')

# グラフを表示
plt.tight_layout()
plt.show()

実行結果

最後にコードを纏めておきます

グラフのコードは混乱するため分けて纏めます

電気の使用量の折れ線グラフを作成するコード

import pandas as pd
import matplotlib.pyplot as plt

# データをリストにまとめる
data = {
    '年': [2021]*12 + [2022]*12 + [2023]*12,
    '月': list(range(1, 13)) * 3,
    '使用量(kWh)': [
        320, 280, 300, 310, 350, 400, 450, 480, 420, 370, 340, 390,
        330, 290, 310, 320, 360, 410, 460, 490, 430, 380, 350, 400,
        340, 300, 320, 330, 370, 420, 470, 500, 440, 390, 360, 410
    ]
}

# データフレームに変換
df = pd.DataFrame(data)

# データフレームを表示
print(df.head(5))

df['年月'] = df.apply(lambda row: f"{row['年']}-{row['月']:02d}", axis=1)
print(df["年月"])

plt.plot(df["年月"], df["使用量(kWh)"], marker ="o")
plt.xticks(rotation = 90)
plt.xlabel("日付",fontname ="MS Gothic")
plt.ylabel("使用量(kwh)",fontname ="MS Gothic")
plt.title("電気の使用量(kwh)",fontname = "MS Gothic")
plt.tight_layout()
plt.show()

電気の使用量のコレログラムを作成するコード

import pandas as pd
import matplotlib.pyplot as plt

# データをリストにまとめる
data = {
    '年': [2021]*12 + [2022]*12 + [2023]*12,
    '月': list(range(1, 13)) * 3,
    '使用量(kWh)': [
        320, 280, 300, 310, 350, 400, 450, 480, 420, 370, 340, 390,
        330, 290, 310, 320, 360, 410, 460, 490, 430, 380, 350, 400,
        340, 300, 320, 330, 370, 420, 470, 500, 440, 390, 360, 410
    ]
}

# データフレームに変換
df = pd.DataFrame(data)

# データフレームを表示
print(df.head(5))

from statsmodels.graphics.tsaplots import plot_acf

plot_acf(df['使用量(kWh)'], lags=24, alpha=None, title='使用量 (kWh) のコレログラム', zero=False)

# グラフのタイトルとラベルを設定
plt.title('使用量 (kWh) のコレログラム', fontsize=16, fontname='MS Gothic')
plt.xlabel('ラグ', fontsize=14, fontname='MS Gothic')
plt.ylabel('相関', fontsize=14, fontname='MS Gothic')

# グラフを表示
plt.tight_layout()
plt.show()
タイトルとURLをコピーしました