Могу ли я использовать блочные графики также для мультимодальной дистрибуции или только для унимодальной дистрибуции?
Могу ли я использовать блочные графики также для мультимодальной дистрибуции или только для унимодальной дистрибуции?
Ответы:
Проблема в том, что обычный бокс * обычно не может указывать количество режимов. Хотя в некоторых (как правило, редких) обстоятельствах можно получить четкое указание на то, что наименьшее количество режимов превышает 1, чаще данный заданный блок-график соответствует одному или любому большему количеству режимов.
* Было предложено несколько модификаций обычных видов коробочного графика, которые делают больше, чтобы указать изменения в плотности и кулачке, которые будут использоваться для идентификации нескольких режимов, но я не думаю, что это является целью этого вопроса.
Например, хотя этот график действительно указывает на наличие как минимум двух режимов (данные были сгенерированы таким образом, чтобы их было ровно два) -
и наоборот, у этого есть два очень ясных способа в его распределении, но вы просто не можете отличить это от boxplot вообще:
Действительно, на рисунке 1 здесь (который, я считаю, является рабочим документом, опубликованным позже в [1]) показаны четыре разных набора данных с одним и тем же графическим изображением.
У меня нет этих данных в руках, но создание подобного набора данных является тривиальным делом - как указано в ссылке выше, относящейся к сводке из пяти чисел, нам нужно только ограничить наши распределения, чтобы они лежали в прямоугольных прямоугольниках, что сводка из пяти чисел ограничивает нас.
Вот код R, который сгенерирует данные, аналогичные приведенным в статье:
x1 = qnorm(ppoints(1:100,a=-.072377))
x1 = x1/diff(range(x1))*18+10
b = fivenum(x1) # all of the data has this five number summary
x2 = qnorm(ppoints(1:48));x2=x2/diff(range(x2))*.6
x2 = c(b[1],x2+b[2],.31+b[2],b[4]-.31,x2+b[4],b[5])
d = .1183675; x3 = ((0:34)-34/2)/34*(9-d)+(5.5-d/2)
x3 = c(x3,rep(9.5,15),rep(10.5,15),20-x3)
x4 = c(1,rep(b[2],24),(0:49)/49*(b[4]-b[2])+b[2],(0:24)/24*(b[5]-b[4])+b[4])
Вот изображение, аналогичное приведенному в статье, приведенных выше данных (за исключением того, что здесь я показываю все четыре коробочных графика):
Однако будьте осторожны - у гистограмм тоже могут быть проблемы ; действительно, мы видим одну из ее проблем здесь, потому что распределение в третьей «остроконечной» гистограмме фактически отчетливо бимодально; ширина ячейки гистограммы просто слишком велика, чтобы показать ее. Кроме того, как отмечает Ник Кокс в комментариях, оценки плотности ядра также могут влиять на впечатление от количества мод (иногда размывающих моды ... или иногда предлагающих небольшие моды, которых нет в исходном распределении). Нужно позаботиться об интерпретации многих распространенных проявлений.
Существуют модификации коробочного графика, которые могут лучше указывать на мультимодальность (вазы, скрипки и бобовые, среди множества других). В некоторых ситуациях они могут быть полезны, но если я заинтересован в поиске режимов, я обычно смотрю на другой вид отображения.
x4
[1]: Choonpradub, C. & McNeil, D. (2005),
«Можно ли улучшить коробочный график?»
Songklanakarin J. Sci. Technol. , 27 : 3, с. 649-657.
http://www.jourlib.org/paper/2081800
pdf
Существует несколько вариантов обнаружения мультимодальности с помощью R. Данные для приведенных ниже графиков были сгенерированы в трех режимах (-3,0,1). Бокплот явно превосходит остальные (сюжет скрипки выглядит так, как будто он имеет разные настройки плотности ядра по умолчанию), но ни один из них не различает режимы 0 и 1. Есть действительно немного причин, чтобы использовать boxplots больше в компьютерном веке. Зачем выбрасывать информацию?
dat <- c(rnorm(500, -3, 1), rnorm(200, 0, 1), rnorm(300, 1, 1))
par(mfrow=c(2, 2))
boxplot(dat, horizontal=TRUE, main="Boxplot")
require(beanplot)
beanplot(dat, horizontal=TRUE, main="Beanplot")
require(viopoints)
viopoints(dat, horizontal=TRUE, main="Viopoints")
require(vioplot)
vioplot(dat, horizontal=TRUE)
title("Violin Plot")