У меня есть два набора данных var1 и var2. Я хочу сравнить два дистрибутива.
libary(ggplot2)
library(reshape)
set.seed(101)
var1 = rnorm(1000, 0.5)
var2 = rnorm(100000,0.5)
combine = melt(data.frame("var1" = var1,"var2"= var2))
ggplot(data = combine) + geom_density(aes(x = value, color = variable), alpha = 0.2)
Это приводит к графику плотности распределения, который выглядит очень похожим (за исключением нескольких изгибов в средней части), однако я хочу показать, что хвосты распределения не совпадают. Разброс больше для переменной 2, чем для единицы. Какие статистические данные можно сравнить, кроме спреда / квантилей, чтобы показать различия?
Знает ли кто-нибудь какие-либо методы, статистические тесты или методы визуализации, особенно для того, чтобы показать различия в хвостах распределения (более высокие хвосты, более высокие экстремумы).
Вы можете показать, что хвосты на самом деле разные, построив квантили для каждой выборки (см. Пример ниже).
Что касается проверки того, взяты ли образцы из нормального распределения, вы можете проверить отклонения от нормального с помощью теста Андерсона-Дарлинга:
library(goftest)
ad.test(var1, "pnorm", mean=0.5)
ad.test(var2, "pnorm", mean=0.5)
Вы также можете проверить различия в эксцессе (насколько пиковыми являются распределения) с помощью теста Анскомба, чтобы увидеть, различаются ли хвосты статистически значимо:
library(moments)
anscombe.test(var1)
anscombe.test(var2)
Ни один из этих тестов не предполагает статистически значимых отклонений от нормы, что имеет смысл, поскольку обе выборки относительно велики и фактически были взяты из одного и того же распределения.
Эти ссылки могут оказаться полезными при тестировании различий в хвостах дистрибутива: здесь и здесь.
Что касается визуализации распределений, построение квантилей может облегчить распознавание различий в хвостах:
library(ggpubr)
prob = seq(0,1,0.0001)
dat = combine %>% group_by(variable) %>%
summarise(value = list(quantile(value, probs=prob)),
Percentile = list(prob*100))
p = dat %>% unnest %>%
ggplot(aes(Percentile, value, colour=variable)) +
geom_line() +
theme_bw()
ggarrange(p + scale_x_continuous(limits=c(0,10), breaks=0:100),
p + scale_x_continuous(limits=c(90,100), breaks=0:100),
ncol=2, common.legend=TRUE)
Другой вариант - эмпирическое кумулятивное распределение плотности:
ggplot(combine, aes(value, colour=variable)) +
stat_ecdf() +
theme_bw()
Это сообщение в блоге появилось недавно: johndcook.com/blog/2018/04/23/obesity-index Оно касается метрики толстых хвостов.