0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

統計検定2級 コレログラム

Posted at

はじめに

今回は統計検定2級を勉強する中で、コレログラムという単語が出てきたので、学んでいきます!

🔍 コレログラム(correlogram)とは?

📝 一言でいうと?

「相関関係を見える化した図」です!


🧭 コレログラムの2つのタイプ

① 時系列のコレログラム

「過去のデータ」と「今のデータ」の関係(相関)を調べる図。

たとえば…

  • 「昨日の気温」と「今日の気温」が似ていたら → 相関が強い ✅
  • こういう関係を棒グラフで見える化するのが「時系列コレログラム」

✅ こんなときに使う

  • データに**繰り返しパターン(周期性)**があるかを知りたいとき
  • ARIMAなどの時系列モデルを作るときの事前チェック

📌 よく使う関数

  • acf()(自己相関)
  • pacf()(偏自己相関)

② 多変量のコレログラム(相関行列ヒートマップ)

いろんな変数同士の相関をまとめて見られる図。

たとえば、次のような関係を調べたいとき:

変数A 変数B 相関
身長 体重 強い
血液型 身長 弱い

📊 こういった相関を色で見せる図がコレログラム(ヒートマップ)です。

✅ こんなときに使う

  • 変数同士の関係をざっくり把握したいとき
  • モデルに使う変数を選びたいとき
  • 多重共線性のチェック

✅ サンプル問題①:基本的な意味の理解

問題:
ある商品の1週間分の売上データが次のように与えられています(単位:個):[20, 22, 21, 19, 24, 25, 20]

このデータの自己相関(lag=1)を求めたところ、正の値となりました。

この結果から言えることとして、最も適切なのはどれか。

選択肢:

A. 毎日の売上は完全に独立である
B. 前日の売上が高いと、今日の売上も高くなる傾向がある
C. 売上は季節的要因で動いている
D. 売上は週の後半に向けて必ず増加している

正解:
👉 B

解説:
「lag=1 の自己相関が正」=「前日と今日で似た動きをしている」という意味です。
つまり、「前日が高いと今日も高い」傾向があるといえます。

# 📌 Google Colab専用:日本語フォントのインストール(初回のみ必要)
!apt-get -y install fonts-ipafont-gothic > /dev/null

# 📦 ライブラリのインポート
import matplotlib.pyplot as plt
import pandas as pd
from statsmodels.graphics.tsaplots import plot_acf
from matplotlib.font_manager import FontProperties

# 🎌 日本語フォントの設定(Colab用)
jp_font = FontProperties(fname="/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf")
plt.rcParams['font.family'] = jp_font.get_name()

# 📊 1問目のサンプルデータ(売上データ)
sales = [20, 22, 21, 19, 24, 25, 20]
ts = pd.Series(sales)

# 📈 ACFプロット
plt.figure(figsize=(8, 4))
plot_acf(ts, lags=5, zero=False)
plt.title("自己相関関数(ACF) - 売上データ", fontproperties=jp_font)
plt.xlabel("ラグ(遅れ)", fontproperties=jp_font)
plt.ylabel("相関係数", fontproperties=jp_font)
plt.grid(True)
plt.tight_layout()
plt.show()

image.png

✅ サンプル問題②:ACF・PACFの解釈

問題:
ある時系列データについて ACF と PACF を調べたところ、以下のような結果となった:

  • ACF:lag=1 で大きな正の相関、それ以降は急激に減衰
  • PACF:lag=1 でのみ有意、lag=2 以降はほぼ 0

このとき、適したモデルとして最も適切なのはどれか。

選択肢:

A. MA(1) モデル
B. AR(1) モデル
C. AR(2) モデル
D. ランダムウォークモデル

正解:
👉 B

解説:
PACF が lag=1 で急に0になる(= 有意なのは1だけ)ときは、AR(1) モデルの特徴です。

📊 ACFとPACFの違いまとめ(表)

項目 ACF(自己相関関数) PACF(偏自己相関関数)
日本語名 自己相関関数 偏自己相関関数
意味 今と過去の相関(全体的な関係) 今と過去の直接的な相関(他のラグの影響を除く)
例(lag=2) 今日と一昨日の相関をそのまま見る 昨日を除いた上で、今日と一昨日の関係だけを見る
主な用途 MAモデル(移動平均)の次数推定 ARモデル(自己回帰)の次数推定
グラフの特徴 ゆるやかに減衰することが多い 特定のlagで急に0になることが多い
見た目 棒グラフ(lagが進むごとに高さが変わる) 同様だが、意味合いが異なる
関数例(Python) plot_acf() plot_pacf()
よくある使い方 時系列に周期性があるか調べる ARモデルのラグ数を決める
# 📌 Google Colab専用:日本語フォントのインストール
!apt-get -y install fonts-ipafont-gothic > /dev/null

# 📦 ライブラリ
import matplotlib.pyplot as plt
import pandas as pd
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from matplotlib.font_manager import FontProperties

# 🎌 日本語フォント設定
jp_font = FontProperties(fname="/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf")
plt.rcParams['font.family'] = jp_font.get_name()

# 📊 AR(1)モデルっぽい時系列データ(手作業で作成)
data = [10, 12, 13, 14, 15, 15, 16, 17, 18, 18, 17, 18, 19]
ts = pd.Series(data)

# 🎨 ACFプロット(lags=6に設定)
plt.figure(figsize=(8, 4))
plot_acf(ts, lags=6, zero=False)
plt.title("自己相関関数(ACF)", fontproperties=jp_font)
plt.xlabel("ラグ(遅れ)", fontproperties=jp_font)
plt.ylabel("相関係数", fontproperties=jp_font)
plt.grid(True)
plt.tight_layout()
plt.show()

# 🎨 PACFプロット(lags=5に修正してエラー回避)
plt.figure(figsize=(8, 4))
plot_pacf(ts, lags=5, zero=False, method="ywm")
plt.title("偏自己相関関数(PACF)", fontproperties=jp_font)
plt.xlabel("ラグ(遅れ)", fontproperties=jp_font)
plt.ylabel("偏相関係数", fontproperties=jp_font)
plt.grid(True)
plt.tight_layout()
plt.show()

image.png

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?