Как я могу увидеть выброс нескольких переменных в одном блокпосте, используя R?

Я новичок в Р. У меня есть вопрос. Для проверки выброса переменной мы обычно используем:

boxplot(train$rate)

Предположим, скорость - это переменная моих наборов данных, а train - это имя моих наборов данных. Но когда у меня есть несколько переменных, таких как 100 или 150 переменных, тогда будет очень много времени, чтобы проверить выбросы по одной переменной. Есть ли какая-нибудь функция, чтобы вывести выбросы 100 переменных в одном блокпосте?

Если да, то какая функция используется для удаления выбросов этих переменных за один раз вместо одного за другим? Пожалуйста, помогите решить эту проблему.

заранее спасибо

2 ответа

Решение

Я согласен с Руи Баррадасом в том, что убирать выбросы без дальнейших размышлений - плохая практика. Пока значение действительно, вы должны хранить его в своих данных или, по крайней мере, выполнить два отдельных анализа с и без влиятельного значения. Вы можете использовать цикл for для применения функции к каждой переменной в вашем наборе данных.

train2<-train # Copy old dataset
outvalue<-list() # Create two empty lists
outindex<-list()
for(i in 1:ncol(train2){ # For every column in your dataset
  outvalue[[i]]<-boxplot(train2[,i])$out # Plot and get the outlier value
  outindex[[i]]<-which(train2[,i] == outvalue[[i]]) # Get the outlier index
  train2[outindex[[i]],i] <- NA # Remove the outliers
}

Это работает и наносит на график данные, но это довольно медленно. Если вы не хотите отображать данные, а просто хотите выбросы, которые вы можете посмотреть в других функциях выбросов, extremevalues Пакет имеет функцию, которая использует другой подход для определения выбросов и не требует сюжета. Это использует getOutliers функция от extremevalues пакет

outRight<-list()
outLeft<-outRight
for(i in 1:ncol(train2){
  outRight[[i]]<-getOutliers(train2[,i])$iRight
  outLeft[[i]]<-getOutliers(train2[,i])$iLeft
  train2[outRight[[i]],i] <- NA
  train2[outLeft[[i]],i] <- NA
}

Функция boxplot возвращает значение Если вы видите Value раздел его страницы справки, вы увидите, что это список с именованными компонентами, один из которых out, Это тот, который вы, кажется, ищете.

bp <- boxplot(train$rate)
bp$out
clean <- train$rate[-which(train$rate %in% bp$out)]   # to remove the outliers

Я бы тоже так не поступил. Выбросы - это данные, и они могут быть нормальными / вероятными. Исключая их, вы не принимаете во внимание полноту ваших данных, что является плохой практикой.

Другие вопросы по тегам