test Homoscédasticité pour deux ANOVA
Question
Je me sers var.test
et bartlett.test
pour vérifier les hypothèses de base de ANOVA, entre autres, homogénéité de la variance (, l'égalité des homogénéité des écarts). La procédure est assez simple pour un ANOVA:
bartlett.test(x ~ g) # where x is numeric, and g is a factor
var.test(x ~ g)
Mais, pour 2x2 tables, à savoir deux ANOVA de, je veux faire quelque chose comme ceci:
bartlett.test(x ~ c(g1, g2)) # or with list; see latter:
var.test(x ~ list(g1, g2))
Bien sûr, les hypothèses ANOVA peut être vérifié avec les procédures graphiques, mais qu'en est- "une option arithmétique" ? Est-ce que, du tout, facile à gérer? Comment avez-vous test en homogénéité de la variance ANOVA à deux voies?
La solution
test est Hypothesis le mauvais outil à utiliser pour évaluer la validité des hypothèses du modèle. Si la taille de l'échantillon est faible, vous avez pas le pouvoir de détecter les différences de variance, même si les différences de variance sont grandes. Si vous avez une grande taille de l'échantillon que vous avez le pouvoir de détecter même les plus triviales écarts de variance égale, de sorte que vous rejetterez presque toujours nulle. Des études de simulation ont montré que les essais préliminaires des pistes hypothèses du modèle à des erreurs de type I peu fiables.
En regardant les résidus dans toutes les cellules est un bon indicateur, ou si vos données sont normales, vous pouvez utiliser l'AIC ou BIC avec / sans écarts égaux en tant que procédure de sélection.
Si vous pensez qu'il ya des écarts inégaux, laisser tomber l'hypothèse avec quelque chose comme:
library(car)
model.lm <- lm(formula=x ~ g1 + g2 + g1*g2,data=dat,na.action=na.omit)
Anova(model.lm,type='II',white.adjust='hc3')
Vous ne perdez pas beaucoup de puissance avec la méthode robuste (matrices de covariance cohérentes hetroscedastic), donc en cas de doute aller robuste.
Autres conseils
Vous pouvez tester hétéroscédasticité en utilisant Fligner- essai Killeen de l'homogénéité des variances. En supposant votre modèle est quelque chose comme
model<-aov(gain~diet*supplement)
fligner.test(gain~diet*supplement)
Fligner-Killeen test of homogeneity of variances
data: gain by diet by supplement
Fligner-Killeen:med chi-squared = 2.0236, df = 2, p-value = 0.3636
Vous auriez pu utiliser bartlett.test (mais cela est plus un test de non-normalité que l'égalité des écarts)
bartlett.test(gain~diet*supplement)
Bartlett test of homogeneity of variances
data: gain by diet by supplement
Bartlett's K-squared = 2.2513, df = 2, p-value = 0.3244
De plus, vous pouvez effectuer le Levene test
pour le groupe variances égales dans les deux sens unique et ANOVA à deux voies. Implémentations de test de Levene se trouvent dans des forfaits href="http://finzi.psych.upenn.edu/R/library/car/html/leveneTest.html" (lien fixe), S20x et < a href = "http://finzi.psych.upenn.edu/R/library/lawstat/html/levene.test.html" rel = "noreferrer nofollow"> lawstat
levene.test(gain~diet*supplement) # car package version
Levene's Test for Homogeneity of Variance
Df F value Pr(>F)
group 11 1.1034 0.3866
36
Pour bartlett.test
bartlett.test(split(x,list(g1,g2)))
var.test
n'est pas applicable car il ne fonctionne que quand il y a deux groupes.