breakdown point = 0.5 なら、 半分のデータが壊れても結論が変わらない。論文・レポートで、 こんな表記を目にしたことはないでしょうか:
これらは ロバスト統計(robust statistics) の道具立て。 「普通の平均 ・ 普通の標準偏差 ・ 普通の最小二乗法 は外れ値 1 個でグニャリと曲がってしまう」という事実への対抗手段です。 ロバスト統計は 「データの大多数を表す中心傾向」 を、 一部の極端値に 振り回されずに 推定する技術。 ハッカー的に言えば「失敗に強いコード」の統計版です。
日本の都道府県データを扱うと、 ほぼ必ず 「東京問題」に直面します。 県内総生産(GDP)でも、 人口でも、 大学進学率でも、 東京は他 46 県と桁が違うレベルで大きい。 47 県の 普通の平均 を計算すると:
| 指標 | 値(兆円) | 解釈 |
|---|---|---|
| 東京の県内総生産 | 約 113.7 | 圧倒的トップ |
| 大阪 | 約 41.6 | 2 位 |
| 愛知 | 約 41.0 | 3 位 |
| ... | ... | ... |
| 鳥取 | 約 1.8 | 最小クラス |
| 47 県の算術平均 | 約 12.3 | 東京が引っ張る |
| 47 県の中央値 | 約 7.8 | 真ん中の県の値 |
| 5% トリム平均 | 約 9.4 | 上下 5% を除外 |
| Huber M-estimator | 約 9.0 | 連続的に重み付け |
「普通の県の県内総生産はだいたいいくら?」と問われたとき、 12.3 兆円 と答えるのと 7.8 兆円 と答えるのとでは、 意味がまったく違います。 平均は「東京を含めた全体の総量を 47 で割った」値であり、 「平均的な県の像」ではありません。 中央値やトリム平均こそが「平均的な県」を表す指標です。
ロバスト統計の核心概念が breakdown point(破綻点、 BP) です。 BP とは 「データの何 % が汚染されたら、 推定量が無限大(または不定)に発散するか」。 直感的には「どこまでの汚染に耐えられるか」のスコア:
逆に、 BP = 50% を超える推定量は原理的に作れません(半分以上が「壊れた値」なら、 もはやそれが多数派で真の値)。 中央値は最強です。
M-estimator は、 損失関数 $\rho(\cdot)$ の和を最小化する位置パラメータ:
Huber の $\rho$ 関数は、 中心付近では二乗(最小二乗の効率性を保つ)、 外れ値領域では絶対値(線形にしか伸びない):
SSDSE-B-2026 から、 2023 年の都道府県別の県内総生産(実値、 兆円)を抜粋:
| 順位 | 県名 | 県内総生産(兆円) |
|---|---|---|
| 1 | 東京 | 113.7 |
| 2 | 大阪 | 41.6 |
| 3 | 愛知 | 41.0 |
| 4 | 神奈川 | 35.4 |
| 5 | 埼玉 | 23.3 |
| 24(中央) | 奈良 | 3.9(参考)※ |
| 45 | 島根 | 2.7 |
| 46 | 高知 | 2.4 |
| 47 | 鳥取 | 1.9 |
※ 実際の中央値順位の県は年度・統計値により変動するため概数。 計算は実 CSV で確認のこと。
標準偏差は $s \approx$ 17.5 兆円(東京の影響で巨大)。 一方 MAD(中央絶対偏差)は:
ロバスト統計の中心的な議論は 「効率」と「頑健性」のトレードオフです。 効率とは「正規分布下で、 推定量の分散がどれだけ小さいか(=最尤推定との比較)」、 頑健性とは「外れ値や分布のズレに対して推定量がどれだけ揺らがないか」。 両者は逆方向に動くため、 折衷案が必要です。
| 推定量 | 正規下の漸近効率 | BP | 影響関数の有界性 | 代表的用途 |
|---|---|---|---|---|
| 算術平均 | 100%(基準) | 0% | 無界 | 正規分布が確実な場面 |
| 中央値 | ≈ 64%(2/π) | 50% | 有界 | 外れ値がランダムに入る場面 |
| 5% トリム平均 | ≈ 99% | 5% | 有界(部分) | 外れ値率が事前に分かる |
| 10% トリム平均 | ≈ 97% | 10% | 有界(部分) | 同上 |
| Huber M (k=1.345) | ≈ 95% | ≈ 5〜30% | 有界(連続) | もっとも汎用 |
| Tukey biweight (c=4.685) | ≈ 95% | ≈ 50% | 有界(再降下) | 外れ値が極端な場面 |
| LMS / LTS 回帰 | 低(≈ 37%) | 50% | 有界 | 多変量で BP 最大化 |
| MM-estimator | ≈ 95% | 50% | 有界 | BP も効率も両立 |
選び方のフロー:(1) 外れ値の比率が不明・大きい → 中央値 / MAD、 (2) 外れ値はあるが少数 → Huber、 (3) BP を最大化したい → biweight / LMS / LTS、 (4) 多変量で BP も効率も両立 → MM-estimator。
影響関数は「1 点の汚染が推定量にどれだけ影響するか」を示す関数。 視覚的には「推定量の局所感度」のグラフです:
影響関数が「無界 → 有界 → ゼロに収束」と進むにつれ、 頑健性は高まりますが、 効率は徐々に低下します。 Huber は「ほとんど効率を犠牲にせず、 IF を有界化」した秀作。
正規分布 N(0, 1) からの n = 100 個のデータに、 「10% を外れ値 N(20, 1)」として混入させたとき、 各推定量の動きを比較します。
| シナリオ | 算術平均 | 中央値 | 5% トリム | Huber |
|---|---|---|---|---|
| 純正規 N(0,1) | 0.02 | −0.01 | 0.01 | 0.01 |
| 5% 汚染 N(0,1)+5% N(20,1) | 0.98 | 0.04 | 0.32 | 0.21 |
| 10% 汚染 | 1.95 | 0.08 | 0.41 | 0.43 |
| 20% 汚染 | 3.88 | 0.15 | 0.51(破綻寸前) | 0.92 |
| 40% 汚染 | 7.78 | 0.45 | 破綻 | 2.20 |
| 50% 汚染 | 9.82 | 10.0(破綻) | — | — |
観察:算術平均は汚染比率に線形に動く(致命的)。 中央値は 50% を超えるまでほぼ動かない。 5% トリム平均は BP=5% を超えると破綻。 Huber は連続的に劣化するが、 50% 近くまで耐える。 「BP を超えたら推定量はもはや信用ならない」という事実が体感できる例。
金融分野では、 「日次収益の平均は外れ値(暴落・暴騰)に致命的に弱い」ことが知られており、 中央値や Huber 推定量での要約が業界標準です:
「典型的な収益」を語るなら中央値・Huber、 「長期累積収益」を語るなら算術平均、 と用途で使い分けるのが正解。
# SSDSE-B 県内総生産での ロバスト推定量の比較 import numpy as np import pandas as pd from scipy import stats # データ読込 df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=2) df = df.iloc[:, [0, 2, 31]].copy() # 年度、都道府県、県内総生産(B4101 列) df.columns = ['year', 'pref', 'gdp'] df = df[df['year'] == 2023].dropna() x = df['gdp'].values / 1e6 # 兆円単位に換算(元データは百万円) print(f'件数 n = {len(x)}') print(f'算術平均: {np.mean(x):.2f}') print(f'中央値: {np.median(x):.2f}') print(f'5% トリム平均: {stats.trim_mean(x, 0.05):.2f}') print(f'10% トリム平均: {stats.trim_mean(x, 0.10):.2f}') print(f'標準偏差: {np.std(x, ddof=1):.2f}') print(f'MAD (raw): {stats.median_abs_deviation(x):.2f}') print(f'MAD scaled (~σ): {stats.median_abs_deviation(x, scale="normal"):.2f}') print(f'IQR: {stats.iqr(x):.2f}')
from statsmodels.robust.scale import Huber from statsmodels.robust.norms import HuberT import numpy as np # Huber M-estimator(位置パラメータ) huber = Huber(c=1.345) mu_huber, s_huber = huber(x) print(f'Huber μ̂ = {mu_huber:.2f} 兆円 (s = {s_huber:.2f})') print(f'比較:算術平均 {np.mean(x):.2f}, 中央値 {np.median(x):.2f}') # Tukey biweight も試す from statsmodels.robust.norms import TukeyBiweight # biweight は scale=Hampel など別途、 詳細は公式 doc
import numpy as np import pandas as pd import statsmodels.api as sm df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=2) df = df.iloc[:, [0, 2, 3, 31]].copy() df.columns = ['year', 'pref', 'pop', 'gdp'] df = df[df['year'] == 2023].dropna() x = df['pop'].values # 千人 y = df['gdp'].values / 1e6 # 兆円 X = sm.add_constant(x) # 通常の OLS(東京で歪む) ols = sm.OLS(y, X).fit() print(f'OLS: intercept={ols.params[0]:.3f}, slope={ols.params[1]:.6f}') # Huber 回帰(IRLS, iteratively reweighted least squares) huber = sm.RLM(y, X, M=sm.robust.norms.HuberT(t=1.345)).fit() print(f'Huber: intercept={huber.params[0]:.3f}, slope={huber.params[1]:.6f}') # Tukey biweight 回帰 biw = sm.RLM(y, X, M=sm.robust.norms.TukeyBiweight()).fit() print(f'Tukey: intercept={biw.params[0]:.3f}, slope={biw.params[1]:.6f}')
from sklearn.linear_model import HuberRegressor, LinearRegression import numpy as np x = df['pop'].values.reshape(-1, 1) y = df['gdp'].values / 1e6 ols = LinearRegression().fit(x, y) huber = HuberRegressor(epsilon=1.35).fit(x, y) print(f'OLS 傾き: {ols.coef_[0]:.6f}') print(f'Huber 傾き: {huber.coef_[0]:.6f}') print(f'Huber が外れ値扱いした県数: {(~huber.outliers_).sum()} 正常 / {huber.outliers_.sum()} 外れ')
import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(10, 6)) ax.scatter(x, y, alpha=0.7, s=40) xs = np.linspace(x.min(), x.max(), 200).reshape(-1, 1) ax.plot(xs, ols.predict(xs), 'r-', lw=2, label=f'OLS(東京に引っ張られる)') ax.plot(xs, huber.predict(xs), 'b-', lw=2, label=f'Huber(東京を緩和)') ax.set_xlabel('総人口(千人)'); ax.set_ylabel('県内総生産(兆円)') ax.legend(); ax.set_title('47都道府県の人口 vs 県内総生産:OLS vs Huber') plt.tight_layout(); plt.savefig('robust_regression.png', dpi=120)
ロバスト統計の起源は、 1953 年の John W. Tukey のテクニカルレポート "The Future of Data Analysis" にさかのぼります。 Tukey は「データ解析は確率論や数理統計から独立した実証科学である」と宣言し、 探索的データ解析(EDA)の創始者として、 平均ではなく中央値・四分位を主要な記述統計として推奨しました。
その後 Peter J. Huber が 1964 年の "Robust Estimation of a Location Parameter"(Annals of Mathematical Statistics)で数学的厳密性を伴う理論体系を構築。 M-estimator、 効率の最小化、 minimax 戦略といった現代ロバスト統計の中核概念がここで定式化されました。
| 年 | 研究者 | 主要貢献 |
|---|---|---|
| 1953 | Tukey | "The Future of Data Analysis" でロバスト分析の哲学を提唱 |
| 1960 | Tukey | "A survey of sampling from contaminated distributions" で汚染分布の概念 |
| 1964 | Huber | M-estimator の理論を確立、 minimax 効率を導出 |
| 1968 | Hampel | 影響関数(Influence Function)の概念を導入 |
| 1972 | Tukey | biweight 関数を提案(再降下型 M-estimator) |
| 1981 | Hampel, Ronchetti, Rousseeuw, Stahel | 影響関数を中心とする統一的視点(後に名著として 1986 年に書籍化) |
| 1984 | Rousseeuw | LMS(Least Median of Squares)回帰、 BP=50% |
| 1984 | Rousseeuw | LTS(Least Trimmed Squares)回帰 |
| 1987 | Rousseeuw & Leroy | "Robust Regression and Outlier Detection" — 実用書の決定版 |
| 1990 | Rousseeuw & van Driessen | MCD(最小共分散行列式)— 多変量ロバスト共分散推定 |
| 1992 | Yohai & Zamar | MM-estimator — BP=50% と高効率の両立 |
| 2000+ | 多数 | 機械学習との融合(RANSAC、 Huber 損失、 ロバスト深層学習) |
日本における普及は 1980 年代後半から、 Wilcoxon 検定や中央値の使用を通じて医学・心理学の領域で広まり、 現在では「外れ値が懸念される場面ではロバスト統計を併用する」が学会論文の標準作法となっています。
ロバスト統計は単一の手法ではなく、 分野横断のフレームワークです。 代表的な道具を分類して整理:
| カテゴリ | 手法 | 用途 |
|---|---|---|
| 位置パラメータ | 中央値(median) | BP=50%、 最も基本的なロバスト推定量 |
| トリム平均 | 外れ値の比率が事前に分かる場合 | |
| Winsorized 平均 | 外れ値を切り詰めて情報を保つ | |
| Huber/biweight M-estimator | 連続的な重み付け、 効率と頑健性のバランス | |
| 散らばり | MAD(中央絶対偏差) | BP=50%、 標準偏差の代替 |
| IQR(四分位範囲) | BP=25%、 箱ひげ図で使う | |
| $Q_n, S_n$ 推定量(Rousseeuw & Croux) | MAD より効率が高いロバストスケール | |
| 回帰 | LAD(最小絶対偏差) | 残差の絶対値の和を最小化、 BP=0% だが頑健化の出発点 |
| Huber/Tukey ロバスト回帰 | 外れ値に強い線形回帰、 IRLS で計算 | |
| LMS / LTS | BP=50% の高頑健回帰 | |
| RANSAC | 機械学習・コンピュータビジョン由来、 ランダムに部分集合を選んで多数決 | |
| 多変量 | MCD(最小共分散行列式) | 共分散行列のロバスト推定 |
| ロバスト PCA | 外れ値に強い主成分分析 | |
| ロバスト Mahalanobis 距離 | 多変量外れ値検出 | |
| 検定 | Wilcoxon 順位和検定 | Mann-Whitney U とも、 t 検定のノンパラ版 |
| Kruskal-Wallis 検定 | ANOVA のノンパラ版 | |
| permutation test | 分布の仮定なしに p 値を計算 |
本サイトの SSDSE-B のような、 少数の超巨大行政単位(東京・大阪・神奈川・愛知)と多数の中小行政単位が混在するデータでは、 単純平均が東京に強く引きずられます。 こうした場合、 中央値・トリム平均・対数変換 + 平均(GDP のような桁差データ)を併用し、 「どの代表値で見ても同じ結論か」をチェックするのが基本です。
個人所得は典型的な右裾分布(log-normal に近い)で、 上位 1% の高所得者が平均を引き上げます。 「平均年収 700 万円」は実態と乖離する典型例。 中央値所得 400 万円のほうが「中間層の典型」を示し、 政策議論ではこちらが標準。
Web サービスのレスポンスタイム、 API 呼び出し時間、 トランザクション処理時間など、 「ほとんどは 10ms 以下だが、 たまに 5 秒かかる」というデータでは、 単純平均は数秒単位に跳ね上がります。 業界標準は 中央値(p50)、 p95、 p99 のパーセンタイルで報告する SRE プラクティス。
センサー誤動作で時折ありえない値(−999、 +99999)が混入。 リアルタイム監視では、 ストリーミング中央値(streaming median)や Huber フィルタを使い、 「外れ値を自動的に減衰させつつ平均トレンドを追う」のが定番。
5 段階リッカート尺度の集計で、 「いたずら回答」「セット回答(全部 3 を選ぶ)」が混入。 平均評価より中央値・トリム平均で集計、 また外れ回答を Mahalanobis 距離などで検出して除外するのが先進的アプローチ。
回帰モデルの損失関数として、 MSE は外れ値に二乗のペナルティで弱い。 Huber 損失は中心は二乗(収束が速い)、 外側は線形(外れ値に頑健)。 sklearn の HuberRegressor、 PyTorch の nn.SmoothL1Loss として実装され、 物体検出(Fast R-CNN)でも採用。
クリック率や購入金額の A/B テストで、 まれな大口購入者が平均を歪める。 中央値での比較、 順位検定(Mann-Whitney U)、 Bootstrap + トリム平均などが頑健化策。 Netflix や Airbnb の A/B テストプラットフォームではロバスト推定が組込み済み。
| 用途 | 古典(外れ値に弱い) | ロバスト(外れ値に強い) | Bootstrap で SE 推定可能 |
|---|---|---|---|
| 中心傾向 | 算術平均 | 中央値、 トリム平均、 Huber M | ○(ロバスト推定量と相性◎) |
| 散らばり | 標準偏差、 分散 | MAD、 IQR、 $Q_n, S_n$ | ○ |
| 相関 | Pearson 相関 | Spearman 順位相関、 Kendall τ | ○ |
| 2 標本検定 | t 検定 | Mann-Whitney U、 Wilcoxon | ○ |
| 3 標本以上検定 | ANOVA | Kruskal-Wallis | ○ |
| 回帰 | OLS(最小二乗) | LAD、 Huber、 LTS、 LMS | ○ |
| 共分散行列 | 標本共分散 | MCD、 Stahel-Donoho | ○ |
| 主成分分析 | 古典 PCA | ロバスト PCA(ROBPCA、 SPCA) | ○ |
| 外れ値検出 | z スコア(>2σ) | ロバスト Mahalanobis、 Tukey 基準 | — |
| 機械学習損失 | MSE、 cross-entropy | Huber 損失、 SmoothL1、 quantile loss | — |
運用ルール:論文・レポートを書くときは、 古典推定量とロバスト推定量を両方計算し、 「両者で結論が一致するか」を必ず確認。 一致すれば結論は強固。 大きく異なれば、 データの中に外れ値や分布の歪みが存在し、 そこに重要な情報があるサインです。
回答:両方を併記するのが正解。 「平均は X、 中央値は Y、 差の原因は上位 10% に集中している大口値」のように説明文を付ける。 読者が用途に応じて使い分けられる。 平均を報告するなら必ず標準偏差も併記し、 中央値を報告するなら MAD または IQR を併記。
回答:「Huber でまず試す」が原則。 Huber は連続的に重み付けし、 効率と頑健性のバランスが良く、 IRLS で安定収束する。 Tukey biweight は外れ値を完全にゼロ重みにする再降下型なので、 BP が高いが収束が難しいことがある。 多変量や複雑な状況では MM-estimator(biweight + Huber 初期値)が現代的な選択肢。
回答:解析的な SE 公式は手法ごとに異なり複雑。 もっとも汎用な解は Bootstrap で SE を推定。 scipy.stats.bootstrap や sklearn.utils.resample で 1,000〜10,000 回再標本化して、 推定量の分布から CI を出す。
回答:使えるが効果は限定的。 n=10 で「外れ値の比率」を見積もるのが困難で、 BP 50% を保証する手法は事実上 LMS や中央値だけ。 n が小さいときは「外れ値の候補を 1 つずつ手で確認」「Bootstrap で SE を推定」「複数推定量で結論の一貫性をチェック」が王道。
回答:基本的に NG。 外れ値の原因を調査するのが先。 (a) 測定ミス・データ入力ミスなら除外可(ただしその旨を論文に明記)、 (b) 真の極端値(東京、 GAFAM 等)なら除外せずに対数変換、 ロバスト推定、 階層モデルなどで対応。 「結果がきれいになるから除外」は p-hacking と同じ問題行動。
回答:回帰タスクなら Huber 損失(PyTorch の SmoothL1Loss、 sklearn の HuberRegressor)が定番。 中心は二乗で学習が速く、 外れ値領域は線形で頑健。 quantile regression(pinball loss)でメディアン回帰も選択肢。 物体検出の Fast R-CNN、 強化学習の DQN でも Huber 損失が事実上の標準。
回答:箱ひげ図の外れ値判定(Q1 − 1.5×IQR より下、 Q3 + 1.5×IQR より上)は 視覚補助のための慣習的閾値であり、 統計的判定ではない。 正規分布データでも 0.7% は外れ値判定される。 「視覚的に検出された外れ値の個数や位置に意味があれば調査」「集計上は除外せずロバスト推定で対応」が標準作法。
回答:(1) サンプルサイズ設計は中央値・トリム平均の SE で計算(平均より大きめに必要)、 (2) Mann-Whitney U 検定または permutation test を使う、 (3) winsorized 平均なら winsorize の閾値を実験開始前に固定(事後決定は p-hacking)、 (4) 効果量も中央値の差で報告。
ロバスト統計(Robust Statistics, Huber 1964)
├── 位置パラメータの頑健化
│ ├── 順位ベース → 中央値、 トリム平均、 ウィンザライズ平均
│ └── M-estimator
│ ├── Huber (区分線形)
│ ├── Tukey biweight (再降下)
│ ├── Hampel (3 段階)
│ └── L1 = LAD = median
├── スケール(散らばり)の頑健化
│ ├── MAD(中央絶対偏差、 BP=50%)
│ ├── IQR(BP=25%)
│ └── Q_n / S_n 推定量(Rousseeuw & Croux)
├── 回帰の頑健化
│ ├── LAD(L1)回帰
│ ├── Huber 回帰、 RLM
│ ├── LMS、 LTS(高 BP 回帰)
│ ├── MM-estimator
│ └── RANSAC(CV 由来)
├── 多変量手法の頑健化
│ ├── MCD(Min Covariance Determinant)
│ ├── ロバスト PCA
│ └── ロバスト Mahalanobis 距離
└── 検定の頑健化
├── Wilcoxon、 Mann-Whitney
├── Kruskal-Wallis
└── permutation tests
系譜の祖先:Huber (1964) "Robust Estimation of a Location Parameter" でロバスト統計の数学的基盤が築かれ、 その後 Hampel、 Rousseeuw、 Tukey らによって理論と実用が拡張されました。 現代では機械学習にも組み込まれ(Huber 損失、 RANSAC)、 さらに「外れ値検出」「敵対的学習に対する頑健性」の研究へと発展しています。
「Huber と Tukey のどちらが良いか」「k や c のチューニング値はどうするか」「ロバスト回帰の SE をどう報告するか」など、 ロバスト統計は判断項目が多い分野です。 (1) まずデータ可視化で外れ値の構造を把握、 (2) いくつかの推定量を並列に計算して比較、 (3) ブートストラップで SE を補強、 (4) 最終的に「平均と中央値で結論が違わないか」を確認、 という流れが標準的。
ロバスト統計の核心は 「破壊点 (breakdown point)」 という概念です。 破壊点とは、 推定量の値を任意に大きくするのに必要な汚染データの最小割合。 標本平均の破壊点は $1/n$(1 個の外れ値で台無し)、 中央値は $50\%$ で最強。 SSDSE-B-2026 で「東京」を含めるかどうかで平均人口が約 2 倍変わる現象は、 標本平均の破壊点が極めて低いことを示しています。
$$\epsilon^*(T_n) = \min\left\{\frac{m}{n} : \sup_{x_1, \ldots, x_m} |T_n(x_1, \ldots, x_n)| = \infty\right\}$$
Hampel (1968) はこの概念を導入し、 「破壊点が高い推定量」を体系的に探す枠組みを作りました。 中央値、 トリム平均、 M 推定量、 S 推定量、 MM 推定量へと発展していきます。
| 推定量 | 破壊点 | 効率(正規時) | 計算量 | 実装 |
|---|---|---|---|---|
| 標本平均 | 1/n ≈ 2% | 100% | $O(n)$ | np.mean |
| 中央値 | 50% | 64% | $O(n)$ | np.median |
| 10% トリム平均 | 10% | 90% | $O(n \log n)$ | scipy.stats.trim_mean |
| Huber M | 0% (∞関数) | 95% | $O(n)$ 反復 | scipy.stats.huber |
| Tukey biweight | 50% | 95% | $O(n)$ 反復 | statsmodels |
| Median (MAD) | 50% | 37% | $O(n)$ | scipy.stats.median_abs_deviation |
| MM 推定量 | 50% | 95% | 高 | statsmodels.RLM |
| LMS (回帰) | 50% | 低 | 高 | statsmodels |
| LTS (回帰) | 50% | 中 | 高 | statsmodels |
「破壊点が高く、 かつ正規時の効率が高い」を両立するのが MM 推定量(破壊点 50%、 効率 95%)。 現代ロバスト統計の到達点です。
影響関数 (Influence Function) は「1 サンプル増やしたら推定量がどう動くか」の感度を表す関数:
$$\mathrm{IF}(x; T, F) = \lim_{\epsilon \to 0} \frac{T((1-\epsilon)F + \epsilon \delta_x) - T(F)}{\epsilon}$$
標本平均の影響関数は $\mathrm{IF}(x; \bar X, F) = x - \mu$、 つまり「外れ値ほど大きく影響」。 中央値の影響関数は有界($\pm c$ の階段)、 これがロバスト性の源です。
Huber 関数のロバスト推定では、 影響関数が「中央で線形、 外側で一定」(クリップされた線形)。 これにより外れ値の影響を限定しつつ、 中心では効率を保ちます。
SSDSE-B-2026 の県内総生産で複数の頑健推定量を比較:
import pandas as pd import numpy as np from scipy import stats import statsmodels.api as sm df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1) gdp = df.iloc[:, 11].values print(f'平均: {gdp.mean():,.0f}') print(f'中央値: {np.median(gdp):,.0f}') print(f'10% トリム平均: {stats.trim_mean(gdp, 0.1):,.0f}') print(f'Huber: {sm.robust.scale.huber(gdp)[0]:,.0f}') # ロバスト回帰 X = sm.add_constant(df.iloc[:, 3].values) # 人口 rlm = sm.RLM(gdp, X, M=sm.robust.norms.HuberT()).fit() print(rlm.params)
東京を含む 47 都道府県データで平均値は中央値より大きく出ます。 トリム平均と Huber 推定量は両者の中間で、 「東京の影響を抑えつつ全データを使う」バランスを取ります。
回帰での頑健化:
多変量データでのロバスト共分散行列推定:
from sklearn.covariance import MinCovDet X = df.iloc[:, 3:11].values mcd = MinCovDet(random_state=0).fit(X) print(f'ロバスト平均ベクトル: {mcd.location_}') # Mahalanobis 距離で外れ値検出 d = mcd.mahalanobis(X) outliers = np.where(d > stats.chi2.ppf(0.975, X.shape[1]))[0] print(f'外れ値県: {df.iloc[outliers, 1].tolist()}')
SSDSE-B-2026 を MCD で分析すると、 東京・大阪・愛知が頑健 Mahalanobis 距離で外れ値として識別されます。
Tukey は 1960 年に「Conventional statistics have not been particularly successful in dealing with the data we have」と書き、 ロバスト統計の必要性を訴えました。 Huber (1964) が M 推定量を提案、 Hampel (1968) が破壊点を導入、 Rousseeuw & Leroy (1987) が LMS/LTS を体系化、 Yohai (1987) が MM 推定量で破壊点と効率を両立――半世紀でロバスト統計は完成した分野になりました。
影響関数の詳細:
| 推定量 | 影響関数 | 有界性 |
|---|---|---|
| 平均 | $x - \mu$ | 無界 |
| 中央値 | $\mathrm{sign}(x - m) / (2f(m))$ | 有界 |
| Huber M | クリップされた線形 | 有界 |
| Tukey biweight | $(1-(u/c)^2)^2 u$ ($|u| \le c$, 0 else) | 有界・再下降 |
RANSAC アルゴリズム概要:
Q. 「外れ値を除外」と「ロバスト推定」の違いは?
A. 除外は離散的(含めるか含めないか)、 ロバスト推定は連続的(重みを下げる)。 ロバスト推定は「外れ値の定義」を事前に決めず、 影響を有界にする数学的枠組みです。
Q. 破壊点 50% は本当に必要?
A. 汚染率が予測できないなら必要。 SSDSE-B-2026 のように「明らかに 1-2 県が外れ値」と分かっている場合は破壊点 10% で十分。 ただし真の汚染率を知ることは難しい。
Q. Huber の閾値 c はどう決める?
A. 正規時の効率 95% なら $c = 1.345 \sigma$(scipy のデフォルト)。 99% 効率なら $c = 2.5\sigma$。 ロバスト性を優先するなら $c = 1\sigma$ 程度に下げる。
Q. MM 推定量と Huber、 どっちを使う?
A. MM 推定量は破壊点 50% かつ正規時効率 95% で「両方の良いとこ取り」。 計算は重いが、 安全側で MM を推奨。
Q. 多変量で外れ値を見つけるには?
A. Mahalanobis 距離だけでは masking 効果に騙されます。 MCD ベースのロバスト Mahalanobis 距離が標準。 sklearn.covariance.MinCovDet で計算可能。
Q. 深層学習の adversarial example は?
A. これは「ロバスト統計」の連続版。 adversarial training は「最悪ケース汚染への耐性」を学習する方法で、 破壊点的思考が活きます。
Q. Robust と Resistant は同じ?
A. 厳密には違います。 Resistant は「観測値の小さな変化に強い」(finite-sample 性質)。 Robust は「分布の小さな変化に強い」(asymptotic 性質)。 教科書によっては混用。
Q. ロバスト統計の弱点は?
A. (1) 正規時の効率損失、 (2) 計算コスト、 (3) 解釈の難しさ、 (4) 標準誤差公式の複雑性、 (5) 多重比較・検定理論の未発達。
品質管理
工程能力指数 Cpk のロバスト版、 外れ値の影響を除いた管理限界。
金融
ロバスト共分散行列でポートフォリオ最適化(Markowitz の外れ値感度問題を解決)。
医療画像
CT/MRI でアーチファクトに頑健な領域分割。
天文学
宇宙背景放射のスペクトル推定で、 セシウム時計や強い恒星のスパイクを排除。
遺伝子発現
マイクロアレイデータの正規化、 RMA の median polish。
信号処理
ロバストカルマンフィルタ、 外れ観測値に強い状態推定。
ロボティクス
RANSAC で SLAM の特徴点マッチング。
保険
ロバスト平均で保険料率算定、 巨大事故の影響を限定。
気象
ロバスト時系列フィルタで観測値の異常を排除。
社会調査
ロバスト回帰で意識調査の極端回答を除外。
影響関数 (IF) は「1 つのデータ点を $x$ に置いたとき、 推定量がどれだけ変化するか」を表します。 各推定量の IF:
| 推定量 | 影響関数 | 特徴 | $|x| \to \infty$ 挙動 |
|---|---|---|---|
| 平均 | $x - \mu$ | 線形 | 無界・破壊 |
| 中央値 | $\mathrm{sign}(x - m)/(2f(m))$ | 階段 | 有界・一定 |
| Huber M (c) | $\mathrm{clip}(x-\mu, -c, c)$ | 区分線形 | 有界・$\pm c$ |
| Tukey biweight | $(1-(u/c)^2)^2 u$ for $|u|\le c$, 0 else | 再下降 | 有界・0 に減衰 |
| 分散(最尤) | $(x-\mu)^2 - \sigma^2$ | 二次 | 無界・破壊 |
「再下降型」(redescending)は最も強力なロバスト性。 Tukey biweight は外れ値の影響を完全に 0 にできる一方、 多重最適解の問題を持ちます。 これが MM 推定量で「S 推定量で初期値 → biweight で最適化」する理由です。
データに外れ値ありか?
├── ない(正規) → 通常の SD / 平均で OK
├── 軽い汚染(< 10%) → トリム平均、 Huber M
├── 中程度(10-25%) → MAD、 M 推定量
└── 重度(> 25%)
├── 単変量 → 中央値、 LMS
├── 回帰 → MM 推定量、 LTS
└── 多変量 → MCD、 OGK