ANOVA für Binomialdaten


32

Ich analysiere einen experimentellen Datensatz. Die Daten bestehen aus einem gepaarten Vektor des Behandlungstyps und einem binomischen Ergebnis:

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

In der Ergebnisspalte bedeutet 1 Erfolg und 0 Misserfolg. Ich möchte herausfinden, ob die Behandlung das Ergebnis erheblich variiert. Es gibt 4 verschiedene Behandlungen, wobei jedes Experiment viele Male wiederholt wird (2000 für jede Behandlung).

Meine Frage ist, kann ich das binäre Ergebnis mit ANOVA analysieren? Oder sollte ich einen Chi-Quadrat-Test verwenden, um die Binomialdaten zu überprüfen? Es scheint, als würde das Chi-Quadrat davon ausgehen, dass der Anteil gleichmäßig aufgeteilt wird, was nicht der Fall ist. Eine andere Idee wäre, die Daten anhand des Verhältnisses von Erfolgen zu Fehlern für jede Behandlung zusammenzufassen und anschließend einen Verhältnis-Test durchzuführen.

Ich bin gespannt auf Ihre Empfehlungen für Tests, die für diese Art von binomischen Erfolgs- / Misserfolgsexperimenten sinnvoll sind.

Antworten:


18

Nein zu ANOVA, die (unter anderem) eine normalverteilte Ergebnisvariable annimmt. Es sind Transformationen der "alten Schule" zu berücksichtigen, aber ich würde logistische Regression vorziehen (entspricht einem Chi-Quadrat, wenn es nur eine unabhängige Variable gibt, wie in Ihrem Fall). Der Vorteil der logistischen Regression gegenüber einem Chi-Quadrat-Test besteht darin, dass Sie leicht einen linearen Kontrast verwenden können, um bestimmte Ebenen der Behandlung zu vergleichen, wenn Sie ein signifikantes Ergebnis für den Gesamttest finden (Typ 3). Zum Beispiel A gegen B, B gegen C usw.

Update zur Verdeutlichung hinzugefügt:

Ich habe Daten zur Hand genommen (den Post-Doc-Datensatz von Allison ) und die Variablen cits wie folgt verwendet:

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. Ich verstehe nicht, wie Sie den "Typ 3" -Test durchführen würden. Hat es etwas mit SAS zu tun? (Entschuldigung, meine SAS-Kenntnisse sind sehr begrenzt). Ich hätte eine logistische Regression durchgeführt, wie Sie vorgeschlagen haben, aber mit 2 Dummy-Variablen. Wenn Sie eine logistische Regression durchführen, wird der Test, ob einige oder alle Koeffizienten 0 sind, nach Abweichung (oder Wahrscheinlichkeitsverhältnis) durchgeführt und ist asymptotisch Chi-Sq (nicht unbedingt mit df = 1)
suncoolsu

1
@suncoolsu: Ja, praktisch sollte man die gleiche Schlussfolgerung ziehen. Ich hätte nicht "Äquivalent" sagen sollen (ich arbeite mit Big Data, damit sie am Ende gleich sind). Ich habe der Antwort einen Code hinzugefügt, um dies zu verdeutlichen.
B_Miner

8

Xkknkkkp^k=Xk/nk

G(p)=Arcsinp

Allerdings sind einige moderne Autoren recht skeptisch der Arcussinus - Transformation, siehe zum Beispiel http://www.mun.ca/biology/dschneider/b7932/B7932Final10Dec2010.pdf Aber diese Autoren sind mit Problemen wie Vorhersage betrifft, wo sie zeigen die Arcussinus kann zu Problemen führen. Wenn Sie sich nur mit Hypothesentests befassen, sollte dies in Ordnung sein. Ein moderner Ansatz könnte eine logistische Regression verwenden.


4
(+1) ... wenn alle Gruppen die gleiche Nr. Haben. Beobachtungen.
Scortchi

1
Oder man kann Gewichte verwenden, die auf der Anzahl der Beobachtungen basieren.
kjetil b halvorsen

3

Ich möchte mich von Ihrer Meinung zum Chi-Sq-Test unterscheiden. Dies gilt auch dann, wenn die Daten nicht binomisch sind. Es basiert auf der asymptotischen Normalität von mle (in den meisten Fällen).

Ich würde eine logistische Regression wie folgt durchführen:

Logπ^1-π^=β0+β1×D1+β2×D2

woher

D1D2D1=D2=0EIN,D1=1,D2=0B,D1=1D2=1C

HO:β0=β1=β2=0

Ist die ANOVA gleichwertig, wenn eine Beziehung besteht oder nicht?

HO:β0=0

Ist der Test ist ein gewisser Effekt.

HO:β1-β0=0

Ist der Test B hat einen gewissen Effekt.

HO:β2-(β0+β12)=0

Ist der Test ist C hat einen gewissen Effekt.

Jetzt können Sie weitere Kontraste erstellen, um herauszufinden, was Sie interessiert. Es ist immer noch ein Chi-Quadrat-Test, jedoch mit unterschiedlichen Freiheitsgraden (3, 1, 1 bzw. 1).


Ich muss noch über den Kontrast nachdenken. Ich werde es korrigieren, wenn ich Zeit habe. Entschuldigung
suncoolsu

-3

Ich denke, Sie haben Recht, dass ANOVA nicht zur Analyse binomialer abhängiger Variablen verwendet werden sollte. Viele Leute verwenden dies, um Mittelwerte der binären Antwortvariablen (0 1) zu vergleichen, aber es sollte nicht verwendet werden, da dies die Annahme von Normalität und Gleichheit der Varianz ernsthaft verletzt. Chi-Quadrat-Tests oder logistische Regression sind für diese Situationen am besten geeignet.


Gleich wie deine Antwort hier .
Scortchi - Wiedereinsetzung von Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.