После создания функции в R, которая должна возвращать вектор выбросов, замененный NA для некоторых данных, я получил выброс, оставшийся около максимума:
kill_outliers <- function(data, na.rm=TRUE){
q <- quantile(data, probs=c(0.25, 0.75), na.rm=na.rm)
killed <- data
intq <- 1.5 * IQR(data, na.rm=na.rm)
killed[x < (q[1]-intq)] <- NA
killed[x > (q[2]+intq)] <- NA
killed
}
После использования этой функции boxplot (убит) показывает :
Почему есть выброс? Я пробовал:
killed[x > (q[2] + intq)] <- NA
, предполагая, что это меньше или равно, однако ничего не изменилось.
(q[2] + intq) == 216.87
и последнее значение в отсортированном наборе данных после удаления 216.16
, который должен подойти. Кроме того, я не понимаю, почему, когда я использовал 3-й квантиль (q[3] + intq)
, он вообще не исключил каких-либо выбросов ...
EDIT
Как указала машина, проблема заключается в создании нового набора данных с новым IQR. Таким образом, я прихожу к выводу, что boxplot () создает новый график оценки IQR для каждого набора данных. Дополнительный вопрос: есть ли способ подогнать новый набор данных к предыдущему графику, созданному коробчатой диаграммой, чтобы подогнать значения к прежним квантилям?