1. ホーム
  2. r

[解決済み] データセットから外れ値を除去する方法

2022-11-03 11:35:19

質問

美容と年齢の多変量解析データがあります。年齢は20~40で、2つの間隔(20、22、24...40)で、データの各レコードについて、年齢と1~5までの美の評価が与えられています。このデータの箱ひげ図(X軸に年齢、Y軸に美の評価)を作成すると、各箱のひげの外側にいくつかの外れ値がプロットされます。

データ フレーム自体からこれらの外れ値を削除したいのですが、R が箱ひげ図に対して外れ値をどのように計算するのかがわかりません。以下は、私のデータがどのようなものであるかの例です。

どのように解決するのですか?

さて、あなたのデータセットにこのようなものを適用する必要があります。入れ替えたり、保存したりしないでください。あと、データから外れ値を削除するのは(ほぼ)やめたほうがいい。

remove_outliers <- function(x, na.rm = TRUE, ...) {
  qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
  H <- 1.5 * IQR(x, na.rm = na.rm)
  y <- x
  y[x < (qnt[1] - H)] <- NA
  y[x > (qnt[2] + H)] <- NA
  y
}

実際に見るには

set.seed(1)
x <- rnorm(100)
x <- c(-10, x, 10)
y <- remove_outliers(x)
## png()
par(mfrow = c(1, 2))
boxplot(x)
boxplot(y)
## dev.off()

そしてもう一度言いますが、決して自分でやってはいけません!異常値はなるべくしてなったのです。=)

EDITです。 追加したのは na.rm = TRUE をデフォルトとして追加しました。

EDIT2です。 削除された quantile 関数を削除し、添え字を追加して、関数を高速化しました! =)