Непараметричне випробування, якщо два зразки беруть з одного розподілу


19

Я хотів би перевірити гіпотезу, що два зразки беруть із однієї сукупності, не роблячи припущень щодо розподілу зразків чи популяції. Як мені це зробити?

З Вікіпедії моє враження, що тест Mann Whitney 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 з двох зразків:

ECDF

Тут я візуально бачу три цікаві особливості. (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 може перевірити кожну з них.


Не надто дивно, що МВт не відкидає. Для однобічного тестування він перевіряє, чи Pr (a> b) <0,05, де a і b є випадковим чином обраними членами вашої групи.
mdewey

1
Гіпотеза Манна-Вітні іноді кажуть, що стосується "розташування" двох груп, або чогось уздовж систематичної стохастичної різниці. Що стосується ваших даних, обидві групи симетрично розподілені приблизно по 75, тому MW точно не повинні знаходити різниці.
Sal Mangiafico

4
Це хороший приклад плутанини, яку ми сіємо, коли нам не зрозуміло гіпотезу для тесту. На жаль, людей навчають використовувати t- test для порівняння двох груп, не думаючи, що цей тест порівнює два засоби , тоді як існує середній тест для порівняння двох медіанів , Mann-Whitney, який порівнює щось інше, кількісна регресія для порівняння інших процентилів , тести для порівняння дисперсій, Колмогоров-Смірнов для порівняння розподілів і так далі ... Ми іноді просто кажемо, що хочемо порівняти дві "популяції", не зрозумівши, яку гіпотезу ми дійсно хочемо перевірити.
Sal Mangiafico

Зважаючи на роздуми, схоже, що на сторінці Вікіпедії для тесту на MW дуже чітко викладена гіпотеза, і з мого боку було непорозуміння (необгрунтований стрибок), вважаючи, що ця гіпотеза також передбачає, що зразки походять з одного розподілу. Дійсно, проблема стає очевидною при порівнянні двох різних розподілів, симетричних навколо однієї центральної точки.
Люк Горрі

Відповіді:


17

Тест Колмогорова-Смірнова - це найпоширеніший спосіб зробити це, але є й деякі інші варіанти.

Тести базуються на емпіричних функціях кумулятивного розподілу. Основна процедура:

  • Виберіть спосіб вимірювання відстані між ECDF. Оскільки ECDF - це функції, очевидними кандидатами є норми , які вимірюють відстань у функціональних просторах. Ця відстань є нашою тестовою статистикою .Lp
  • Визначте розподіл тестової статистики під нульовою гіпотезою, що вибірки походять з одного і того ж розподілу (на щастя, люди це зробили вже на найбільш поширених відстанях!)
  • Виберіть поріг, , для своєї гіпотези та відхиліть нуль, якщо обчислена статистика випробувань знаходиться у хвостах розподілу з точки 2.α %αα%

Для тесту Колмогорова-Смирнова, тестова статистика - це максимальна відстань між двома емпіричними CDF (або, якщо ви хочете бути більш технічною нормою ). Це дуже просто реалізувати в R:L

ks.test(a,b)

Якщо значення значення менше обраного вами порогу, ми відкидаємо нульову гіпотезу про те, що зразки беруться з одного розподілу.p

Іншим варіантом є тест Крамера-фон Мізеса, який використовує квадратну норму в якості тестової статистики і реалізований в пакеті як . Тест CVM є "кращим", оскільки показник відстані враховує цілі два ECDF, а не просто вибирає найбільшу відстань.L2dgofcvm.test()

Редагувати:

Припустимо, у нас є зразки розмірів і , до яких ми хочемо застосувати тест своєї гіпотези.мнм

Щоб перетворити це на процедуру типу вибірки, ми можемо зробити наступне:

  1. Створіть зразки розмірів та із однакових розподілів. Для тесту на KS (примітно, IMO) навіть не має значення, чи змінюється розподіл при кожній ітерації, поки і залишаються однаковими.m n mнмнм
  2. Обчисліть метрику відстані для зразків. Для тесту на KS це лише макс. різниця між емпіричними CDF.
  3. Збережіть результат і поверніться до кроку 1.

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

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


Дякую! Тест Колмогорова-Смірнова дійсно відкидає нульову гіпотезу про те, що ці зразки походять із однієї сукупності. І інтуїтивно має сенс порівнювати ECDF, тому що це візуально більш-менш те, що я роблю візуально з гістограмою. Питання: Припустимо, мені потрібно було реалізувати цей тест з нуля без будь-яких інструментів, таких як R. Чи є простий метод, якого вистачить? (Можливо, на основі завантажувальної програми?) Я запитую, тому що моїм фоном є комп’ютерне програмування, і я вважаю, що методи на основі моделювання набагато простіше зрозуміти.
Люк Горрі

Ви повинні вивчити рандомізацію чи перестановку. Я віддаю перевагу цим для ненормальних тестів. Вони також відповідають ур-критеріям імітації, а не статистики
RTbecard

2
@JamesAdamCampbell Ви могли б трохи поширитись на іншу відповідь?
Буде

1
L

1
Я не бачу жодної проблеми з цим. Мені буде цікаво побачити результати, якщо ви спробуєте щось із цього матеріалу! Буде здорово, щоб побачити, чи завжди підхід CI та прямий тест на KS дають вам однакову відповідь. Я підозрюю, що вони роблять :)
Буде
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.