Сюжет скрипки: как определяется соседний диапазон значений и почему он отличается от боксового участка?
Теоретически, скрипка с пакетом vioplot представляет собой функцию boxplot + плотность.
В "части бокса",
черный ящик соответствует IQR (действительно, см. ниже), и
средняя линия должна соответствовать тому же диапазону (смежные значения, по умолчанию 1,5 IQR), но это не так (см. ниже). Кто-нибудь может объяснить, почему они разные?
require("vioplot") a = rnorm(100) range (a) a = c(a,2,8,2.9,3,4, -3, -5) # add some outliers par ( mfrow = c(1,2)) boxplot(a, range=1.5) vioplot(a, range=1.5 )
Выгода от выше:
Hintze, JL и RD Nelson (1998). Сюжеты для скрипки: прямоугольник с плотностью синергизма. Американский статистик, 52 (2): 181-4.
1 ответ
Позвольте мне проиллюстрировать это на простом примере:
b <- c(1:10, 20)
par(mfrow = c(1,2))
boxplot(b, range=1.5)
vioplot(b, range=1.5 )
Определение бокса R: (позаимствовано из справки ggplot по теме):
Верхний усик простирается от шарнира до самого высокого значения, которое находится в пределах 1,5 * IQR от шарнира, где IQR - межквартильный диапазон или расстояние между первым и третьим квартилями.
Просматривая исходный код vioplot, мы видим upper[i] <- min(q3[i] + range*iqd, data.max)
,
Поэтому давайте попробуем воспроизвести значение верхнего усика:
# vioplot draws
quantile(b, 0.75) + 1.5 * IQR(b)
# 16
# boxplot draws
max(b[b <= quantile(b, 0.75) + 1.5 * IQR(b)])
# 10