P-значення, що дорівнює 0 в перестановковому тесті


15

У мене є два набори даних, і я хотів би знати, чи вони значно відрізняються чи ні (це походить від " Дві групи значно відрізняються? Тест для використання ").

Я вирішив використати тест на перестановку, зробивши наступне в R:

permutation.test <- function(coding, lncrna) {
    coding <- coding[,1] # dataset1
    lncrna <- lncrna[,1] # dataset2

    ### Under null hyphotesis, both datasets would be the same. So:
    d <- c(coding, lncrna)

    # Observed difference
    diff.observed = mean(coding) - mean(lncrna)
    number_of_permutations = 5000
    diff.random = NULL

    for (i in 1:number_of_permutations) {
        # Sample from the combined dataset
        a.random = sample (d, length(coding), TRUE)
        b.random = sample (d, length(lncrna), TRUE)
        # Null (permuated) difference
        diff.random[i] = mean(b.random) - mean(a.random)
    }

    # P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
    pvalue = sum(abs(diff.random) >= abs(diff.observed)) / number_of_permutations
    pvalue
}

Тим не менш, значення p не повинні бути 0 відповідно до цього документу: http://www.statsci.org/smyth/pubs/permp.pdf

Що ти мені рекомендуєш робити? Чи є таким способом обчислення р-значення:

pvalue = sum(abs(diff.random) >= abs(diff.observed)) / number_of_permutations

хороший спосіб? Або краще робити наступне?

pvalue = sum(abs(diff.random) >= abs(diff.observed)) + 1 / number_of_permutations + 1

(1) Заключний рядок у питанні помилковий, оскільки він не містить дужок, необхідних для виконання запланованого обчислення. (Гарантоване отримання результатів більше , що неможливо для будь-якого p-значення.) (2) Ви насправді не проводите тест на перестановку: два зразки і рідко містять випадковий розділ даних, але, як правило, будуть збігатися. істотно. Натомість обчислюйте як доповнення всередині союзу та . 1a.randomb.randomb.randoma.randomcodinglncrna
whuber

Оскільки р-значення - це набір значень, щонайменше настільки ж екстремальний, як і спостережуване, якщо оцінювати розподіл перестановки, спостережувана статистика міститься у підрахунку "перестановок". Роблячи рандомізацію, звичайно зараховувати спостережувану статистику серед розглянутої статистики перестановки (з аналогічних причин).
Glen_b -Встановіть Моніку

Відповіді:


15

Обговорення

Тест перестановки генерує всі відповідні перестановки набору даних, обчислює призначену статистику тесту для кожної такої перестановки і оцінює фактичну статистику тесту в контексті отриманого перестановкою розподілу статистики. Поширений спосіб його оцінювати - повідомляти про частку статистичних даних, які є (в деякому сенсі) "як або більш крайніми", ніж фактичні статистичні. Це часто називають "р-значенням".

Оскільки фактичний набір даних є однією з таких перестановок, його статистика обов'язково буде серед тих, що виявляються в рамках розподілу перестановок. Тому значення р ніколи не може бути нульовим.

Якщо набір даних дуже малий (як правило, менше приблизно 20-30 загальних чисел) або тестова статистика має особливо гарну математичну форму, неможливо здійснити генерацію всіх перестановок. (Приклад, коли генеруються всі перестановки, з’являється на тесті перестановки в Р. ). Тому комп'ютерні реалізації тестів на перестановку зазвичай вибирають з розподілу перестановки. Вони роблять це шляхом створення деяких незалежних випадкових перестановок і сподіваються, що результати є репрезентативним зразком усіх перестановок.

Тому будь-які числа (наприклад, "p-значення"), отримані з такого зразка, є лише оцінниками властивостей розподілу перестановки. Цілком можливо - і часто трапляється, коли ефекти великі - оцінене значення р дорівнює нулю. У цьому немає нічого поганого, але це негайно ставить перед цим занедбане питання про те, наскільки може оцінюване значення р відрізнятися від правильного? Оскільки розподіл вибірки пропорції (наприклад, оціночне р-значення) є двочленним, цю невизначеність можна вирішити з довірчим інтервалом двочленів .


Архітектура

Добре побудована реалізація буде уважно стежити за обговоренням у всіх аспектах. Почнеться з звичайної процедури обчислення статистики тесту, оскільки для порівняння засобів двох груп:

diff.means <- function(control, treatment) mean(treatment) - mean(control)

Напишіть іншу процедуру для генерації випадкової перестановки набору даних та застосуйте тестову статистику. Інтерфейс до цього дозволяє абоненту надати тестову статистику як аргумент. Він порівняє перші mелементи масиву (імовірно, що це референтна група) з рештою елементами (групою "обробка").

f <- function(..., sample, m, statistic) {
  s <- sample(sample)
  statistic(s[1:m], s[-(1:m)])
}

Перевірка перестановки проводиться спочатку шляхом пошуку статистичних даних фактичних даних (передбачається, що вони зберігаються у двох масивах controlі treatment), а потім пошуку статистики для багатьох незалежних випадкових перестановок:

z <- stat(control, treatment) # Test statistic for the observed data
sim<- sapply(1:1e4, f, sample=c(control,treatment), m=length(control), statistic=diff.means)

Тепер обчисліть біноміальну оцінку р-значення та довірчий інтервал для нього. Один метод використовує вбудовану binconfпроцедуру в HMiscпакет:

require(Hmisc)                                    # Exports `binconf`
k <- sum(abs(sim) >= abs(z))                      # Two-tailed test
zapsmall(binconf(k, length(sim), method='exact')) # 95% CI by default

Непогано порівнювати результат з іншим тестом, навіть якщо це, як відомо, не зовсім застосовне: принаймні, ви можете отримати на порядок відчуття того, де повинен лежати результат. У цьому прикладі (зіставлення засобів) t-тест Стьюдента як правило дає хороший результат:

t.test(treatment, control)

Ця архітектура проілюстрована в більш складній ситуації, з робочим Rкодом, при тесті, чи змінні дотримуються однакового розподілу .


Приклад

100201.5

set.seed(17)
control <- rnorm(10)
treatment <- rnorm(20, 1.5)

Після використання попереднього коду для проведення тесту на перестановку я побудував вибірку розподілу перестановки разом з вертикальною червоною лінією для позначення фактичної статистики:

h <- hist(c(z, sim), plot=FALSE)
hist(sim, breaks=h$breaks)
abline(v = stat(control, treatment), col="Red")

Малюнок

В результаті розрахунку граничного рівня довіри в двочлен

 PointEst Lower        Upper
        0     0 0.0003688199

00,000373.16e-050,000370,000370,050,010,001


Коментарі

кN к/N(к+1)/(N+1)N

10102=1000,0000051.611.7частин на мільйон: трохи менше, ніж повідомляв тест Student. Хоча дані генерувались із звичайними генераторами випадкових чисел, що могло б виправдати використання t-тесту Стьюдента, результати перестановки перестановки відрізняються від результатів тесту Стьюдента, оскільки розподіли в межах кожної групи спостережень не є абсолютно нормальними.


Процитований вище документ Smyth & Phipson чітко показує, чому k / N є поганим вибором для оцінювача p-значення. У двох словах, для відповідних рівнів значущості, таких як альфа = 0,05, P ((k / N) <альфа | H0) може бути на диво більшим, ніж альфа. Це означає, що випадковий тест на перестановку, використовуючи k / N як його оцінювач p-значення, та 0,05 як його поріг відхилення, буде відхиляти нульову гіпотезу більше ніж у 5% разів! Нульове значення p - крайній випадок цієї проблеми - з критерієм альфа = 0 ми очікуємо, що ніколи не відкинемо нуль, але b / m може дорівнювати нулю під нулем, що призводить до помилкового відхилення.
Trisoloriansunscreen

1
@Tal "Поганий вибір" для певної мети. Що відрізняє нас як статистиків від інших - це наше розуміння ролі мінливості в аналізі даних та прийнятті рішень, а також наша здатність відповідним чином оцінити цю мінливість. Саме такий підхід (і неявно обстоюється) в моїй відповіді тут. Коли вона проводиться, немає такої проблеми, як ви описуєте, тому що користувач процедури перестановки змушений зрозуміти її обмеження та її сильні сторони і матиме свободу діяти відповідно до своїх цілей.
whuber

13

БМБ+1М+1

(B - кількість випадкових перестановок, в яких отримана статистика більша або дорівнює спостережуваній, а M - загальна кількість вибіркових випадкових перестановок).

БМ


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