Часто вам может понадобиться удалить выбросы сразу из нескольких столбцов в R.
Один из распространенных способов определить наблюдение как выброс - это если оно в 1,5 раза превышает межквартильный размах, чем третий квартиль (Q3), или в 1,5 раза превышает межквартильный размах, чем первый квартиль (Q1).
Используя это определение, мы можем использовать следующие шаги, чтобы создать простую функцию для выявления выбросов, а затем применить эту функцию к нескольким столбцам во фрейме данных R.
Шаг 1: Создайте фрейм данных.
Во-первых, давайте создадим фрейм данных в R:
df <- data.frame(index=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
var1=c(4, 4, 5, 4, 3, 2, 8, 9, 4, 5),
var2=c(1, 2, 4, 4, 6, 9, 7, 8, 5, 29),
var3=c(9, 9, 9, 5, 5, 3, 4, 5, 11, 34))
Шаг 2: Определите функцию выброса.
Далее давайте определим функцию, которая может идентифицировать выбросы, и функцию, которая затем может удалить выбросы:
outliers <- function (x) {
Q1 <- quantile(x, probs =.25)
Q3 <- quantile(x, probs =.75)
iqr = Q3-Q1
upper_limit = Q3 + (iqr\*1.5)
lower_limit = Q1 - (iqr\*1.5)
x > upper_limit | x < lower_limit
}
remove_outliers <- function (df, cols =names(df)) {
for (col in cols) {
df <- df[!outliers(df[[col]]),]
}
df
}
Шаг 3: Примените функцию выброса к фрейму данных.
Наконец, давайте применим эту функцию к нескольким столбцам фрейма данных, чтобы удалить выбросы:
remove_outliers(df, c('var1', 'var2', 'var3'))
index var1 var2 var3
1 1 4 1 9
2 2 4 2 9
3 3 5 4 9
4 4 4 4 5
5 5 3 6 5
9 9 4 5 11
Вы можете найти больше руководств по R здесь .