外れ値は、グラフの見た目を整えるために消しゴムで消すゴミではなく、現場で何かが起きたことを知らせる警報ベルだ。
例えば、近所のカフェのレシートの山を整理していて、コーヒー450円、カフェラテ500円、紅茶480円……と並んでいる中に、突然「50万円」のレシートが1枚混ざっていたらどうするか。 「うわ、グラフの縮尺が壊れる!」と焦ってデリートキーで消すのはちょっと待ってほしい。もしそれが店員の打ち間違い(ゼロを3つ多く打った)なら消して直すべきだけど、もし「隣の席の石油王がメニューを端から端まで買い占めた大事件」だった場合、僕らは世紀のスクープをシュレッダーにかけて証拠隠滅したことになる。
今日は、データの中にぽつんと現れる極端な数字――「外れ値」を消す前に、僕が必ず立ち止まって確認している手の内を書いてみる。
まず、1週間の売上を並べてみた
本物のどこかの店の数字を持ち出すと怒られるので、小さなネットショップの1週間の売上データを作ってみた。月曜日から日曜日までの日別売上だ。
| 曜日 | 売上 |
|---|---|
| 月曜 | 12,000円 |
| 火曜 | 15,000円 |
| 水曜 | 11,000円 |
| 木曜 | 14,000円 |
| 金曜 | 13,000円 |
| 土曜 | 18,000円 |
| 日曜 | 1,200,000円 |
月曜から土曜までは、だいたい1万〜1万8千円の間で落ち着いている。6日間の合計は83,000円だ。 ところが、日曜日に突然「120万円」という特大の数字が飛び込んできた。
この7日間の合計売上は、1,283,000円。 7で割って日別の平均売上を計算すると、約183,286円になる。
「うちのショップは、1日平均で約18万円売れています」。 ……いや、誰の顔だよそれ。月曜から土曜までの店長が聞いたら「そんなに売れた日なんて一日もないよ」と首をかしげる。第1回で書いた「平均年収の罠」とまったく同じ現象だ。たった1日の120万円が、残りの6日間の現実をごっそり持ち上げてしまっている。
棒グラフを作ってみても最悪だ。日曜日の棒だけが天井を突き破って、月曜から土曜の棒は地べたに張り付いたミミズみたいに見えなくなる。日々の売上の波なんて何も読み取れない。
ここで、多くの人が反射的にこう考える。 「この日曜日の数字、外れ値だから除外しちゃおう」
外れ値には「2つの正体」がある
邪魔な数字をポチッと消せば、グラフは一瞬で平和になる。 日曜を除いた月〜土の6日だけで平均を出せば、83,000 ÷ 6 = 約13,833円。 「普段の売上ペースは1日あたり約1万4千円ですね」と、日常の実感にぴったり合う綺麗な数字が手に入る。スライドの見栄えも最高だ。
でも、消す前に絶対に確かめなきゃいけないことがある。 その外れ値の正体が「どっち」なのか、だ。
外れ値には、大きく分けて2種類ある。
ひとつは、「エラー・ノイズ」。 入力ミス、測定器の故障、単位の間違い(グラムとキログラムを取り違えたとか)、あるいは開発者が本番環境に紛れ込ませたテスト注文。 もし日曜の120万円が「担当者が12,000円と打つところ、テンキーのゼロを2回余計に叩いた」のだとしたら、これは文句なしのエラーだ。残しておくと全体の合計売上まで狂ってしまうから、正しい数字(12,000円)に修正するか、除外しなければいけない。
もうひとつは、「本物の異常・シグナル」。 ここが一番大事なところで、数字は極端だけど現実に起きた本当の出来事であるパターンだ。 どこかの企業が備品として商品をまとめ買いしてくれたのかもしれない。有名な配信者がSNSで商品を絶賛して、日曜の夜に注文が殺到したのかもしれない。
もし後者だった場合、その120万円を「平均のグラフが崩れるから」という理由で消去したら何が起きるか。 月曜日の朝、倉庫の担当者は「おい、120万円分の出荷伝票が出てるぞ! 在庫が足りない!」とパニックになる。経理は「売上報告と銀行口座の入金額が120万円合わない」と頭を抱える。 集計した本人は「グラフが綺麗になったからOK」と思っていても、現実のビジネスは大惨事だ。
邪魔な点を消すと、事件まで一緒に消えてしまう。 外れ値は、消去すべきゴミデータではなく、「ここで何かが起きましたよ」と教えてくれる事件現場の足跡なのだ。
だから僕は「消す」のではなく「分ける」
実務で外れ値に出くわしたとき、僕がどうしているか。手の内を明かすと、基本的には**「消す」のではなく「分ける」**ことにしている。
まず、その数字の正体を突き止める。 注文一覧を開いて、日曜日の注文ログを1行ずつ見る。1万円の注文が120件入ったのか、それとも120万円の注文が1件だけドカンと入ったのか。顧客名は誰か。クレジットカードの決済は正常に通っているか。 (もし「テスト太郎」という名前で999,999円の注文が入っていたら、そっと開発チームにSlackを投げる)
そして、もしそれが本物の大口注文だったなら、報告の仕方を2本立てにする。
- 全体の合計や着地予測には、必ず外れ値を含める(現実に120万円は入金されているから)。
- 「普段の傾向」を語るときだけ、「※ただし日曜の大口注文120万円を除く」と注記して、通常値(平均13,833円)を並べる。
「消したことを隠して綺麗な数字だけ見せる」のが一番危ない。 「全体としてはこうだけど、普段の実力値を見るためにこの1件だけ分けて計算しました」と両方出す。これなら、日常のペースも把握できるし、現場の在庫や入金の事件も見落とさない。
「外れ値を除外して平均を出しました!」ってドヤ顔で1枚のスライドを出せば、会議はスムーズに進む。
……でも、その除外した1行に会社の未来の特大顧客が眠ってるかもしれないのに、デリートキー1発で捨てちゃうのはもったいなさすぎる。
で、これの何が怖いか
数字は嘘をつかない。でも、都合のいい点だけを残して、不都合な点を「外れ値」と呼んで消し去る人間はいくらでも嘘をつく。
1954年に Darrell Huff が書いた『統計でウソをつく法』でも、自分たちの主張に都合の悪いデータを「測定誤差」や「例外」として切り捨てて、きれいな右肩上がりのグラフをでっち上げる手口が紹介されている。70年前からずっと使われている古典的な手口だ。
「どの数字を外れ値とみなすか」の基準をあらかじめ決めずに、結果を見てから「あ、これ邪魔だから外れ値ね」と後出しで消し始めると、平均値なんて上げ下げ自由自在になってしまう。新薬の効果実験でも、売上の改善テストでも、効かなかった人のデータを「例外」としてポイポイ捨てれば、誰だって大成功のグラフを作れる。
だから、「どんな基準で外れ値と判定したか」「なぜそれを除外したのか」の理由は、必ずメモに残しておかなきゃいけない。 数字を削るとき、僕らはデータの一部を意図的に捨てているという自覚が必要なのだ。
今日の結論
外れ値を見つけたら、デリートキーを押す前に、虫眼鏡を持つ。
もし冒頭のカフェで、レシートの束から「50万円」が出てきたら。 店員が「0」を3つ押し間違えてパフェを50万円で打ったのか、それとも石油王が「この店のコーヒー豆を全部くれ」と笑ってブラックカードを切ったのか。 確認する前にレシートをシュレッダーにかけていい理由なんて、世界のどこにもない。打ち間違いならレジを修正して500円に戻すし、石油王なら防犯カメラの映像を保存して店長に電話をかける。
数字が大きく飛び出ているのは、そこに物語がある証拠だ。 グラフを綺麗にすることより、その数字が何を言おうとしているのかを聞く方が、たぶんずっと面白い。