ANOVA на біноміальних даних


32

Я аналізую експериментальний набір даних. Дані складаються з парного вектора типу лікування та біноміального результату:

Treatment    Outcome
A            1
B            0
C            0
D            1
A            0
...

У стовпці результатів 1 позначає успіх, а 0 позначає невдачу. Я хотів би з’ясувати, чи суттєво варіює лікування результат. Існує 4 різних методики лікування, коли кожен експеримент повторювався у великій кількості разів (2000 для кожного лікування).

Моє запитання полягає в тому, чи можу я проаналізувати бінарний результат за допомогою ANOVA? Або я повинен використовувати тест-квадрат для перевірки біноміальних даних? Здається, хі-квадрат передбачає, що пропорція буде рівномірно розділена, що не так. Іншою ідеєю було б узагальнення даних, використовуючи пропорцію успішності проти невдач для кожного лікування, а потім використовувати тест на пропорцію.

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

Відповіді:


18

Ні для ANOVA, яка передбачає нормально розподілену змінну результату (серед іншого). Для перегляду є перетворення "старої школи", але я вважаю за краще логістичну регресію (еквівалентну квадрату чі, коли є лише одна незалежна змінна, як у вашому випадку). Перевага використання логістичної регресії над тестуванням квадратних чи полягає в тому, що ви можете легко використовувати лінійний контраст для порівняння конкретних рівнів лікування, якщо знайдете значний результат із загальним тестом (тип 3). Наприклад, A проти B, B проти C і т.д.

Оновлення додано для ясності:

Беручи дані під рукою (набір даних post doc від Елісон ) та використовуючи змінні цити, наступним чином, це було моє значення:

postdocData$citsBin <- ifelse(postdocData$cits>2, 3, postdocData$cits)
postdocData$citsBin <- as.factor(postdocData$citsBin)
ordered(postdocData$citsBin, levels=c("0", "1", "2", "3"))
contrasts(postdocData$citsBin) <- contr.treatment(4, base=4) # set 4th level as reference
contrasts(postdocData$citsBin)
     #   1 2 3
     # 0 1 0 0
     # 1 0 1 0
     # 2 0 0 1
     # 3 0 0 0

# fit the univariate logistic regression model
model.1 <- glm(pdoc~citsBin, data=postdocData, family=binomial(link="logit"))

library(car) # John Fox package
car::Anova(model.1, test="LR", type="III") # type 3 analysis (SAS verbiage)
     # Response: pdoc
     #          LR Chisq Df Pr(>Chisq)
     # citsBin   1.7977  3     0.6154

chisq.test(table(postdocData$citsBin, postdocData$pdoc)) 
     # X-squared = 1.7957, df = 3, p-value = 0.6159

# then can test differences in levels, such as: contrast cits=0 minus cits=1 = 0
# Ho: Beta_1 - Beta_2 = 0
cVec <- c(0,1,-1,0)
car::linearHypothesis(model.1, cVec, verbose=TRUE) 

1
@ user2040. Я не розумію, як би ви зробили тест "типу 3"? Це щось з SAS? (вибачте, мої знання про SAS дуже обмежені). Я б зробив логістичну регресію, як ви запропонували, але з двома фіктивними змінними. Крім того, враховуючи, що я правильно розумію, якщо ви робите логістичну регресію, тестування, якщо деякі або всі коефіцієнти дорівнюють 0, робиться за відхиленням (або коефіцієнтом ймовірності), і це асимптотично Chi-Sq (не обов'язково з df = 1)
suncoolsu

1
@suncoolsu: Так, практично кажучи, ви повинні зробити той самий висновок. Я не повинен був говорити "еквівалент" (я працюю з великими даними, щоб вони закінчилися однаковими). Я додав у відповідь якийсь код, щоб допомогти уточнити.
B_Miner

8

Можливо, деякі вважають це старомодним, але якщо ви хочете лише перевірити нульову гіпотезу всіх груп, що мають однакову ймовірність успіху, то ви можете визначити як кількість успіхів у групі , як кількість випробувань у групі , розрахункове ймовірність у групі буде , а потім використовувати дисперсію-стабілізуючу трансформацію для двочлена, що є Такий підхід був (часом ) досить добре для Фішера, тому може бути корисним і сьогодні!Xkknkkkp^k=Xk/nk

g(p)=arcsinp

Однак деякі сучасні автори досить скептично ставляться до перетворення дуги, див., Наприклад, http://www.mun.ca/biology/dschneider/b7932/B7932Final10Dec2010.pdf Але цих авторів хвилюють такі проблеми, як прогнозування, де вони показують арцин може призвести до проблем. Якщо ви переймаєтесь лише тестуванням гіпотез, це повинно бути нормально. Більш сучасний підхід може використовувати логістичну регресію.


4
(+1) ... якщо всі групи однакові, немає. спостереження.
Scortchi

1
Або можна використовувати ваги на основі кількості спостережень.
kjetil b halvorsen

3

Я хотів би відрізнятися від того, що ви думаєте про тест Chi-Sq. Він застосований, навіть якщо дані не є двочленними. Він заснований на асимптотичній нормальності молока (у більшості випадків).

Я б зробив логістичну регресію так:

logπ^1π^=β0+β1×D1+β2×D2

де

D1 і - фіктивні змінні. D2D1=D2=0A,D1=1,D2=0B,D1=1D2=1C

Ho:β0=β1=β2=0

Є еквівалент ANOVA за наявності чи ні.

Ho:β0=0

Чи є тест - це має певний ефект.

Ho:β1β0=0

Це тест В має деякий ефект.

Ho:β2(β0+β12)=0

Чи є тест С має деякий ефект.

Тепер ви можете робити інші контрасти, щоб знайти наше те, що вас цікавить. Це все-таки тест на чи-квадрат, але з різним ступенем свободи (3, 1, 1 і 1 відповідно)


Мені ще потрібно думати про контраст. Я виправлю це кожного разу, коли знайду час. Вибачте з цього приводу
suncoolsu

-3

Я думаю, ви праві, що ANOVA не слід використовувати для аналізу біноміальної залежної змінної. Багато людей використовують це для порівняння засобів змінної бінарної відповіді (0 1), але її не слід використовувати, оскільки це серйозно порушує припущення про нормальність та рівність дисперсії. Тести на Chi-Square або Логістичний регрес найкраще підходять для цих ситуацій.


Те саме, що відповідь тут .
Scortchi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.