外れ値を明らかにするために、1つの平均値と標準偏差を残して使用できますか?


17

データを正常に配信したとします。データの各要素について、平均からどれだけのSDが離れているかを確認します。データに外れ値がある可能性があります(おそらく1つだけですが、2つまたは3つかもしれません)が、この外れ値は基本的に私が探しているものです。平均とSDの計算から現在見ている要素を一時的に除外することは意味がありますか?私の考えでは、平均に近い場合、影響はありません。外れ値である場合、平均とSDの計算にバイアスがかかり、検出される確率が低くなる可能性があります。私は統計学者ではないので、どんな助けでも大歓迎です!


7
それは完全に理にかなっており、多くの異常値検出技術の基礎となっています。しかし、うまくいくかもしれないし、そうでないかもしれない独自の方法を発明するのではなく(そして後者は統計学者によって新しく発明された方法でさえはるかにありそうなので、彼らは慎重な研究を必要とする)、なぜあなたは理論的に確認し、経験的にテストしましたか?
whuber

それを指摘してくれてありがとう。これらの手法を調べ、それらが私のデータでうまく機能するかどうかを確認します!
オリバー14年

1
:Rにおける回帰削除診断にこのページをチェックしてくださいstat.ethz.ch/R-manual/R-patched/library/stats/html/...
ベンOgorek

....そして、単一の外れ値以上を見つけるためにそれらを信頼できない理由を説明するためのこの回答。
user603 14年

外れ値にフラグを立てるというアイデアに関する上記の素晴らしい考え。しばらく前に、異常にフラグを立てるためのロスパスフィルターのアイデアに関する記事を書きました。これが上記のアイデアの拡張に役立つことを願っています。記事へのリンク:datascience.com/blog/python-anomaly-detection
Pramit

回答:


25

直観に反するように見えるかもしれませんが、説明するアプローチを使用しても意味がありません(言葉遣いをするために、「意図したものとは非常に異なる結果につながる可能性があります」と書きます)動作しないことは結果的であり、さらに、より簡単で、より安全で、確立された代替手段が追加費用なしで利用可能です。

まず、外れ値が1 しかない場合は、提案された手順を使用して最終的に見つけることができます。ただし、一般に(データに複数の外れ値がある場合)、良いデータポイントを外れ値として拒否したり、外れ値を良いデータポイントとして保持したりする可能性があるという意味で、提案するアルゴリズムは完全に壊れます壊滅的な結果を招く可能性があります。

以下に、あなたが提案する規則が破られる簡単な数値例を挙げてから、より安全でより確立された代替案を提案しますが、これの前にa)あなたが提案する方法の何が間違っているか、b)通常は何が好ましいかを説明しますそれに代わるものです。

本質的に、使用する推定値(1つの平均と標準偏差を除外)が残りの方向に引き寄せられる傾向があるため、データの1つの平均と標準偏差からの観測の距離を使用して外れ値を確実に検出することはできません外れ値:これはマスキング効果と呼ばれます。

一言で言えば、外れ値を確実に検出する簡単な方法の1つは、提案した一般的な考え方(位置とスケールの推定値からの距離)を使用しますが、使用した推定値(1つの平均、SDを除く)を堅牢なもの、つまり推定値に置き換えることです外れ値に左右されにくいように設計されています。

この例を考えてみましょう。ここでは、Normal 0,1から描画された47個の本物の観測値に3つの外れ値を追加しています。

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

以下のコードは、1アウトアウト平均と標準偏差(たとえば、提案するアプローチ)に基づいて外れインデックスを計算します。

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

このコードは、以下に示すプロットを生成します。

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

画像1は、外れ値の値を観測値の関数として示しています(外れ値から最も離れているのはこのプロットの範囲外ですが、他の2つは赤い点で示されています)。ご覧のとおり、最も極端な例外を除いて、提案されたように構築された外れ値インデックスは外れ値を明らかにできません。実際、2番目と3番目(よりマイルド)の外れ値の値(外れ値インデックス)はすべてより小さい本物の観測!...あなたが提案するアプローチでは、これらの2つの極端な異常値を本物の観測のセットに保持し、残りの49個の観測値を同じ均質プロセスから来ているかのように使用して、最終的な0.45と2.32のこれらの49のデータポイントに基づいた平均値とsdの推定値。サンプルのいずれかの部分の説明が非常に不十分です。

image2

あなたがポイントのoutlyingness中央値と怒っに基づく外れ値検出ルール使用して得られたであろう結果とこの結果を対比しデータベクトルにWRTあるが XxiX

O(xi,X)=|ximed(X)|mad(X)

ここでのエントリの中央値である(除外せず、それらのすべて)及び、それらのある中央絶対偏差回1.4826(I延期のためにリンクされたウィキの記事へこの番号はここでの主要な問題と直交しているため、この番号の由来を説明しています。X madX med(X)Xmad(X)

Rでは、この2番目の外れ値インデックスは次のように計算できます。

out_2 <- abs( x-median(x) )/mad(x)

および(以前と同様に)プロット:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

image2

画像2は、同じデータセットのこの代替外れ値インデックスの値をプロットしています。ご覧のとおり、3つの外れ値がすべて明らかになりました。さらに、この異常値検出ルールには、いくつかの統計特性が確立されています。これは、とりわけ、使用可能なカットオフルールにつながります。たとえば、データの真正な部分が有限の二次モーメントを持つ対称分布から引き出されると想定できる場合、そのデータポイントをすべて拒否できます。

|ximed(X)|mad(X)>3.5

外れ値として。上記の例では、このルールを適用すると、観測値1、2、3に正しくフラグが付けられます。これらを拒否すると、残りの観測値の平均とsdは0.021と0.93になります。 !


2
すぐに矛盾する最初の文にもかかわらず+1(OPの提案、最大で1つの外れ値が想定されている場合に意味があります。あなたの異議は、その前提に違反する場合のこの手順に関する問題に関係します)。
whuber

1
ありがとうございました。それまでの間、以前のコメントは削除しました。編集後に陳腐化することが予想されます。
whuber

3
いくつかの外れ値がそれらのいずれかに対して単一の外れ値検出をブラインドにする現象は、マスキングと呼ばれることがよくあります。これは、人々が問題に関連するより多くの情報を見つけるのに役立つかもしれません。
Glen_b

1
@ user603実例となるシナリオを作成する素晴らしい仕事ですが、あなたはお風呂で赤ちゃんを捨てていると思います。回帰削除診断は完全ではありませんが、広く適用可能であり、時の試練に耐えてきました。中央値を取得することは問題ありませんが、より複雑な尤度ベースのモデルへのアプローチをどのように拡張するのでしょうか。
ベンオゴレク14年

2
+6、これは本当に素晴らしい答えです-明確かつ徹底的に説明され、コード、図、式で説明されています 読みやすくするために、コードの書式設定を少し調整しました。気に入らない場合は、謝罪してロールバックしてください。
GUNG -復活モニカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.