web-dev-qa-db-ja.com

確率付きのRを使用した多変量異常値検出

私は、Rを使用して多変量外れ値を特定するための最良の方法をどこでも探していましたが、まだ信じられる方法を見つけていないと思います。

私のデータには複数のフィールドも含まれているため、アヤメのデータを例にとることができます

data(iris)
df <- iris[, 1:4] #only taking the four numeric fields

まず、ライブラリMVNのMahalanobis distanceを使用しています

library(MVN)
result <- mvOutlier(df, qqplot = TRUE, method = "quan") #non-adjusted
result <- mvOutlier(df, qqplot = TRUE, method = "adj.quan") #adjusted Mahalonobis distance

どちらも結果として多数の外れ値(非調整の場合は150のうち50、調整済みの場合は49/150)をもたらしました。残念ながら、しきい値を設定するためのmvOutlierメソッドで変数を見つけることができないようです(ポイントが外れ値である確率が高くなるため、数値が小さくなります)。

次に、外れ値ライブラリを使用しました。これはunivariate外れ値を見つけることです。そのため、私の計画は、データの各ディメンションの外れ値を見つけることであり、すべてのディメンションの外れ値であるそれらのポイントは、データセットの外れ値と見なされます。

library(outliers)
result <- scores(df, type="t", prob=0.95) #t test, probability is 0.95
result <- subset(result, result$Sepal.Length == T & result$Sepal.Width == T & result$Petal.Length == T & result$Petal.Width == T)

このために確率を設定できますが、多変量外れ値の検出に取って代わることはできないと思います。

私が試した他のいくつかのアプローチ

  • library(mvoutlier):これはプロットのみを表示します。外れ値を自動的に見つけることは困難です。そして、私はこれに確率を追加する方法がわかりません
  • クックの距離( リンク ):男は彼がクックの距離を使用したと言ったが、これが大丈夫であることを証明する強力な学術的証拠はないと私は思う。
11
Duy Bui

これらの2つのリンクはそのままにしておきます。1つ目は多変量異常値検出のさまざまな方法に関する論文です。2つ目はRでこれらを実装する方法を検討しています。

クックの距離は、データポイントが持つ影響を調べる有効な方法であり、したがって、外れているポイントの検出に役立ちます。マハラノビス距離も定期的に使用されます。

テストの例では、irisデータセットは役に立ちません。明らかに分離可能であるため、分類問題に使用されます。 50個のデータポイントを除外すると、種全体が排除されます。

多変量データの異常値の検出-

http://www.m-hikari.com/ams/ams-2015/ams-45-48-2015/13manojAMS45-48-2015-96.pdf

R実装

http://r-statistics.co/Outlier-Treatment-With-R.html

4
Andrew Haynes