Боксплот против FiveNum: разные результаты? - PullRequest
2 голосов
/ 11 марта 2020

Я получил следующую картинку, используя:

boxplot(series,
    col = "orange",
    border = "brown")

enter image description here Код:

boxplot(d$y,
        col = "orange",
        border = "brown")
abline(h = min(d$y), col = "Blue")
abline(h = max(d$y), col = "Yellow")
abline(h = median(d$y), col = "Green")
abline(h = quantile(d$y, c(0.25, 0.75)), col = "Red")

производит вместо изображения ниже enter image description here Я хотел посмотреть, если на блокпосте указана сводка из пяти чисел. Синие, зеленые и красные линии обозначают минимум, нижний шарнир, медиану, верхний шарнир, как и ожидалось, но я не уверен насчет положения желтой линии. Желтая линия должна быть на верхней части усов ... Не так ли?

Ответы [ 2 ]

3 голосов
/ 11 марта 2020

Функция fivenum(x) возвращает минимум, нижний шарнир (квантиль 25%), медиану, верхний шарнир (квантиль 75%) и максимум для списка значений. Однако boxplot(x)$stats возвращает нижний усик, нижний шарнир (квантиль 25%), медиану, верхний шарнир (квантиль 75%) и верхний усик. Значения Whisker обычно рассчитываются только для блочных графиков и по умолчанию являются наиболее экстремальными точками данных, которые не более чем в 1,5 раза превышают межквартильный диапазон от верхнего и нижнего квартилей. Они могут совпадать или не совпадать со значениями mix и max.

Если вы построите желтую линию на максимальном значении, вы можете ожидать, что go будет отображено на самом высоком значении. Есть точки данных, расположенные за пределами ваших усов.

2 голосов
/ 11 марта 2020

boxplot по умолчанию удаляет выбросы. Иногда эти max и min могут не входить в диапазон, обозначенный усами (см. здесь ).

set.seed(42)
x = rnorm(200) * 10
f = fivenum(x)
b = boxplot(x)

abline(h = b$stats)
abline(h = b$out, col = "red")  #Outliers

Вы можете извлечь значения, аналогичные fivenum с boxplot

identical(f, c(min(b$out, b$stats[1]),
  b$stats[2:4],
  max(b$stats[5], b$out)))
#[1] TRUE
...