Обговорення
Тест перестановки генерує всі відповідні перестановки набору даних, обчислює призначену статистику тесту для кожної такої перестановки і оцінює фактичну статистику тесту в контексті отриманого перестановкою розподілу статистики. Поширений спосіб його оцінювати - повідомляти про частку статистичних даних, які є (в деякому сенсі) "як або більш крайніми", ніж фактичні статистичні. Це часто називають "р-значенням".
Оскільки фактичний набір даних є однією з таких перестановок, його статистика обов'язково буде серед тих, що виявляються в рамках розподілу перестановок. Тому значення р ніколи не може бути нульовим.
Якщо набір даних дуже малий (як правило, менше приблизно 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-05
0,000370,000370,050,010,001
Коментарі
кN к / н( k + 1 ) / ( N+ 1 )N
10102= 1000,0000051.611.7частин на мільйон: трохи менше, ніж повідомляв тест Student. Хоча дані генерувались із звичайними генераторами випадкових чисел, що могло б виправдати використання t-тесту Стьюдента, результати перестановки перестановки відрізняються від результатів тесту Стьюдента, оскільки розподіли в межах кожної групи спостережень не є абсолютно нормальними.
a.random
b.random
b.random
a.random
coding
lncrna