論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
外れ値処理
Outlier Handling
データ処理

🔖 キーワード索引

外れ値IQRZ-scoreWinsorizeロバスト統計異常検知

outlier handling」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「outlier handling」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。

outlier handling統計分析SSDSE-B-2026前提条件適用範囲落とし穴関連手法Python 実装検証方法

これらのキーワードは「outlier handling の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。

💡 30秒で分かる結論

🍰 まずはやさしく

外れ値処理は、飛び抜けた値を扱うことです。

正しい分析結果を出すために使います。

テストの点数が一人だけ極端に低い時などです。

値の見つけ方と扱い方を学びます。

外れ値処理 ── 外れ値を検出・除去・修正する一連の処理

📍 文脈 ── どこで出会うか

🍰 まずはやさしく

外れ値は、計算結果を大きく変える存在です。

データの傾向を正しく掴むために使います。

部活の記録に、一人だけすごい数値がある時です。

分析の中でいつこの処理を行うか学びます。

平均、 標準偏差、 回帰係数、 相関係数――どれも外れ値1個で大きく動きます。 散布図/箱ひげ図で必ず目視確認するのが分析の第一歩。

本ページでは「outlier handling」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の実データを使った再現可能な学習を目指す。

「outlier handling」は統計・データサイエンスの体系における重要概念のひとつ。 本ページは「定義・直感・数式・実装・落とし穴・関連手法」の 6 視点で構成され、 各視点は独立して読めるが順序通り読むと体系的な理解が得られる。

🎨 直感で掴む

🍰 まずはやさしく

外れ値処理は、単に消すことではありません。

分析の目的に合わせて使い分けるためです。

人口がとても多い都市をどう扱うかのような例です。

状況に応じた5つの選択肢について学びます。

47都道府県の「人口」を例に:

でも東京を「外れ値だから除外」は分析意図を壊す。 全国を語るなら残すべき。 中位都市を語るなら除外も検討。

「外れ値処理 = 削除」 ではない: 外れ値処理 (outlier handling) の本質は「外れ値の存在を認めた上で、 分析目的に応じて 5 つの選択肢から選ぶ」 こと。 (1) そのまま使う (全国総和を語る場合は東京除外不可)、 (2) 除外 (中位都市の典型像を語る)、 (3) winsorize (上下 5% を 95 パーセンタイル値で頭打ち)、 (4) 対数変換 (人口を log 変換すると東京が外れ値でなくなる)、 (5) ロバスト統計 (平均→中央値、 OLS→Huber 回帰)。 SSDSE-B-2026 では東京・神奈川・愛知・大阪の 4 都道府県が常に「外れ値候補」になり、 (1)〜(5) のどれを採るかで結論が変わるため、 感度分析 (sensitivity analysis) で複数の処理の結果を並べる ことが推奨される。

検出と処理の分離: 「これは外れ値か?」 の検出 (IQR 法・Z スコア・マハラノビス距離・Isolation Forest) と、 「どう扱うか?」 の処理は独立して考える。 検出で「東京は外れ値」 と判定しても、 処理では (1) を選ぶことが正当な選択になり得る。 機械的に削除しないことが鉄則

📐 定義/数式

🍰 まずはやさしく

外れ値の判定は、数式で決めることができます。

客観的に「外れている」と言うために使います。

スマホの利用時間を数値で比べる時などに役立ちます。

判定に使う2つの計算方法について学びます。

【IQR法による外れ値判定】
$Q_1$(第1四分位), $Q_3$(第3四分位), $\text{IQR} = Q_3 - Q_1$
外れ値の条件:$x < Q_1 - 1.5 \cdot \text{IQR}$ または $x > Q_3 + 1.5 \cdot \text{IQR}$
【Z-scoreによる判定】
$$ z_i = \frac{x_i - \bar{x}}{s}, \quad |z_i| > 3 \text{ なら外れ値候補} $$

🔬 数式を言葉で読み解く

外れ値(outlier)
大多数から離れた値、 という相対的概念
異常値(anomaly)
分布の生成過程から逸脱した値、 という意味論的概念
影響点(influential point)
回帰結果を大きく変える点。 外れ値とは別概念(Cookの距離で評価)
Winsorization
上下p%を打ち切り、 端の値で置換する穏当な処理

🔬 数式を言葉で読み解く(詳細版)

IQR 法による外れ値判定式を、 一文ずつ言葉で噛み砕きます。

$Q_1$(第 1 四分位数) ── 47 都道府県の総人口を小さい順に並べたとき、 下から数えて 1/4 の位置(=12 番目)にある値です。 SSDSE-B-2026 の 2023 年データでは 約 103.4 万人(山形県近辺) となります。 「平均」のように外れ値で大きく動かない、 中央側からの位置情報として機能します。

$Q_3$(第 3 四分位数) ── 47 都道府県を小さい順に並べたとき、 下から 3/4(=36 番目)の位置の値で、 SSDSE-B-2026 では 約 263.7 万人(広島県近辺)。 $Q_1$ と $Q_3$ で中央 50% の範囲を切り出していることになり、 「ふつうの都道府県」の幅を表します。

$\text{IQR} = Q_3 - Q_1$(四分位範囲) ── $Q_3 - Q_1 = 263.7 - 103.4 = 160.3$ 万人。 これは 「ふつうの幅」の長さです。 標準偏差と異なり、 外れ値の影響を受けにくい 頑健な散布度です。 たとえば東京を加えても IQR は 1 単位も動きません(東京は $Q_3$ より上の少数派なので順位の影響を受けない)。

下限 $= Q_1 - 1.5 \times \text{IQR}$ ── $1\,034\,000 - 1.5 \times 1\,602\,500 = -1\,369\,750$。 マイナスなので「下に外れる都道府県」は存在しません。 人口データのように下限がゼロの量では、 IQR 下限はしばしばマイナスになり、 下方外れ値は検出されません。 これは異常ではなく、 IQR 法が左右非対称な分布に対しては 右側だけ強く効く性質の表れです。

上限 $= Q_3 + 1.5 \times \text{IQR}$ ── $2\,636\,500 + 1.5 \times 1\,602\,500 = 5\,040\,250$(504 万人)。 SSDSE-B-2026 では 東京(1,408 万)/神奈川(923 万)/大阪(876 万)/愛知(748 万)/埼玉(733 万)/千葉(626 万)/兵庫(537 万)/福岡(510 万)/北海道(509 万)の 9 都道府県がこの線を超え、 IQR 法では外れ値判定されます。 しかしこれらは本当に異常かと問えば、 答えは「いいえ」。 都道府県別人口は 右に長く裾を引く分布であり、 上位は本来の構造的な大都市を表しているからです。

「1.5 倍」という係数 ── Tukey が提案した経験則で、 正規分布のもとでは $|z| \approx 2.7$ に相当します。 つまり「正規分布ならめったに起きない値」を機械的に切り出すための慣習値です。 異常検知の精度が必要なら $3.0$ 倍(極端な外れ値)を使い分けます。

Z-score 式の意味:$z_i = (x_i - \bar{x}) / s$ は、 「平均からどの程度離れているか」を 標準偏差を物差しとして測ったもの。 SSDSE-B-2026 の総人口では平均 264.6 万・標準偏差 279.8 万なので、 東京は $z = (1408 - 264.6)/279.8 \approx 4.09$ で、 正規分布の仮定下では生起確率約 1/50000に相当します。 ただし正規分布を仮定しているため、 母分布が右に歪んでいると 過大に外れ値を検出する傾向があります。

🏭 産業界での活用事例(6 件)

業界事例効果
製造業東京都・愛知県の自動車部品検査ラインで、 寸法測定値に IQR 法を適用し 100 万分の数十個の規格外品を識別不良率 0.003% → 0.0006% への 1/5 改善
金融(クレジットカード)正常取引と異なる金額・地域・時間の組合せを Isolation Forest で検出カード不正利用検知率 87% → 94%
医療(臨床検査)血液検査結果で Modified Z-score を用い、 検査機器の校正異常を検出誤診断につながる検査エラーを 30% 削減
Web ログ分析アクセスログから DDoS 攻撃を時系列残差で検出インシデント検知が分単位 → 数秒に
SSDSE-B-2026(公共統計)47 都道府県の総人口・出生数・死亡数 を Mahalanobis 距離で複合外れ値検出東京の構造的特異性を定量化、 ベンチマーク群を 38 道府県に縮小
スポーツ分析プロ野球の本塁打数で LOF を適用し、 ホームラン王の特異性を可視化個人賞の根拠付け・チーム編成判断に活用

⚖️ 関連手法との比較表

手法前提計算量頑健性多変量対応SSDSE-Bでの推奨
IQR 法なしO(n log n)高い×◎ 単変量の第一手
Z-score正規分布O(n)低い×△ 歪んだ分布で過剰検出
Modified Z-scoreなしO(n)高い×○ 歪んだ分布で安定
Mahalanobis 距離多変量正規O(p³+np²)低い○ 共分散の逆行列が安定なら
Isolation ForestなしO(n log n)高い○ サンプル多い時に強い
LOF局所密度の差O(n²)△ 47 都道府県には軽すぎ

💥 失敗例から学ぶ

💥 医薬品治験で外れ値除外 → FDA に却下
効果のない試験データの一部を「外れ値」として除外して有意差を出した論文が、 監査で発覚し撤回。 統計監査では 外れ値除外の前後で全結果を併記することが義務付けられている。
💥 AI 学習データの「綺麗すぎる」前処理
画像認識データセットで「ノイズの多い画像」を IQR 法で除外したら、 本番環境の精度が 92% → 71% に低下。 外れ値こそが 現実世界の分布の一部だった。
💥 株価予測で 2008 年・2020 年を「異常」として除外
金融危機・コロナ禍を外したモデルは、 平時にしか使えず、 真にリスク管理が必要な場面で機能しなかった。

📝 演習問題(5 問・解答付き)

  1. 問題:SSDSE-B-2026 の「総人口」で IQR 法を実装し、 外れ値判定される都道府県を列挙せよ。
    ▼ 解答を見る
    pop = df[df["年度"]==2023]["総人口"] として Q1=1,034,000、 Q3=2,636,500、 IQR=1,602,500。 上限=5,040,250。 該当:東京・神奈川・大阪・愛知・埼玉・千葉・兵庫・福岡・北海道の 9 都道府県。 これらは大都市圏の構造的特徴であり、 単純除外は不適切。
  2. 問題:同データで Z-score を計算し、 |z|>3 となる都道府県は?
    ▼ 解答を見る
    東京:z = (14086000 − 2645809) / 2797551 ≈ 4.09。 神奈川 2.35、 大阪 2.19 と続くが |z|>3 は東京のみ。
  3. 問題:Winsorize を上下 5% で適用すると、 平均値はどう変化するか?
    ▼ 解答を見る
    上下 2-3 都道府県が打ち切られ、 平均は 264.6 → 約 250 万人へ約 5% 低下。 中央値(155 万)には変化なし。 平均値の方が外れ値に敏感なので動く。
  4. 問題:「外れ値除去後」と「外れ値あり」で総人口と出生数の Pearson 相関を比較せよ。
    ▼ 解答を見る
    元データの相関 r ≈ 0.995(東京は両方が大きいので)。 9 都道府県を除外すると r ≈ 0.96 まで低下。 外れ値が相関係数を引き上げていたことが分かる。 散布図に必ず描画してから判定するべき。
  5. 問題:IsolationForest を使い、 多変量(総人口 × 出生数 × 死亡数)の外れ値を検出せよ。
    ▼ 解答を見る
    from sklearn.ensemble import IsolationForestcontamination=0.1。 東京・神奈川・大阪に加え、 沖縄(出生率が高い)島根(人口あたり病床数が高い)も検出される。 各変数単独では正常でも、 組合せで異常な点を拾える。

📖 関連用語辞典(10 語)

外れ値(outlier)
大多数のデータから離れた値、 という相対的な概念。 必ずしも「異常」ではない。
異常値(anomaly)
分布の生成過程から逸脱した値。 検出には対象の正常データの生成モデルが必要。
影響点(influential point)
回帰係数を大きく動かす観測点。 Cook の距離やレバレッジ値で評価する。
Winsorization
上下 p% を打ち切り、 端の値で置換する穏当な処理。 標準偏差や平均を安定化する。
IQR 法(Tukey の方法)
$Q_3+1.5\text{IQR}$ より上、 または $Q_1-1.5\text{IQR}$ より下を外れ値と判定。 視覚化は箱ひげ図。
Modified Z-score
中央値と MAD(Median Absolute Deviation)を使った頑健版 Z-score。 |MAD-z|>3.5 を目安。
Mahalanobis 距離
共分散行列の逆行列を含む距離。 多変量での外れ値検出に使う。
Cook の距離
回帰モデルにおける各観測値の影響度。 $D_i > 4/(n-p-1)$ で要注意。
Isolation Forest
木で分割しやすい点を異常とする教師なしアルゴリズム。 高次元・大規模に強い。
LOF(Local Outlier Factor)
近傍点との密度比で異常度を測る。 局所的な異常検出に有効。

🧮 実値で計算してみる

47都道府県の「人口」で IQR 法:

🧮 数式に値を入れて手で計算する: Winsorize 処理

合成データで上下 5% を中央値に置換 Winsorize を計算する。

Step 1: データ

x = [2, 4, 5, 6, 7, 8, 9, 10, 12, 100] ソート済

Step 2: 上下 10% Winsorize

下位 10%: 2 → 4 上位 10%: 100 → 12 新 x = [4, 4, 5, 6, 7, 8, 9, 10, 12, 12] 平均 (元) = 16.3 平均 (Winsorize) = 7.7 → 外れ値抑制

🐍 Python で再現

1
2
3
4
5
6
7
import numpy as np
from scipy.stats.mstats import winsorize
x = np.array([2, 4, 5, 6, 7, 8, 9, 10, 12, 100])
xw = winsorize(x, limits=[0.1, 0.1])
print(f"Winsorize: {list(xw)}")
print(f"元平均: {x.mean()}")
print(f"Winsorize 平均: {xw.mean()}")

📤 実行結果

Winsorize: [4, 4, 5, 6, 7, 8, 9, 10, 12, 12] 元平均: 16.3 Winsorize 平均: 7.7

💬 手計算 (Step 2) 7.7 と Python 出力が完全一致。

🎮 触って理解する

同じデータ・同じ外れ値に対して、 対処法だけを切り替えると、 平均・標準偏差・回帰直線がどう変わるかを体感します。 灰色の破線が「外れ値がなければ得られたはずの真の回帰直線」(=正解)。 色付きの実線が「外れ値を含んだデータに選んだ対処法を当てた推定」です。 実線が破線にどれだけ近づくかで、 各手法のクセが見えます。

💡 グラフを上下にドラッグしても「強さ」を変えられます

🧭 触りながら気づいてほしいこと(解説の深化)

直感 ── 「外れ値は消すのが正解」とは限らない。 ② 除去は実線を真の線にすばやく戻しますが、 代償として データ点そのものが減ります(右パネルの「除去数」に注目)。 個数スライダーを上げてから除去を選ぶと、 標本が痩せて標準誤差が増える=情報損失が体感できます。 一方 ③ ウィンザライズは点を消さずにフェンスで頭打ちにするので、 サンプル数を保ったまま影響を和らげます。 ⑤ ロバスト統計(中央値・Theil–Sen)は外れ値を残したままそもそも鈍感で、 強さスライダーをいくら上げても実線がほとんど動きません。 「消す」以外に手はいくつもある、 というのが最初の気づきです。

よくある落とし穴。 (1) 安易な除去 ── ① 何もしないと ② 除去を往復すると結論(傾き)が動く場合、 その除去は結論を作り出しているかもしれません。 感度分析として両方を必ず併記します。 (2) 恣意的な閾値 ── 「1.5×IQR」も「|z|>3」も慣習値にすぎません。 閾値を動かせば外れ値の数は自在に変わるので、 閾値は事前登録し、 後出しで調整しないこと。 (3) 外れ値が本質のとき ── 東京都の人口や金融危機のように、 外れ値こそが分析対象の主役である場合、 除去は現実の破棄になります。 ④ 対数変換のようにスケールを変えて外れ値でなくす発想が有効なこともあります。

発展 ── ロバスト回帰・Huber・トリム。 このツールの ⑤ は傾きに Theil–Sen 推定量(全ペアの傾きの中央値)を使っています。 実務ではほかに、 二乗誤差と絶対誤差を閾値 $\delta$ で切り替える Huber 回帰(外れ値の残差を線形ペナルティに抑える)、 上下 $\alpha$% を捨てて平均する トリム平均(trimmed mean)、 中央値ベースの 最小中央二乗(LMS)回帰 などがあります。 除去(0/1 の乱暴な重み)とロバスト(滑らかな重み付け)の中間として捉えると整理しやすいです。 関連ページ:ロバスト統計対数変換箱ひげ図外れ値・異常検知。 なお「トリム平均」は本用語集に独立ページはありません(テキストのみ)。

※ データは固定シードで生成した合成データ(真の関係 $y=3x+12$ +小さなノイズ)に、 スライダーで外れ値を上乗せしたもの。 計算(平均・標本標準偏差・最小二乗回帰・Theil–Sen 傾き・IQR フェンス)はすべてブラウザ内で正確に実行しています。 実データ(SSDSE-B-2026)の話は上の「🧮 実値で計算してみる」を参照。

🐍 Python 実装

最小限のスニペットで動作確認できる例。 公的データ(SSDSE 等)を想定しています。

🎯 目的:SSDSE-B-2026 の総人口列に対し、 IQR 法と Winsorize で外れ値を検出・処理する
📥 入力:data/raw/SSDSE-B-2026.csv(cp932、 skiprows=[1])
📤 出力:外れ値リスト(東京・神奈川等)/ Winsorize 適用後の DataFrame
💬 コメント:IQR 法は分布前提を置かない最も頑健な手法。 まずは IQR で異常範囲を確認し、 必要に応じて Winsorize や log 変換で穏当に処理するのが SSDSE-B のような右裾分布データの定石。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]          # 2023 年の 47 都道府県
pop = df['A1101']                            # A1101 = 総人口

# IQR法
q1, q3 = pop.quantile([0.25, 0.75])
iqr = q3 - q1
mask = (pop >= q1 - 1.5*iqr) & (pop <= q3 + 1.5*iqr)
print(df[~mask][['Prefecture', 'A1101']])    # 外れ値の確認(東京都ほか)

# Winsorize(上下2.5%を打ち切り)
from scipy.stats.mstats import winsorize
df['A1101_w'] = winsorize(pop, limits=[0.025, 0.025])

🐍 補強コード例 1

「outlier-handling」関連の理解を補う Python コード例 (SSDSE-B-2026 を使用)。

📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年) 年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) … 2023 R01000 北海道 5,092,000 1,681,000 24,430 … 2023 R13000 東京都 14,086,000 3,205,000 86,348 … 2023 R47000 沖縄県 1,468,000 350,000 12,549 … …(残り 112 列は住宅・家計・教育・医療など)
1
2
3
4
5
6
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
print(df.shape)
print(df.head(3))
print(df.columns[:10].tolist())

⚠️ よくある落とし穴

❌ 1. 「目障りだから除外」は禁忌
SSDSE-B-2026 の都道府県人口で「東京は突出しているから外そう」とすると、 母集団の真の分布から東京を恣意的に消すことになる。 まず「入力ミス由来か」「自然な裾の値か」「測定方法の違いか」を分類し、 除外する場合は根拠と影響を明記する。 削除と修正と保持の判断基準を事前に決めるのが原則。
❌ 2. Z-score は正規前提
|z| > 3 の判定式は平均と標準偏差を使うため、 都道府県人口のような右に長い裾を持つ分布では平均自体が東京に引きずられる。 中央値と MAD(Median Absolute Deviation)を使う修正 Z-score、 または四分位範囲 IQR を使うルール(Q1 - 1.5 IQR / Q3 + 1.5 IQR)の方が頑健。
❌ 3. 多変量外れ値を見落とす
「総人口」も「出生数」も単独では正常範囲内なのに、 総人口に対する出生数の比(=おおよその出生率)が突出する県(例:沖縄県)は単変量検査をすり抜ける。 Mahalanobis 距離・Isolation Forest・LOF(Local Outlier Factor)など多変量検出器を併用し、 散布図行列で目視確認するのが正攻法。
❌ 4. 時系列で平均から判定
時系列データ(年次推移など)でトレンドや季節性を無視して全体平均から外れ値判定をすると、 上昇トレンドの末期データが全部「外れ値」になってしまう。 STL 分解や移動平均で残差を取り出し、 残差ベースで判定する。 ARIMA 残差の標準偏差から閾値を決めるのも有効。
❌ 5. 結果を比較せず削除
外れ値処理の影響は論文・レポートで必ず示す。 「外れ値を含めた場合」と「除外した場合」の両方の推定値・標準誤差・p 値を並べる感度分析(sensitivity analysis)が必須。 結論が変わらなければ頑健、 変わるならその理由を考察に書く。

🧭 対処法の選び方 ── 深掘り解説(検出ではなく「どう扱うか」に焦点)

このページの前半は「どれが外れ値か」の検出を厚めに扱っています(多変量検出などは 外れ値・異常検知 に詳しい)。 本節は視点を切り替え、 検出された外れ値を実務でどう処理するか――削除・変換・キャップ(Winsorize)・頑健手法――の判断に集中して深掘りします。

🎨 直感 ── 「消す」は最終手段、まず原因を調べる

外れ値に出会ったら、 いきなり削除ボタンを押す前に 「なぜこの値になったのか」を分類します。 対処法は原因ごとに変わるからです。

  • 入力ミス・単位ずれ(身長 1700cm など)── 原資料に当たって修正、 直せなければ欠測(NaN)化。 これは「本物の外れ値」ではなくエラーなので、 消しても情報は失われません。
  • 測定・機器エラー(センサ故障)── 期間を特定して除去し、 除去した区間を別カラムで記録。
  • 裾の重い分布の自然な値(人口・所得・フォロワー数)── 消さずに 対数変換でスケールを揃えるか、 頑健手法に切り替える。
  • 真の極値(東京都の人口、 記録的猛暑)── 残すのが原則。 消すと「現実」を捨てることになる。 目的次第で別扱い(層別・感度分析)。

つまり対処の選択肢は「削除/修正・欠測化/変換/キャップ/頑健手法」の 5 系統。 削除は原因が「エラー」と確認できたときの手段であり、 「目障りだから」「有意差が欲しいから」で選ぶものではありません。

🧮 実測 ── 東京都(総人口)に各処理法を当てた効果比較

同じ 1 個の極値(東京都 14,086,000 人)に対し、 処理法だけを変えると統計量がどう動くかを SSDSE-B-2026(2023 年・47 都道府県・A1101 総人口)で実測しました。 全て cp932/skiprows=[1] で読み込んだ実データの計算値です。

処理法東京の扱い・値代表値への影響ポイント
① 何もしない14,086,000(z = +4.09)平均 264.6 万/SD 279.8 万1 点が平均・SD を支配
② 除去(東京のみ)除外(n: 47→46)平均 239.7 万(−24.9 万・−9.4%)情報損失。標本が痩せる
② 除去(IQR 外れ 9 県)大都市 9 県を除外平均 146.4 万(−44.7%)大都市圏を丸ごと捨てる恣意性
③ Winsorize(上下 5%)876.3 万で頭打ち(=大阪の値に置換)平均 252.6 万(−4.6%)点は消さないが境界値は任意
③ トリム平均(上下 5%)上下 2 県ずつ除外して平均232.2 万Winsorize と削除の中間
④ 対数変換(log10)log10 = 7.15(z = +2.54 に低下)log10 平均 6.26/SD 0.349z が 4.09→2.54、外れ値でなくなる方向。ただし軸の意味が変わる
⑤ ロバスト(中央値・MAD)中央値・MAD をほとんど動かさない中央値 155 万(東京除外でも 150.9 万)/ロバスト SD 92.4 万外れ値を残したまま鈍感
RobustScaler(x−中央値)/IQR = 7.82通常 z = 4.09 とは別物差しスケーリング時に外れ値の影響を抑える

読み方:「同じデータ・同じ外れ値でも、 処理法を変えるだけで平均が 146〜265 万人まで動く」のが実測で確認できます。 標準 SD 279.8 万に対しロバスト SD(1.4826×MAD)は 92.4 万で、 約 1/3。 平均 264.6 万と中央値 155 万の乖離も、 東京を含む大都市が平均を引き上げているためです。 どの処理を採るかは技術ではなく分析目的の問題で、 結論が処理法で動くなら「あり/なし」を併記する感度分析が必須です。

⚠️ 落とし穴 ── 処理そのものが生む歪み(重要)

  • 安易な削除によるバイアスと情報損失。 上表の②のように、 東京を消すと平均が 9%、 9 県を消すと 45% も動きます。 真の極値の削除は母集団の分布そのものを歪める行為。 標本が減れば標準誤差が増え、 検定の検出力も落ちます。
  • 削除の恣意性(結果を都合よく作る)。 閾値を「1.5×IQR」→「2.0×IQR」→「1.2×IQR」と結果を見ながら動かして有意差が出る点を採るのは p-hacking。 実測でも総人口 vs 出生数の相関は、 全 47 県 r = 0.995、 東京除外 0.993、 IQR 外れ 9 県除外で 0.965 と削除の仕方で相関が動きます。 「どこまで消すか」で結論を作れてしまうため、 閾値は事前登録し後出し調整しないこと。
  • Winsorize(キャップ)の境界の任意性。 上下 5% なら東京は「大阪の値」に化けます(=876.3 万)。 何 % で切るかに客観的正解はなく、 置換後の値は元の実測ではないので、 「その数値が何を意味するか」の解釈が曖昧になります。
  • 対数変換で解釈が変わる。 log 変換は裾を圧縮して外れ値を外れ値でなくしますが、 軸が乗法スケールに変わり、 回帰係数は「1 単位増」ではなく「1% 増」の意味になります。 負値・ゼロには使えず(log1p や Yeo-Johnson で対応)、 逆変換時の平均のズレ(Jensen 不等式)にも注意。
  • テストデータへの情報漏洩。 外れ値の除去や Winsorize の境界・変換パラメータは 学習データだけから決め、 テスト/本番データに同じ変換を「当てはめる」のが鉄則。 テストデータの分布を見て閾値を決めるとリークになり、 性能を過大評価します。 テストデータ自体からの外れ値除去は現実分布の歪曲。
  • 「除去→再検出」の無限ループ。 外れ値を消すと分布が縮み、 平均・SD が動いて今度は別の点が外れ値に見える。 これを繰り返すと際限なくデータが痩せます。 検出は1 回で確定し、 反復しないこと(頑健指標なら中央値・MAD で判定するとこのループが起きにくい)。
  • 報告義務。 (a) 検出手法、 (b) 閾値、 (c) 該当件数と割合、 (d) 除去/置換/変換の選択理由、 (e) 処理あり/なしの感度分析 ── の 5 点は必ず明記。 「外れ値を除いた後の結果だけ」を載せるのは査読・監査で差し戻し対象です。

🚀 発展 ── 削除以外の武器を体系で持つ

対処法は「削除(0/1 の乱暴な重み)」と「完全に残す」の二択ではなく、 重みの掛け方の連続体として整理すると迷いません。

  • Winsorization / トリミング。 上下 α% をフェンス値で置換(Winsorize、 標本数を保つ)するか、 削除(トリム、 標本数が減る)するか。 平均・SD を安定させたいならまず Winsorize。
  • 対数・Box-Cox・Yeo-Johnson 変換。 乗法的に広がる量(人口・所得・売上)を加法スケールに直し、 外れ値を「裾の一員」に戻す。 対数変換 参照。
  • 頑健回帰。 Huber 回帰(小さい残差は二乗、 大きい残差は線形ペナルティに切替)、 RANSAC(インライア最大のモデルを採る)、 Theil–Sen(全ペア傾きの中央値)。 このページの 🎮 ウィジェット ⑤ は Theil–Sen を使っており、 外れ値を残したまま傾きが動かないことを体感できます。
  • 外れ値に頑健なスケーリング(RobustScaler)。 標準化を平均・SD ではなく中央値・IQRで行う(上表で東京 = 7.82)。 前処理のスケーリング段階で外れ値の影響を封じ込める。 標準化(Z-score) の頑健版。
  • 欠測として扱う。 削除せず外れ値を NaN にして欠測値処理に委ねると、 後戻り可能で標本数も保てる。 補完は外れ値検出のに行う(外れ値が平均・中央値を歪めると補完値も偏る)。 欠損値欠損メカニズム 参照。
  • 影響分析(Cook の距離)。 回帰では「外れているか」より「結果をどれだけ動かすか」が重要。 Cook の距離やレバレッジで影響点を特定し、 $D_i > 4/(n-p-1)$ を目安に個別検討。 影響が小さければ残したままで問題ありません。
  • 方針の事前決定。 検出手法・閾値・処理法・報告様式をデータを見る前に決めておくのが、 恣意性と研究者の自由度(researcher degrees of freedom)を封じる最良の防御。 ロバスト統計 を既定路線にしておくと、 そもそも「消すか残すか」で悩む場面が減ります。

※ Winsorization・トリム平均・Huber 回帰・RANSAC・RobustScaler・Cook の距離には本用語集の独立ページはありません(テキストのみ)。

関連ページ:外れ値・異常検知(検出側)/ロバスト統計対数変換標準化(Z-score)箱ひげ図データクレンジング中央値平均欠損値回帰分析分位点回帰

🗺 概念マップ

外れ値処理を中心に、 検出側 (IQR 法・Z スコア・マハラノビス距離・Isolation Forest)、 処理戦略 (除外・winsorize・対数変換・ロバスト統計・トリム平均)、 評価軸 (前後の感度分析・分析結論の頑健性)、 関連概念 (外れ値・異常検知・ロバスト回帰) を配置した SVG マップ。

outlier handling IQR / 箱ひげ図 Z-score・修正Z Isolation Forest LOF(局所外れ値) Mahalanobis距離

本セクションでは 外れ値処理の 判断フロー (検出 → 原因分析 → 対応選択)・センシティビティ分析・報告の透明性を補足する。 外れ値除去の有無は結論を変えうるため、 削除した・残した の両方の結果を示す sensitivity reporting が現代統計の標準になりつつある。

🔗 隣接手法への橋渡し

「外れ値処理」は単独で完結せず、 前後の手法と組み合わさって価値が発揮される。 入力データの準備 (上流)・同目的の代替手法との比較 (並列)・結果の活用 (下流) という 3 軸で隣接領域を整理する。

この上流・並列・下流の対応を地図化することで、 「外れ値処理」を中核に据えた分析パイプライン (データ準備 → 手法選択 → 結果の検証と展開) の全体像が見えてくる。

🌳 手法選択フロー

「外れ値処理」を扱う際の手法選択は、 状況に応じて以下のフローで判断すると迷いが減る。

  1. Step 1: 目的は記述か予測か?
    • 記述 (現状把握・要約) → 集計・可視化・要約統計量で全体像を掴む
    • 予測 (未知データへの推定) → モデル構築・検証フェーズへ移行
  2. Step 2: データの種類・規模は?
    • 数値データ・小〜中規模 → 「外れ値処理」やその拡張手法を直接適用
    • カテゴリデータ → カテゴリ専用の手法 (欠損値処理) と組み合わせ
    • 大規模・高次元 → 計算効率を考慮した派生手法 (Isolation ForestLOF) を選択
  3. Step 3: 結果の解釈・共有は?
    • 専門家向け → 数値指標・統計検定で精緻に評価
    • 非専門家向け → 可視化・自然言語での要約を重視

このフローに沿って判断することで、 「外れ値処理」を中核とした適切な手法選択ができる。