Как мне выделить положительные и отрицательные выбросы из коробчатых диаграмм в отдельные переменные в R?

Мне нужно нанести выбросы из коробчатой ​​диаграммы на карту. Мой лектор дал мне функцию извлечения всех выбросов из этого коробчатого графика:

выбросы = совпадение (имена (boxplot (pc3, plot = FALSE) $ out), names (pc3))

(pc3 - данные)

Затем я рисую их, используя:

точки (Data.1 $ X [выбросы], Data.1 $ Y [выбросы], col = "red", cex = 3, lwd = 2)

Однако я хочу извлечь положительные выбросы в одну переменную, а отрицательные выбросы в другую переменную, чтобы отобразить их разными цветами. Как мне это сделать?

Спасибо.


person TeddyTedTed    schedule 02.05.2014    source источник
comment
У вас уже есть выбросы и данные, верно? Затем вы можете определить по данным, находятся ли выбросы выше среднего (или медианного) или ниже его, и разделить их таким образом. Обратитесь к? [ за помощью по индексации.   -  person Jota    schedule 02.05.2014
comment
Как бы я это сделал? Извините, я новичок в R.   -  person TeddyTedTed    schedule 02.05.2014
comment
Зависит от. Было бы проще дать точное решение, если бы вы предоставили примеры данных для работы (см. Как создать отличный воспроизводимый пример R). Простой способ сделать то, что я сказал с вектором, был бы: above_outliers <- outliers[outliers > mean(pc3)] для случая выбросов выше среднего.   -  person Jota    schedule 02.05.2014


Ответы (1)


Выбросы определяются boxplot как точки, которые более чем в 1,5 раза превышают межквартильный диапазон от сторон прямоугольника (75-й и 25-й процентили). Вы можете применить это определение напрямую:

iq.range <- quantile(pc3, probs=c(0.25, 0.75))
lower.bound <- iq.range[1] - 1.5*diff(iq.range)
upper.bound <- iq.range[2] + 1.5*diff(iq.range)

low.out <- pc3[pc3 < lower.bound]
high.out <- pc3[pc3 > upper.bound]

Это вычисление с нуля. Вы также можете разделить вектор, полученный из boxplot, с помощью медианы. Все, что выше, является высшей частью.

person ilir    schedule 02.05.2014
comment
Я предполагаю, что ›high.out‹ - pc3 [pc3 ‹high.bound] должен читать:› high.out ‹- pc3 [pc3‹ upper.bound] Правильно? - person TeddyTedTed; 02.05.2014
comment
@ user3596332 в последней строке была ошибка. Исправлено сейчас. Спасибо, что указали на это. - person ilir; 02.05.2014
comment
Кроме того, когда я изначально построил все выбросы, выскочили именно они: i.imgur.com/5WF8iZL.jpg, когда я построил график вашего максимума, всплыл вот этот: i.imgur.com/VzucCIU .jpg и с вашим low.out все вышло: i.imgur.com/KX64zN9 .jpg. Спасибо за помощь. Я не хочу показаться неблагодарным. Я просто пытаюсь понять это. Я новичок в R и обычно просто копирую и вставляю материал моего лектора. - person TeddyTedTed; 02.05.2014
comment
@ user3596332 вы уверены, что применяете отредактированный код, который я опубликовал? В исходном ответе было несколько опечаток. Кажется, вы вычисляете верхнюю границу, используя неправильное условие. Опубликованный мной код отлично работает с образцами данных. - person ilir; 02.05.2014