Pythonでの箱ひげ図とIQR法を使った外れ値検出法
この記事のゴール
箱ひげ図とIQR法を使って、データの分布や外れ値を視覚的かつ数値的に確認できるようになることが目的です。これにより、データの異常値や傾向を効率的に把握し、データ分析の信頼性を高められるようになります。
目次
箱ひげ図とIQR法の基本
箱ひげ図とIQR法はデータの分布を視覚的に示し、異常なデータ(外れ値)を見つける手法です。以下のステップで箱ひげ図の基本構成を説明します。
1. データの四分位数を計算
- 第1四分位数 (Q1): データの下位25%点
- 第2四分位数 (Q2): 中央値
- 第3四分位数 (Q3): データの上位75%点
2. IQR (四分位範囲) の計算
IQR = Q3 - Q1
3. 外れ値の範囲の定義
- 下限: Q1 - 1.5 * IQR
-
上限: Q3 + 1.5 * IQR
この範囲外のデータポイントが外れ値として扱われます[1][3]。
4. 箱ひげ図の構成
- 箱: Q1からQ3までの範囲を示す
- 中央の線: 中央値 (Q2)
- ひげ: 箱の外に伸びる線で、上記の範囲内のデータを示す
- 点: 外れ値として、範囲外のデータを示す
Pythonでの実装例
ここでは、箱ひげ図の描画とIQR法での外れ値検出をPythonで行う方法を示します。
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータの作成
data = [12, 34, 57, 22, 97, 51, 69, 87, 72, 62, 100, 5]
# 箱ひげ図の描画
plt.figure(figsize=(10, 6)) # グラフのサイズを設定
plt.boxplot(data) # 箱ひげ図の描画
plt.title('Box Plot Example') # グラフのタイトル
plt.ylabel('Values') # y軸ラベル
plt.show()
# IQRを用いた外れ値の検出
q1, q3 = np.percentile(data, [25, 75]) # 第1四分位数と第3四分位数の計算
iqr = q3 - q1 # IQRの計算
lower_bound = q1 - (1.5 * iqr) # 下限を計算
upper_bound = q3 + (1.5 * iqr) # 上限を計算
# 外れ値の検出
outliers = [x for x in data if x < lower_bound or x > upper_bound] # 外れ値を抽出
print(f"外れ値: {outliers}")
解説
-
plt.boxplot(data)
で箱ひげ図を描画し、データ分布を可視化しています。 - 四分位数を用いて、下限と上限を計算し、範囲外のデータを外れ値として抽出しています。
具体的な使用例
-
金融データの分析
日々の株価変動を分析する際、異常な変動を検出するのにIQR法が用いられます。通常の範囲を超える変動は異常な取引活動や市場の変動を示している可能性があります[5]。 -
製造プロセスの品質管理
製品の寸法データなどで、基準値から外れる製品を特定するために箱ひげ図が活用されます。これにより、製造プロセスの異常を早期に検出できます[5]。 -
気象データの分析
日々の気温データを分析し、異常気象や突発的な温度変動を検出するのに役立ちます。IQR法を使って、季節外れの高温や低温の観測データを抽出します[5]。 -
医療データの分析
患者の血液検査結果やバイタルデータなどを分析する際に外れ値を確認し、追加検査の必要性を判断するために使用します[5]。
注意点
1. データの性質を考慮
IQR法は、データが正規分布に従うことを前提としています。非正規分布の場合は、他の方法も検討する必要があります[7]。
2. サンプルサイズの考慮
サンプルが小さい場合、IQR法による外れ値検出の信頼性が下がる可能性があるため、大きなサンプルでの使用が推奨されます[7]。
3. コンテキストの重要性
外れ値が単なる異常値ではなく、有意義な情報を持つ可能性もあります。データの背景や目的を理解し、単純に除外するのではなく、意味を慎重に考慮する必要があります[7]。
4. 他の手法との組み合わせ
IQR法単独ではなく、Zスコア法やその他の手法と組み合わせることで、より確実に外れ値を検出できます[5][6]。
参考文献
[1] "Pythonでの箱ひげ図の作成," Bridgedot, https://bridgedot.com/python/hakohige/
[2] "箱ひげ図の基本," 総務省統計局, https://www.stat.go.jp/naruhodo/4_graph/shokyu/hakohige.html
[3] "Matplotlibでのデータ可視化入門," Torus07, https://torus07.hatenablog.com/entry/matplotlib-02
[4] "箱ひげ図の解説," Gomafree-tech, https://gomafree-tech.com/?p=2442
[5] "データ分析における外れ値処理の重要性," Sales Analytics, https://www.salesanalytics.co.jp/column/no00397/
[6] "Oracle CloudのIQRに関するドキュメント," Oracle, https://docs.oracle.com/cloud/help/ja/pbcs_common/PFUSU/insights_metrics_IQR.htm
[7] "外れ値処理の実践ガイド," GMOリサーチ, https://gmo-research.ai/research-column/outlier
以上、箱ひげ図とIQR法の基本とその活用方法について解説しました。IQR法や箱ひげ図は、データの全体的な傾向と異常値の両方を視覚的かつ簡単に把握できる強力なツールです。