てん@統計屋さんです
この記事は、以前の記事の続きです。外れ値の取扱として、だめな例を紹介しています。正当になりうる取扱いについては下の記事を確認ください。
だめ絶対︰外れ値の検定
魅力的な手法名ですね。その名前の通り、データに外れ値があるか?ということに対する検定となっています。オススメしないわけですから、手法の詳細な説明はWikipedia先生におまかせしますが、代表的な利用手順を紹介しておきます。
1.取得データに対し、有意水準○%の外れ値の検定を行う
2.有意であればデータを削る
3.外れ値検定を行う
4.以下2.3.を繰り返し
5.有意にならなくなるまで外れ値を外したら、残ったデータで解析を行う
事前に(計画段階で)手順を示すことができますし、客観的な再現も容易です。恣意性はそこには存在しないとも思えてきます。なるほど、いい手順な気がしてきました。
ところで、外れ値の検定は何を根拠に外れ値と判定しているのでしょうか?
外れ値の検定は、正規分布から出たデータとしてあまりにも極端な値があるということを判定しています。つまり、正規分布ではないデータに適用するとひどい目に合うことになります。
そして三人だけになった
次のようなデータを用意しました。
「1、 8、 64、 512、 4,096、 32,768、 262,144、 2,097,152、 16,777,216、 134,217,728、 1,073,741,824」 この中で外れ値の候補はどれですか?
[word_balloon id=”6″ position=”L” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]1,073,741,824かな?[/word_balloon]
そうですね、その一つ小さい値である134,217,728と9億近い差があります。
さて、このデータに外れ値の検定を適用してみましょう。有意水準は馴染みのある0.05にしておきましょう。※今回はスミルノフ・グラブス検定を適用しています
外れ値の検定にデータを突っ込んで、出てきた検定結果のP値がこちらになります
1,073,741,824に対する p値<0.00001
有意ですね
[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”hide” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]おめでとう1,073,741,824は外れ値だったので除外対象だ![/word_balloon]
[word_balloon id=”9″ position=”R” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]お前だれだ?[/word_balloon]
除外するべきデータがいたので1,073,741,824を除いて、再度の外れ値の検定を行います。
[word_balloon id=”6″ position=”L” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]次の外れ値の候補は134,217,728やな[/word_balloon]
検定結果のp値がこちらになります
134,217,728に対する p値<0.00001
[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]おめでとう134,217,728も外れ値だったので除外対象だ![/word_balloon]
まだ外れ値がいたようですので、外れ値の検定は続きます。
16,777,216に対する p値<0.00001
[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”hide” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]おめでとう16,777,216も除外対象だ![/word_balloon]
2,097,152に対する p値<0.00001
[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”hide” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]2,097,152も除外対象だ![/word_balloon]
262,144に対する p値=0.00007
262,144[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”hide” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]262,144も除外対象なの?[/word_balloon]
32,768に対する p値=0.00049
[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”hide” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]32,768も除外しないとだめ?[/word_balloon]
4,096に対する p値=0.00363
[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”hide” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]4,096は除外しないほうがいいよ・・・[/word_balloon]
512に対する p値=0.02649
[word_balloon id=”11″ position=”L” size=”M” balloon=”talk” name_position=”hide” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]512はもう勘弁して!![/word_balloon]
64に対する p値=0.19409
[word_balloon id=”1″ position=”L” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]安心して64は残るから[/word_balloon]
そしてデータは1、 8、 64の3個になりました。
外れ値が無くなったと、喜んでる方はいらっしゃいますでしょうか?いませんよね?
[word_balloon id=”9″ position=”R” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]そして誰もいなくなった
って言えなくて残念そうな方はここにいますよ[/word_balloon]
[word_balloon id=”1″ position=”L” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]う、うん、ちょっと残念[/word_balloon]
※この記事のオチは済みました
もとのデータってそもそも外れ値があったと思いますか?
実はあれを種明かしすると1から順繰りに8倍していっただけのデータです、なので
1、 8、 64、 512、 4,096、 32,768、 262,144、 2,097,152、 16,777,216、 134,217,728、 1,073,741,824
この訳のわからない数列も、log2で変数変換したら
0、 3、 6、 9、 12、 15、 18、 21、 24、 27、30
となります。もちろんこの中に外れ値があると主張する方は皆無でしょう。もとのデータは、外れ値があるわけではなく、対数スケールで見るべきデータであるだけでした。
外れ値判定されたデータを外していい根拠は?
そして3人になった は極端な例ですが、そもそも外れ値の検定で有意だったというだけの理由で除外されたデータは、どうして除外してよいのでしょうか?
誤測定との根拠もなく、科学的に見ればありえなくもないその数値はなぜ除外されなくてはならないのでしょうか?
正規分布から外れているという事だけで貴重なデータを外して何故いいのか、それを説明する方法は多分ありません。
全くいらない手法なの?
ここまで、けちょんけちょんに言いましたが、外れ値の検定が、全くいらないと言ってるわけではないです。大量のデータを扱う人にとって、一つ一つのデータを目を皿にして眺め、誤測定や誤入力を見つけることは困難でしょう。しかし、外れ値の検定で引っ掛けたデータだけを精査するのであれば、かなり現実味が出て来ます。
場合によっては、適切な変数変換の考察もできるかもしれません。
エラーデータ(異常値)のスクリーニングに使うのであれば、十分価値のある手法だと思います。
まとめ
外れ値の検定は、恣意的な外れ値の除外よりは、その手続きを再現出来る点で確かにフェアです。しかし、これに頼りっきりで、データの特性を一切見なくなるって言うのでは上記のような大問題が起こりえます。取得したデータを修正したり除外するというのは、本当に慎重に、かつその扱いが適正である明確な(数学的ではない)根拠を持つことが重要です。
[word_balloon id=”1″ position=”L” size=”M” balloon=”talk” name_position=”under_avatar” radius=”true” avatar_border=”true” avatar_shadow=”false” balloon_shadow=”true”]とかいいながら、データ取得計画時には、「外れ値出るなー!」って祈ってたりするんですがね。[/word_balloon]
でわでわ
他のp値を小さくするためのだめな対処法を駆使する方々の紹介は以下。
[…] データをてんから見てみようだめな外れ値の対処法も紹介するよhttps://www.ten-kara-data.com/bad-outlier-method/てん@統計屋さんですこの記事は、以前の記事の続きです。外れ値の取扱として […]