Непараметрический тест, если два образца взяты из одного распределения

19

Я хотел бы проверить гипотезу о том, что две выборки взяты из одной и той же совокупности, не делая никаких предположений о распределении выборок или совокупности. Как мне это сделать?

Из Википедии у меня сложилось впечатление, что U-критерий Манна-Уитни должен быть подходящим, но на практике он мне не подходит.

Для конкретности я создал набор данных с двумя выборками (a, b), которые являются большими (n = 10000) и взяты из двух популяций, которые не являются нормальными (бимодальные), похожи (то же самое среднее), но различны (стандартное отклонение вокруг «горбов».) Я ищу тест, который распознает, что эти образцы не из одной популяции.

Вид гистограммы:

бимодальные образцы

Код R:

a <- tibble(group = "a",
            n = c(rnorm(1e4, mean=50, sd=10),
                  rnorm(1e4, mean=100, sd=10)))
b <- tibble(group = "b",
            n = c(rnorm(1e4, mean=50, sd=3),
                  rnorm(1e4, mean=100, sd=3)))
ggplot(rbind(a,b), aes(x=n, fill=group)) +
  geom_histogram(position='dodge', bins=100)

Вот тест Манна Уитни, который на удивление (?) Не смог отвергнуть нулевую гипотезу о том, что выборки относятся к одной популяции:

> wilcox.test(n ~ group, rbind(a,b))

        Wilcoxon rank sum test with continuity correction

data:  n by group
W = 199990000, p-value = 0.9932
alternative hypothesis: true location shift is not equal to 0

Помогите! Как мне обновить код, чтобы обнаружить разные дистрибутивы? (Я бы особенно хотел метод, основанный на общей рандомизации / повторной выборке, если таковой имеется.)

РЕДАКТИРОВАТЬ:

Спасибо всем за ответы! Я с волнением узнаю больше о Колмогорове-Смирнове, который кажется очень подходящим для моих целей.

Я понимаю, что тест KS сравнивает эти ECDF двух образцов:

ECDFs

Здесь я вижу наглядно три интересные особенности. (1) Образцы из разных распределений. (2) A явно выше B в определенных точках. (3) A явно ниже B в некоторых других точках.

Кажется, что тест KS может проверить гипотезу каждой из этих функций:

> ks.test(a$n, b$n)

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D = 0.1364, p-value < 2.2e-16
alternative hypothesis: two-sided

> ks.test(a$n, b$n, alternative="greater")

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D^+ = 0.1364, p-value < 2.2e-16
alternative hypothesis: the CDF of x lies above that of y

> ks.test(a$n, b$n, alternative="less")

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D^- = 0.1322, p-value < 2.2e-16
alternative hypothesis: the CDF of x lies below that of y

Это действительно здорово! У меня есть практический интерес к каждой из этих функций, и поэтому здорово, что тест KS может проверить каждую из них.

Люк Горри
источник
Не слишком удивительно, что MW не отвергает. Для одностороннего теста он проверяет, является ли Pr (a> b) <0,05, где a и b являются случайно выбранными членами вашей группы населения.
17
1
Иногда говорят, что гипотеза Манна-Уитни касается «местоположения» двух групп или что-то вроде систематического стохастического различия. В случае ваших данных, обе группы симметрично распределены вокруг 75, поэтому MW определенно не должно найти разницы.
Сал Мангиафико
4
Это хороший пример неразберихи, которую мы сеем, когда нам не ясно о гипотезе теста. К сожалению, людей учат использовать t- тест для сравнения двух групп, даже не задумываясь о том, что этот тест сравнивает два средних , тогда как существует медианный тест для сравнения двух медиан , Манн-Уитни, который сравнивает что-то другое, квантильную регрессию для сравнения других процентилей Тесты для сравнения дисперсий, Колмогоров-Смирнов для сравнения распределений и т. д. Иногда мы просто говорим, что хотим сравнить две «популяции», не зная, какую гипотезу мы действительно хотим проверить.
Sal Mangiafico
Размышляя, кажется, что на странице Википедии для теста MW очень четко изложена гипотеза, и с моей стороны было недоразумением (необоснованным скачком) думать, что эта гипотеза также подразумевает, что выборки получены из одного и того же распределения. Действительно, проблема становится очевидной при сравнении двух разных распределений, симметричных относительно одной и той же центральной точки.
Люк Горри

Ответы:

17

Тест Колмогорова-Смирнова является наиболее распространенным способом сделать это, но есть и другие варианты.

Тесты основаны на эмпирических кумулятивных функциях распределения. Основная процедура:

  • Lp .
  • Выясните распределение тестовой статистики при нулевой гипотезе о том, что выборки получены из одного и того же распределения (к счастью, люди уже сделали это для самых распространенных расстояний!)
  • αα%

L

ks.test(a,b)

p

L2dgofcvm.test()

РЕДАКТИРОВАТЬ:

nm

Чтобы превратить это в процедуру типа выборки, мы можем сделать следующее:

  1. nmnm
  2. Рассчитайте вашу метрику расстояния для образцов. Для теста KS это только макс. Разница между эмпирическими CDF.
  3. Сохраните результат и вернитесь к шагу 1.

В конце концов вы соберете много выборок из распределения статистики теста в соответствии с нулевой гипотезой, чьи квантили вы можете использовать для проведения теста вашей гипотезы на любом уровне значимости, который вы хотите. Для статистики теста KS это распределение называется распределением Колмогорова.

Обратите внимание, что для теста KS это просто трата вычислительных усилий, потому что квантили очень просто охарактеризовать теоретически, но процедура обычно применима к любому тесту гипотезы.

Будет
источник
Спасибо! Критерий Колмогорова-Смирнова действительно отвергает нулевую гипотезу о том, что эти выборки принадлежат к одной популяции. И интуитивно имеет смысл сравнивать ECDF, потому что это более или менее то, что я делаю визуально с гистограммой. Вопрос: Предположим, что мне нужно было реализовать этот тест с нуля без каких-либо инструментов, таких как R. Есть ли простой метод, который будет достаточно? (Возможно, основанный на начальной загрузке?) Я спрашиваю, потому что мой опыт - компьютерное программирование, и я считаю, что методы, основанные на моделировании, намного легче понять.
Люк Горри
Вы должны посмотреть на рандомизацию или перестановки. Я предпочитаю это для нестандартных тестов. Они также соответствуют вашим критериям симуляции, а не статистики
RTbecard
2
@JamesAdamCampbell не могли бы вы рассказать об этом немного в другом ответе?
Будет
1
L
1
Я не вижу никаких проблем с этим. Мне было бы интересно увидеть результаты, если вы попробуете кое-что из этого! Было бы здорово увидеть, всегда ли один и тот же ответ дает подход CI и тест KS. Я подозреваю, что они делают :)
Уилл