直観に反するように見えるかもしれませんが、説明するアプローチを使用しても意味がありません(言葉遣いをするために、「意図したものとは非常に異なる結果につながる可能性があります」と書きます)動作しないことは結果的であり、さらに、より簡単で、より安全で、確立された代替手段が追加費用なしで利用可能です。
まず、外れ値が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の推定値。サンプルのいずれかの部分の説明が非常に不十分です。
あなたがポイントのoutlyingness中央値と怒っに基づく外れ値検出ルール使用して得られたであろう結果とこの結果を対比しデータベクトルにWRTあるが XxiX
O(xi,X)=|xi−med(X)|mad(X)
ここでのエントリの中央値である(除外せず、それらのすべて)及び、それらのある中央絶対偏差回1.4826(I延期のためにリンクされたウィキの記事へこの番号はここでの主要な問題と直交しているため、この番号の由来を説明しています。X mad(X )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)
画像2は、同じデータセットのこの代替外れ値インデックスの値をプロットしています。ご覧のとおり、3つの外れ値がすべて明らかになりました。さらに、この異常値検出ルールには、いくつかの統計特性が確立されています。これは、とりわけ、使用可能なカットオフルールにつながります。たとえば、データの真正な部分が有限の二次モーメントを持つ対称分布から引き出されると想定できる場合、そのデータポイントをすべて拒否できます。
|xi−med(X)|mad(X)>3.5
外れ値として。上記の例では、このルールを適用すると、観測値1、2、3に正しくフラグが付けられます。これらを拒否すると、残りの観測値の平均とsdは0.021と0.93になります。 !