私は、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)
このために確率を設定できますが、多変量外れ値の検出に取って代わることはできないと思います。
私が試した他のいくつかのアプローチ
これらの2つのリンクはそのままにしておきます。1つ目は多変量異常値検出のさまざまな方法に関する論文です。2つ目はRでこれらを実装する方法を検討しています。
クックの距離は、データポイントが持つ影響を調べる有効な方法であり、したがって、外れているポイントの検出に役立ちます。マハラノビス距離も定期的に使用されます。
テストの例では、irisデータセットは役に立ちません。明らかに分離可能であるため、分類問題に使用されます。 50個のデータポイントを除外すると、種全体が排除されます。
多変量データの異常値の検出-
http://www.m-hikari.com/ams/ams-2015/ams-45-48-2015/13manojAMS45-48-2015-96.pdf
R実装