Постройте хвосты распределений

У меня есть два набора данных 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, чем для единицы. Какие статистические данные можно сравнить, кроме спреда / квантилей, чтобы показать различия?

Знает ли кто-нибудь какие-либо методы, статистические тесты или методы визуализации, особенно для того, чтобы показать различия в хвостах распределения (более высокие хвосты, более высокие экстремумы).

Это сообщение в блоге появилось недавно: johndcook.com/blog/2018/04/23/obesity-index Оно касается метрики толстых хвостов.

Edward Carney 02.05.2018 16:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
685
1

Ответы 1

Вы можете показать, что хвосты на самом деле разные, построив квантили для каждой выборки (см. Пример ниже).

Что касается проверки того, взяты ли образцы из нормального распределения, вы можете проверить отклонения от нормального с помощью теста Андерсона-Дарлинга:

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()

Другие вопросы по теме