Як ми створимо довірчий інтервал для параметра тесту перестановки?


9

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

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

Я також читав, що часто корисно давати довірчий інтервал разом з тестом, який створюється за допомогою переустановки завантажувальної програми, а не перестановки перестановки.

Чи можете ви пояснити (або просто дати R код), як будується інтервал довіри (тобто для різниці між засобами двох зразків у наведеному вище прикладі)?

EDIT

Після деякого гугла я знайшов це цікаве читання .

Відповіді:


7

Добре використовувати перестановку перестановки. Це дійсно залежить від ряду факторів. Якщо ваші перестановки порівняно низькі, то ваш переказ довірчого інтервалу не такий великий для перестановок. Ваші перестановки знаходяться в дещо сірій зоні і, ймовірно, добре.

Єдина відмінність від попереднього коду полягає в тому, що ви генеруєте свої зразки випадковим чином, а не з перестановками. І ви б генерували їх більше, скажімо, наприклад, 1000. Отримайте різницю балів за 1000 реплік експерименту. Візьміть обрізи на середній 950 (95%). Це ваш інтервал довіри. Він падає прямо з завантажувального пристрою.

Ви вже зробили більшу частину цього у своєму прикладі. dif.treat - 462 позиції. Тому вам потрібні нижні 2,5% та верхні 2,5% відсічки (приблизно 11 предметів на кожному кінці).

Використання коду від раніше ...

y <- sort(dif.treat)
ci.lo <- y[11]
ci.hi <- y[462-11]

З іншого боку, я б сказав, що 462 трохи низький, але ви знайдете завантажувальний ряд до 10 000 виходить із оцінками, які трохи відрізняються (швидше за все, ближче до середнього).

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

diff <- function(x,i) mean(x[i[6:11]]) - mean(x[i[1:5]])
b <- boot(total, diff, R = 1000)
boot.ci(b)

Дякую. Чи добре генерувати зразки за допомогою sampleі replace=TRUE? Чи є причина використовувати такий пакет, як boot?
Джордж Донтас

Як правило, це робиться із заміною, тому ви хочете встановити це НА ПРАВИЛЬНО. Що стосується того, чому ... пакет оптимізований, тому він повинен працювати швидше .... ніколи його не приурочували. Це може бути проблемою, якщо встановити велику R. І, як бачите, код приємний і стислий. Він також має безліч функцій, які вам не вдасться легко прокати самостійно.
Джон

boot.ci повертає довірчий інтервал. Чи є якась (завантажувальна) функція, яка дає p.value? (Як відношення числа відмінностей , по крайнього заходу так само високо , як той , спостерігається, за загальною кількістю генеруються зразків)
George Dontas

Гаразд, я знайшов спосіб отримати це:sum(b$t>=b$t0)/b$R
Джордж Донтас

@ gd047: врахуйте, що це однобічне p-значення, яке ви обчислюєте.
Joris Meys

4

Як тест на перестановку - це точний тест, що дає точне p-значення. Завантажувати тест на перестановку не має сенсу.

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

Тести перестановки не слід використовувати для таких наборів даних, що ви більше не можете обчислити всі можливі перестановки. Якщо це так, використовуйте процедуру завантаження для визначення межі для тестової статистики, яку ви використовуєте. Але знову ж таки, це мало стосується довірчого інтервалу 95%.

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

x <- c(11.4,25.3,29.9,16.5,21.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)

t.sample <- t.test(x,y)$statistic
t.dist <- apply(
      replicate(1000,sample(c(x,y),11,replace=F)),2,
      function(i){t.test(i[1:5],i[6:11])$statistic})

# two sided testing
center <- mean(t.dist)
t.sample <-abs(t.sample-center)
t.dist <- abs(t.dist - center)
p.value <- sum( t.sample < t.dist ) / length(t.dist)
p.value

Враховуйте, що це двостороннє тестування працює лише для симетричних розподілів. Несиметричні розподіли, як правило, перевіряються лише односторонніми.

Редагувати:

Гаразд, я неправильно зрозумів питання. Якщо ви хочете обчислити довірчий інтервал для оцінки різниці, ви можете використовувати код, згаданий тут, для завантаження в кожному зразку. Зауважте, це необ’єктивна оцінка: загалом це дає занадто малий ІС. Також див. Наведений там приклад як причину того, що вам доведеться використовувати інший підхід для довірчого інтервалу та p-значення.


1
Чи можете ви дати пояснення, чому тести перестановки не повинні використовуватися на наборах даних, що ви не можете обчислити всі можливі перестановки?
Енді Ш

@Andy W: Спочатку визначте "тест на перестановку". для мене пермутаційні тести - це точні тести з використанням кожної можливої ​​перестановки. Це неможливо на великих наборах даних. "Приблизні тести на перестановку" насправді є методом Монте-Карло, і його слід вирішувати таким чином. Крім цього, центральна гранична теорема запевняє у більшості випадків, що припущення щодо розподілу тестової статистики виконуються при використанні великих наборів даних. У комплексному тестуванні використання тестів на перестановку на великих наборах даних робить час обчислень нестерпно довгим, не додаючи значного значення. my2cents
Joris

Я нічого не сказав, як завантажувати перестановку на тест. Я поставив це питання після прочитання останнього абзацу [РОЗДІЛ 14.5 | Короткий огляд], у пов'язаному форматі PDF.
Джордж Донтас

@ gd047 Тоді я неправильно прочитав ваше запитання. Але ви дійсно повинні дотримуватися довірчих інтервалів і p.values ​​суворо відокремленими. Інтервал довіри оцінюється на основі завантажувального завантаження в межах кожного зразка (хоча він є упередженим за визначенням), тест перестановки проводиться перестановками по всьому набору даних. Це дві абсолютно різні речі.
Йоріс Мейс

@Kevin: Код був проклятим. Прочитайте код ще раз: x[6:11]посилається на аргумент xанонімної функції в застосуванні. Можливо, заплутана, але ваша редакція дала дуже неправильні результати. Будь ласка, прокоментуйте, що ви вважаєте, що повинно бути, перш ніж редагувати код. Врятує мене відкат. Щоб уникнути подальшої плутанини, я змінив це xнаi
Joris Meys

0

З коду Joris Meys у відповідях, але з модифікацією, щоб дозволити його застосовувати в більшій кількості t han в одній ситуації:

Я спробував відредагувати інший, але закінчити не встиг, і чомусь не можу коментувати (можливо, це старе питання).

x <- c(11.4,25.3,29.9,16.5,21.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)

t.sample <- t.test(x,y)$statistic

t.dist <- apply(
          replicate(1000,sample(c(x,y),length(c(x,y)),replace=F)), 2,
          function(i){t.test(i[1:length(x)],i[length(x)+1:length(c(x,y))])$statistic})

# two sided testing
center <- mean(t.dist)
t.sample <-abs(t.sample-center)
t.dist <- abs(t.dist - center)
p.value <- sum( t.sample < t.dist ) / length(t.dist)
p.value
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.