統計における外れ値の扱い方

統計分析を行う際、データの中に異常に大きい値や小さい値が含まれることがあります。こうしたデータを「外れ値」と呼びます。外れ値はデータ全体の傾向を歪めてしまうことがあるため、その扱いには慎重さが求められます。この記事では、外れ値がなぜ発生するのか、どうやって検出するのか、そしてどのように扱うべきかを解説します。

外れ値とは?

まず外れ値の定義ですが、外れ値とは他のデータと比べて極端に異なるデータ点を指します。例えば、ある学校のテストの点数が平均70点で、大多数の生徒が60点から80点の間に収まっているとします。その中で、ある一人の生徒が5点を取っていたら、この点数は「外れ値」とみなされるかもしれません。

外れ値が発生する原因

外れ値が発生する理由はいくつか考えられます。

  1. 測定ミスやデータ入力エラー
    例えば、体重を入力する際に「55kg」と書くべきところを「550kg」と入力してしまったような場合です。
  2. 真の異常値
    実際に他のデータとは大きく異なる現象が起きていることがあります。例えば、気象データで観測史上最も高い温度が記録された場合など。
  3. 異なる条件下でのデータ収集
    ある集団のデータを集めている途中で、異なる条件下でのサンプルが混ざり込んだ場合、外れ値が出ることがあります。たとえば、成人の身長を調査している中に子どもが混じった場合です。

外れ値の検出方法

外れ値を扱う前に、まず検出する方法を知る必要があります。代表的な方法をいくつか紹介します。

1. 標準偏差を使った方法

データが正規分布に従う場合、標準偏差を利用して外れ値を検出することができます。標準偏差はデータが平均値からどれだけ散らばっているかを示す指標で、通常は平均値から2〜3倍の標準偏差を超えるデータを外れ値とみなすことが多いです。

  • 平均 ± 2σ (標準偏差) の範囲にデータの95%が含まれる。
  • 平均 ± 3σ の範囲にデータの99.7%が含まれる。

これを図にすると以下のような正規分布のグラフになります。

import numpy as np
import matplotlib.pyplot as plt

# 正規分布のデータ生成
mu = 0  # 平均
sigma = 1  # 標準偏差
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 100)
y = (1/(sigma * np.sqrt(2 * np.pi))) * np.exp(-0.5 * ((x - mu)/sigma)**2)

# グラフ描画
plt.plot(x, y)
plt.title("正規分布と外れ値の位置")
plt.xlabel("値")
plt.ylabel("確率密度")
plt.axvline(mu + 2*sigma, color='r', linestyle='dashed', label='外れ値の境界 (±2σ)')
plt.axvline(mu - 2*sigma, color='r', linestyle='dashed')
plt.legend()
plt.show()

2. 四分位範囲(IQR)を使った方法

四分位範囲(Interquartile Range, IQR)は、データを四等分して外れ値を検出する手法です。具体的には、データの25%点(第1四分位数, Q1)と75%点(第3四分位数, Q3)の差をIQRと呼び、このIQRの範囲の外にあるデータを外れ値とします。

  • 下限:Q1 − 1.5 × IQR
  • 上限:Q3 + 1.5 × IQR

この範囲の外にあるデータは外れ値とみなされます。特に、ボックスプロットなどで視覚的に外れ値を確認することが一般的です。

3. グラフを使った視覚的な検出

先ほど述べたボックスプロットや散布図などのグラフを使うと、外れ値を視覚的に確認することができます。以下にボックスプロットの例を示します。

import matplotlib.pyplot as plt

# サンプルデータ
data = [7, 8, 8, 9, 10, 10, 10, 11, 12, 12, 50]  # 最後の50が外れ値

# ボックスプロットの描画
plt.boxplot(data, vert=False)
plt.title("ボックスプロットによる外れ値の検出")
plt.show()

外れ値の扱い方

外れ値を検出した後、それをどう扱うかが重要です。外れ値の扱い方は、分析の目的やデータの性質に応じて異なります。以下に代表的な対処方法をいくつか紹介します。

1. 外れ値を削除する

明らかに測定ミスやデータ入力ミスが原因と考えられる外れ値は、削除することが一般的です。しかし、削除する前にデータを慎重に検討し、正当な理由があるかを確認する必要があります。

2. 外れ値を他の値で置き換える

外れ値が誤りであるものの、データ自体は重要だと考えられる場合は、外れ値を平均値中央値など、他の代表値で置き換える方法があります。これにより、データセットのバランスを保ちながら外れ値の影響を軽減できます。

3. 外れ値を考慮したモデルを使用する

回帰分析や機械学習のモデルを使用する際、外れ値を自動的に処理する手法を選択することもできます。例えば、ロバスト回帰(外れ値の影響を少なくする手法)や、外れ値に対して強い耐性を持つ決定木などのアルゴリズムを使うと、外れ値がモデルに与える影響を最小限に抑えられます。

4. 外れ値を分析の一部として扱う

外れ値が実際に異常な現象を示している場合、その外れ値自体が重要な情報源となります。例えば、工場で製品の不良品を調査する際に、その外れ値は製造プロセスに問題があることを示しているかもしれません。こうしたケースでは、外れ値を排除するのではなく、逆にその原因を深掘りすることが求められます。

外れ値を扱う際の注意点

外れ値をどう扱うかは、データ分析の目的に大きく依存します。以下の点に注意して外れ値を処理しましょう。

  • 外れ値の原因を特定する: 外れ値がどのようにして発生したのかを理解することが重要です。単なる誤りなのか、あるいは重要な異常値なのかを見極めることで、適切な処理方法が選べます。
  • 一律に削除しない: 外れ値を無条件に削除するのは危険です。誤った処理によって、データ全体のバランスを崩したり、貴重な情報を失ったりするリスクがあります。
  • 分析の目的を考慮する: 外れ値を排除するか、活用するかは、最終的な分析の目的次第です。特に異常検知や異常値の発生原因を調べる際には、外れ値自体が重要な役割を果たすこともあります。

今後の学習の指針

外れ値の扱い方は、統計学の中でも非常に重要なスキルの一つです。データを分析

する際、外れ値が全体にどのような影響を与えるのか、またどのように処理するべきかを正しく理解しておくことは、信頼性の高い結果を導くために欠かせません。まずは基本的な外れ値の検出方法を習得し、データの種類や目的に応じた適切な処理方法を選べるようにしましょう。

次に、実際にデータを使った分析を行い、外れ値がどのような影響を与えるのかを体験的に学ぶことをお勧めします。