ANOVA sur des données binomiales


32

J'analyse un ensemble de données expérimentales. Les données consistent en un vecteur apparié du type de traitement et un résultat binomial:

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

Dans la colonne des résultats, 1 indique un succès et 0, un échec. Je voudrais savoir si le traitement varie de manière significative le résultat. Il existe 4 traitements différents, chaque expérience étant répétée un grand nombre de fois (2000 pour chaque traitement).

Ma question est la suivante: puis-je analyser le résultat binaire à l'aide de l'ANOVA? Ou devrais-je utiliser un test du Khi-deux pour vérifier les données binomiales? Il semble que le chi carré suppose que la proportion serait divisée de manière égale, ce qui n'est pas le cas. Une autre idée serait de résumer les données en utilisant la proportion de succès par rapport aux échecs pour chaque traitement, puis d’utiliser un test de proportion.

Je suis curieux d’entendre vos recommandations concernant des tests qui ont un sens pour ce type d’expériences binomiales de succès / échec.

Réponses:


18

Non à l'ANOVA, qui suppose une variable de résultat normalement distribuée (entre autres). Il y a des transformations "old school" à considérer, mais je préférerais une régression logistique (équivalente à un khi carré lorsqu'il n'y a qu'une seule variable indépendante, comme dans votre cas). L’utilisation de la régression logistique par rapport à un test du chi carré présente l’avantage de pouvoir facilement utiliser un contraste linéaire pour comparer des niveaux spécifiques de traitement si vous trouvez un résultat significatif par rapport au test global (type 3). Par exemple, A contre B, B contre C, etc.

Mise à jour ajoutée pour plus de clarté:

Prenant les données à portée de main (l'ensemble de données post-doc d' Allison ) et les cits de variable comme suit, voici ce que je voulais dire:

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. Je ne comprends pas comment vous feriez le test de "type 3"? Est-ce quelque chose lié à SAS? (désolé ma connaissance de SAS est très limitée). J'aurais fait une régression logistique comme vous l'avez suggéré, mais avec 2 variables nominales. De plus, étant donné que je comprends bien, si vous effectuez une régression logistique, le test de déviance (ou de rapport de vraisemblance) permet de vérifier si tout ou partie des coefficients sont égaux à 0 et il s’agit d’un asymptotisme Chi-Sq (pas nécessairement avec df = 1)
suncoolsu

1
@suncoolsu: Oui, pratiquement, vous devriez obtenir la même conclusion. Je n'aurais pas dû dire «équivalent» (je travaille avec des données volumineuses afin qu'elles finissent de la même manière). J'ai ajouté du code dans la réponse pour aider à clarifier.
B_Miner

8

Xkknkkkp^k=Xk/nk

g(p)=arcsinp

Cependant, certains auteurs modernes sont assez sceptiques quant à la transformation de l’arcsine, voir par exemple http://www.mun.ca/biology/dschneider/b7932/B7932Final10Dec2010.pdf Mais ces auteurs s’intéressent à des problèmes tels que la prédiction, où ils montrent arcsine peut entraîner des problèmes. Si vous êtes uniquement concerné par les tests d'hypothèses, cela devrait aller. Une approche plus moderne pourrait utiliser la régression logistique.


4
(+1) ... si tous les groupes ont le même no. observations.
Scortchi - Réintégrer Monica

1
Ou on peut utiliser des poids basés sur le nombre d'observations.
kjetil b halvorsen

3

Je voudrais différer de ce que vous pensez du test de Chi-Sq. Il est applicable même si les données ne sont pas binomiales. Il est basé sur la normalité asymptotique de mle (dans la plupart des cas).

Je ferais une régression logistique comme ceci:

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

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

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

Est-ce que l'ANOVA est équivalente s'il y a une relation ou non?

Ho:β0=0

Est-ce que le test est A a un effet.

Ho:β1β0=0

Est-ce que le test est B a un effet.

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

Est-ce que le test est C a un effet.

Vous pouvez maintenant faire d’autres contrastes pour trouver ce qui vous intéresse. C’est toujours un test chi-carré, mais avec différents degrés de liberté (3, 1, 1 et 1, respectivement).


J'ai encore besoin de penser au contraste. Je vais le corriger chaque fois que j'en aurai le temps. Désolé pour cela
suncoolsu

-3

Je pense que vous avez raison de dire que ANOVA ne devrait pas être utilisé pour analyser une variable dépendante du binôme. Beaucoup de gens l'utilisent pour comparer les moyennes de la variable de réponse binaire (0 1), mais il est déconseillé de l'utiliser, car cela enfreint gravement les hypothèses de variance Normalité et Egalité. Les tests du chi carré ou la régression logistique sont les meilleurs pour ces situations.


Identique à votre réponse ici .
Scortchi - Réintégrer Monica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.