外れ値処理 ── 外れ値を検出・除去・修正する一連の処理
平均、 標準偏差、 回帰係数、 相関係数――どれも外れ値1個で大きく動きます。 散布図/箱ひげ図で必ず目視確認するのが分析の第一歩。
47都道府県の「人口」を例に:
でも東京を「外れ値だから除外」は分析意図を壊す。 全国を語るなら残すべき。 中位都市を語るなら除外も検討。
47都道府県の「人口」で IQR 法:
最小限のスニペットで動作確認できる例。 公的データ(SSDSE 等)を想定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1) # IQR法 q1, q3 = df['人口'].quantile([0.25, 0.75]) iqr = q3 - q1 mask = (df['人口'] >= q1 - 1.5*iqr) & (df['人口'] <= q3 + 1.5*iqr) df_clean = df[mask] print(df[~mask][['都道府県','人口']]) # 外れ値の確認 # Winsorize(上下2.5%を打ち切り) from scipy.stats.mstats import winsorize df['人口_w'] = winsorize(df['人口'], limits=[0.025, 0.025]) |
「身長180cm」も「体重50kg」も単独では正常。 でも「180cm × 50kg」は珍しい組合せ → 多変量外れ値。 検出には:
「身長180cm」も「体重50kg」も単独では正常。 でも「180cm × 50kg」は珍しい組合せ → 多変量外れ値。 検出には: