Concrètement, comment les gens gèrent-ils l'ANOVA lorsque les données ne répondent pas tout à fait aux hypothèses?


19

Ce n'est pas une question strictement statistique - je peux lire tous les manuels sur les hypothèses ANOVA - j'essaie de comprendre comment les analystes qui travaillent réellement traitent des données qui ne répondent pas tout à fait aux hypothèses. J'ai parcouru beaucoup de questions sur ce site à la recherche de réponses et je continue à trouver des messages sur le moment de ne pas utiliser ANOVA (dans un contexte mathématique abstrait et idéalisé) ou sur la façon de faire certaines des choses que je décris ci-dessous dans R. I j'essaie vraiment de comprendre quelles décisions les gens prennent réellement et pourquoi.

J'exécute une analyse sur des données groupées d'arbres (arbres réels, pas d'arbres statistiques) en quatre groupes. J'ai des données pour environ 35 attributs pour chaque arbre et je passe en revue chaque attribut pour déterminer si les groupes diffèrent considérablement sur cet attribut. Cependant, dans quelques cas, les hypothèses de l'ANOVA sont légèrement violées car les variances ne sont pas égales (selon un test de Levene, en utilisant alpha = 0,05).

Selon moi, mes options sont les suivantes: 1. Transformer les données en puissance et voir si cela modifie le p-val de Levene. 2. Utilisez un test non paramétrique comme un Wilcoxon (si oui, lequel?). 3. Faites une sorte de correction du résultat ANOVA, comme un Bonferroni (je ne suis pas vraiment sûr si quelque chose comme ça existe?). J'ai essayé les deux premières options et obtenu des résultats légèrement différents - dans certains cas, une approche est importante et l'autre ne l'est pas. J'ai peur de tomber dans le piège de pêche de la valeur p, et je cherche des conseils qui m'aideront à justifier l'approche à utiliser.

J'ai également lu des choses qui suggèrent que l'hétéroscédasticité n'est pas vraiment un gros problème pour l'ANOVA à moins que les moyennes et les variances ne soient corrélées (c'est-à-dire qu'elles augmentent toutes les deux ensemble), donc je peux peut-être simplement ignorer le résultat de Levene à moins que je ne voie un modèle comme ça? Si oui, existe-t-il un test pour cela?

Enfin, je dois ajouter que je fais cette analyse pour la publication dans une revue à comité de lecture, donc quelle que soit l'approche sur laquelle je m'arrête, il faut passer avec les critiques. Donc, si quelqu'un peut fournir des liens vers des exemples similaires publiés, ce serait fantastique.


3
Que vous l'utilisiez ou non R, il peut être avantageux de lire ma réponse ici: Alternatives à l'ANOVA unidirectionnelle pour les données hétéroscédastiques , qui traite de certains de ces problèmes.
gung - Réintègre Monica

Réponses:


18

J'essaie de comprendre comment les analystes qui travaillent réellement gèrent des données qui ne répondent pas tout à fait aux hypothèses.

Cela dépend de mes besoins, quelles hypothèses sont violées, de quelle manière, à quel point, à quel point cela affecte l'inférence, et parfois de la taille de l'échantillon.

J'exécute une analyse sur les données groupées des arbres en quatre groupes. J'ai des données pour environ 35 attributs pour chaque arbre et je passe en revue chaque attribut pour déterminer si les groupes diffèrent considérablement sur cet attribut. Cependant, dans quelques cas, les hypothèses de l'ANOVA sont légèrement violées car les variances ne sont pas égales (selon un test de Levene, en utilisant alpha = 0,05).

1) Si les tailles d'échantillon sont égales, vous n'avez pas beaucoup de problème. L'ANOVA est assez (de niveau) robuste à différentes variances si les n sont égaux.

2) tester l' égalité de variance avant de décider de supposer qu'elle est recommandée par un certain nombre d'études. Si vous avez le moindre doute sur le fait qu'ils seront presque égaux, il est préférable de simplement supposer qu'ils sont inégaux.

Quelques références:

Zimmerman, DW (2004),
"Une note sur les tests préliminaires d'égalité des variances."
Br. J. Math. Stat. Psychol. , Mai ; 57 (Pt 1): 173-81.
http://www.ncbi.nlm.nih.gov/pubmed/15171807

Henrik donne trois références ici

3) C'est la taille de l'effet qui importe, plutôt que de savoir si votre échantillon est suffisamment grand pour vous dire qu'il est significativement différent. Ainsi, dans les grands échantillons, une petite différence de variance apparaîtra comme très significative par le test de Levene, mais n'aura essentiellement aucune conséquence dans son impact. Si les échantillons sont grands et que la taille de l'effet - le rapport des variances ou les différences de variances - est assez proche de ce qu'ils devraient être, alors la valeur de p est sans conséquence. (D'un autre côté, dans de petits échantillons, une belle grande valeur de p est de peu de confort. De toute façon, le test ne répond pas à la bonne question.)

Notez qu'il y a un ajustement de type Welch-Satterthwaite à l'estimation de l'erreur standard résiduelle et du df dans l'ANOVA, tout comme il y a dans les tests t à deux échantillons.

  1. Utilisez un test non paramétrique comme un Wilcoxon (si oui, lequel?).

Si vous êtes intéressé par des alternatives de changement de lieu, vous supposez toujours un écart constant. Si vous êtes intéressé par des alternatives beaucoup plus générales, vous pourriez peut-être y penser; l'échantillon k équivalent à un test de Wilcoxon est un test de Kruskal-Wallis.

Faire une sorte de correction du résultat ANOVA

Voir ma suggestion ci-dessus d'envisager Welch-Satterthwaite, c'est une «sorte de correction».

(Alternativement, vous pouvez convertir votre ANOVA en un ensemble de tests t de type Welch par paire, auquel cas vous voudrez probablement regarder un Bonferroni ou quelque chose de similaire)

J'ai également lu des choses qui suggèrent que l'hétéroscédasticité n'est pas vraiment un gros problème pour l'ANOVA à moins que les moyennes et les variances soient corrélées (c'est-à-dire qu'elles augmentent toutes les deux ensemble)

Il faudrait citer quelque chose comme ça. Ayant examiné un certain nombre de situations avec des tests t, je ne pense pas que ce soit clairement vrai, alors j'aimerais voir pourquoi ils le pensent; peut-être que la situation est limitée d'une certaine manière. Ce serait bien si c'était le cas, car des modèles linéaires souvent généralisés peuvent aider dans cette situation.

Enfin, je dois ajouter que je fais cette analyse pour la publication dans une revue à comité de lecture, donc quelle que soit l'approche sur laquelle je m'arrête, il faut passer avec les critiques.

Il est très difficile de prédire ce qui pourrait satisfaire vos critiques. La plupart d'entre nous ne travaillent pas avec des arbres.


12

Il n'est en fait pas très difficile de gérer l'hétéroscédasticité dans des modèles linéaires simples (par exemple, des modèles de type ANOVA unidirectionnels ou bidirectionnels).

Robustesse de l'ANOVA

Premièrement, comme d'autres l'ont noté, l'ANOVA est incroyablement robuste aux écarts par rapport à l'hypothèse de variances égales, surtout si vous avez des données approximativement équilibrées (nombre égal d'observations dans chaque groupe). Les tests préliminaires sur des variances égales, en revanche, ne le sont pas (bien que le test de Levene soit bien meilleur que le test F communément enseigné dans les manuels). Comme l'a dit George Box:

Faire le test préliminaire sur les écarts, c'est un peu comme mettre en mer un bateau à rames pour savoir si les conditions sont suffisamment calmes pour qu'un paquebot quitte le port!

Même si l'ANOVA est très robuste, car il est très facile de prendre en compte l'hétéroscédaticité, il n'y a pas de raison de ne pas le faire.

Tests non paramétriques

Si les différences de moyens vous intéressent vraiment , les tests non paramétriques (par exemple, le test de Kruskal – Wallis) ne sont vraiment d'aucune utilité. Ils testent les différences entre les groupes, mais ils ne testent pas en général les différences de moyens.

Exemples de données

Générons un exemple simple de données où l'on aimerait utiliser l'ANOVA, mais où l'hypothèse de variances égales n'est pas vraie.

set.seed(1232)
pop = data.frame(group=c("A","B","C"),
                 mean=c(1,2,5),
                 sd=c(1,3,4))
d = do.call(rbind, rep(list(pop),13))
d$x = rnorm(nrow(d), d$mean, d$sd)

Nous avons trois groupes, avec des différences (claires) dans les moyennes et les variances:

stripchart(x ~ group, data=d)

Diagramme montrant des exemples de données.

ANOVA

Sans surprise, une ANOVA normale gère très bien cela:

> mod.aov = aov(x ~ group, data=d)
> summary(mod.aov)
            Df Sum Sq Mean Sq F value  Pr(>F)    
group        2  199.4   99.69   13.01 5.6e-05 ***
Residuals   36  275.9    7.66                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Alors, quels groupes diffèrent? Utilisons la méthode HSD de Tukey:

> TukeyHSD(mod.aov)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = x ~ group, data = d)

$group
        diff        lwr      upr     p adj
B-A 1.736692 -0.9173128 4.390698 0.2589215
C-A 5.422838  2.7688327 8.076843 0.0000447
C-B 3.686146  1.0321403 6.340151 0.0046867

Avec une valeur P de 0,26, nous ne pouvons prétendre à aucune différence (dans les moyennes) entre le groupe A et B. Et même si nous ne tenions pas compte du fait que nous avons fait trois comparaisons, nous n'obtiendrions pas un P faible - valeur ( P  = 0,12):

> summary.lm(mod.aov)
[…]
Coefficients:
            Estimate Std. Error t value  Pr(>|t|)    
(Intercept)   0.5098     0.7678   0.664     0.511    
groupB        1.7367     1.0858   1.599     0.118    
groupC        5.4228     1.0858   4.994 0.0000153 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.768 on 36 degrees of freedom

Pourquoi donc? Sur la base de l'intrigue, il y a une différence assez claire. La raison en est que l'ANOVA suppose des variances égales dans chaque groupe et estime un écart type commun de 2,77 (indiqué comme `` erreur standard résiduelle '' dans le summary.lmtableau, ou vous pouvez l'obtenir en prenant la racine carrée du carré moyen résiduel (7,66) dans le tableau ANOVA).

Mais le groupe A a un écart-type (population) de 1, et cette surestimation de 2,77 rend (inutilement) difficile l'obtention de résultats statistiquement significatifs, c'est-à-dire que nous avons un test avec une puissance (trop) faible.

'ANOVA' avec des variances inégales

Alors, comment adapter un bon modèle, celui qui prend en compte les différences de variances? C'est facile dans R:

> oneway.test(x ~ group, data=d, var.equal=FALSE)
    One-way analysis of means (not assuming equal variances)

data:  x and group
F = 12.7127, num df = 2.000, denom df = 19.055, p-value = 0.0003107

Donc, si vous voulez exécuter une 'ANOVA' unidirectionnelle simple dans R sans supposer des variances égales, utilisez cette fonction. Il s'agit essentiellement d'une extension du (Welch) t.test()pour deux échantillons avec des variances inégales.

Malheureusement, cela ne fonctionne pas avec TukeyHSD()(ou la plupart des autres fonctions que vous utilisez sur les aovobjets), donc même si nous sommes presque sûrs qu'il existe des différences de groupe, nous ne savons pas ils se trouvent.

Modélisation de l'hétéroscédasticité

La meilleure solution consiste à modéliser explicitement les variances. Et c'est très facile dans R:

> library(nlme)
> mod.gls = gls(x ~ group, data=d,
                weights=varIdent(form= ~ 1 | group))
> anova(mod.gls)
Denom. DF: 36 
            numDF  F-value p-value
(Intercept)     1 16.57316  0.0002
group           2 13.15743  0.0001

Des différences encore importantes, bien sûr. Mais maintenant, les différences entre les groupes A et B sont également devenues statistiquement significatives ( P  = 0,025):

> summary(mod.gls)
Generalized least squares fit by REML
  Model: x ~ group
  […]
Variance function:
 Structure: Different standard
            deviations per stratum
 Formula: ~1 | group 
 Parameter estimates:
       A        B        C 
1.000000 2.444532 3.913382 

Coefficients:
               Value Std.Error  t-value p-value
(Intercept) 0.509768 0.2816667 1.809829  0.0787
groupB      1.736692 0.7439273 2.334492  0.0253
groupC      5.422838 1.1376880 4.766542  0.0000
[…]
Residual standard error: 1.015564 
Degrees of freedom: 39 total; 36 residual

Donc, utiliser un modèle approprié aide! Notez également que nous obtenons des estimations des écarts-types (relatifs). L'écart type estimé pour le groupe A se trouve au bas des résultats, 1,02. L'écart type estimé du groupe B est de 2,44 fois cela, ou 2,48, et l'écart type estimé du groupe C est de même 3,97 (tapez intervals(mod.gls)pour obtenir des intervalles de confiance pour les écarts types relatifs des groupes B et C).

Correction pour plusieurs tests

Cependant, nous devons vraiment corriger les tests multiples. C'est facile en utilisant la bibliothèque 'multcomp'. Malheureusement, il n'a pas de support intégré pour les objets 'gls', nous devrons donc d'abord ajouter quelques fonctions d'assistance:

model.matrix.gls <- function(object, ...)
    model.matrix(terms(object), data = getData(object), ...)
model.frame.gls <- function(object, ...)
  model.frame(formula(object), data = getData(object), ...)
terms.gls <- function(object, ...)
  terms(model.frame(object),...)

Maintenant, mettons-nous au travail:

> library(multcomp)
> mod.gls.mc = glht(mod.gls, linfct = mcp(group = "Tukey"))
> summary(mod.gls.mc)
[…]
Linear Hypotheses:
           Estimate Std. Error z value Pr(>|z|)    
B - A == 0   1.7367     0.7439   2.334   0.0480 *  
C - A == 0   5.4228     1.1377   4.767   <0.001 ***
C - B == 0   3.6861     1.2996   2.836   0.0118 *  

Différence toujours statistiquement significative entre le groupe A et le groupe B! ☺ Et nous pouvons même obtenir (simultanément) des intervalles de confiance pour les différences entre les moyennes de groupe:

> confint(mod.gls.mc)
[…]
Linear Hypotheses:
           Estimate lwr     upr    
B - A == 0 1.73669  0.01014 3.46324
C - A == 0 5.42284  2.78242 8.06325
C - B == 0 3.68615  0.66984 6.70245

En utilisant un modèle approximativement (ici exactement) correct, nous pouvons faire confiance à ces résultats!

Notez que pour cet exemple simple, les données du groupe C n'ajoutent pas vraiment d'informations sur les différences entre les groupes A et B, car nous modélisons à la fois des moyennes distinctes et des écarts-types pour chaque groupe. Nous aurions pu simplement utiliser des tests t par paire corrigés pour plusieurs comparaisons:

> pairwise.t.test(d$x, d$group, pool.sd=FALSE)
    Pairwise comparisons using t tests with non-pooled SD 

data:  d$x and d$group 

  A       B      
B 0.03301 -      
C 0.00098 0.02032

P value adjustment method: holm 

Cependant, pour les modèles plus compliqués, par exemple les modèles bidirectionnels ou les modèles linéaires avec de nombreux prédicteurs, l'utilisation des GLS (moindres carrés généralisés) et la modélisation explicite des fonctions de variance est la meilleure solution.

Et la fonction de variance ne doit pas simplement être une constante différente dans chaque groupe; nous pouvons lui imposer une structure. Par exemple, nous pouvons modéliser la variance comme une puissance de la moyenne de chaque groupe (et donc avoir seulement besoin d'estimer un paramètre, l'exposant), ou peut-être comme le logarithme d'un des prédicteurs du modèle. Tout cela est très simple avec GLS (et gls()en R).

Les moindres carrés généralisés sont à mon humble avis une technique de modélisation statistique très sous-utilisée. Au lieu de vous soucier des écarts par rapport aux hypothèses du modèle, modélisez ces écarts!


1
Merci pour la réponse! Je ne comprends pas le résultat de oneway.test () et gls () pour une variance inégale ANOVA (Welch ANOVA). La valeur p de oneway.test () est p-value = 0,0003107. Mais la valeur p de gls (x ~ groupe, données = d, poids = varIdent (forme = ~ 1 | groupe)) est de 0,0001. Pourquoi ces deux résultats sont-ils différents?
WCMC

2
Il y a une inquiétude croissante concernant les corrections pour plusieurs tests, je pense que le rapport des valeurs de p non corrigées avec le nombre de comparaisons que vous avez faites est plus transparent. Surtout parce que vous ne pouvez pas être intéressé par chaque comparaison par paire lorsque vous les testez dans R, donc la correction sera faite en tenant compte des comparaisons qui ne sont pas intéressantes.
Nakx

7
  1. Il peut en effet y avoir une certaine transformation de vos données qui produit une distribution normale acceptable. Bien sûr, maintenant votre inférence concerne les données transformées, pas les données non transformées.

  2. En supposant que vous parlez d'une ANOVA unidirectionnelle, le test de Kruskal-Wallis est un analogue non paramétrique approprié à l'ANOVA unidirectionnelle. Le test de Dunn (pas le test de somme des rangs des variétés de jardin) est peut-être le test non paramétrique le plus courant approprié pour les comparaisons multiples par paires post hoc , bien qu'il existe d'autres tests tels que le test de Conover-Iman (strictement plus puissant que le test de Dunn après rejet) du kruskal-Wallis) et le test de Dwass-Steele-Crichtlow-Fligner.

  3. α

L'ANOVA est basée sur un ratio de variances intra-groupe et inter-groupe. Je ne suis pas tout à fait sûr de ce que vous entendez par hétéroscédasticité dans ce contexte, mais si vous entendez des variances inégales entre les groupes, cela me semblerait fondamentalement briser la logique de l'hypothèse nulle du test.

Une simple requête Google Scholar pour «test de Dunn» avec un terme général de votre discipline devrait renvoyer de nombreux exemples publiés.


Les références

Conover, WJ et Iman, RL (1979). Sur les procédures de comparaisons multiples . Rapport technique LA-7677-MS, Los Alamos Scientific Laboratory.

Crichtlow, DE et Fligner, MA (1991). Sur les comparaisons multiples sans distribution dans l'analyse unidirectionnelle de la variance . Communications in Statistics — Theory and Methods , 20 (1): 127.

Dunn, JO (1964). Comparaisons multiples utilisant des sommes de classement . Technometrics , 6 (3): 241–252.


2
D'accord, merci pour cette réponse, mais je ne suis pas tout à fait clair sur ce que vous dites. En ce qui concerne «l'hétéroscédasticité», je pensais utiliser le mot dans le sens ordinaire: «une collection de variables aléatoires est hétéroscédastique s'il y a des sous-populations qui ont des variabilités différentes des autres. Ici, la« variabilité »pourrait être quantifiée par la variance ou toute autre mesure de la dispersion statistique. "- Wikipedia. Dans mes données, les variances des sous-groupes sont inégales (selon le test de Levene), je les ai donc décrites comme hétéroscédastiques. N'est-ce pas vrai?
Jas Max

1
Ce que j'essaie vraiment de discuter, c'est l'écart entre les statistiques des manuels et le monde réel. Chaque manuel dit que "les variances doivent être égales pour l'ANOVA" mais bien sûr elles ne le sont jamais. Alors, arrêtons-nous arbitrairement à un point particulier et passons-nous à un test différent - si oui, à quel moment? Dans mon domaine (biologie végétale), la plupart des gens utilisent simplement le test qu'ils ont appris à utiliser sans trop y penser. Je n'en suis pas vraiment satisfait. Je serais ravi de toute suggestion de livres / sites Web qui traitent de l'utilisation «pratique» des statistiques - c'est-à-dire du test à utiliser quand et pourquoi. Merci pour la suggestion de Dunn, ça aide.
Jas Max

2
Ah, l'hypothèse de variances égales est la variance de la population et non la variance de l' échantillon . Vous pouvez en déduire que les variances de la population sont égales ... via un test du globe oculaire, ou par un autre test statistique, par exemple.
Alexis

1
Comment savez-vous quoi que ce soit sur la variance de la population si ce n'est en évaluant la variance de l'échantillon? J'interprète le p-val du test de Levene comme "en supposant que les variances de population sont égales, quelles sont les chances que vos variances d'échantillon diffèrent autant." Si j'obtiens un faible p-val, je rejette l'hypothèse que les variances de population sont égales et ne peuvent pas utiliser l'ANOVA. Kruskal-Wallace semble être une bonne alternative, mais est-il préférable de transformer les données pour répondre aux hypothèses de l'ANOVA et si oui pourquoi?
Jas Max

1
De plus, le test de Levene, p <0,05, est-il le test et le seuil appropriés pour cette décision? Qu'en est-il d'O'Brien, de Bartlett ... les résultats de ces tests peuvent différer considérablement et je ne sais pas vraiment quoi utiliser - alors je choisis Levene car il semble être le plus conservateur. Mais c'est peut-être exagéré - peut-être qu'en étant trop rapide pour abandonner l'ANOVA, je passe à un test qui réduit inutilement la puissance statistique de mon analyse.
Jas Max

1

Il me semble que vous faites le jeu de jambes et que vous faites de votre mieux, mais que vous craignez que vos efforts ne soient pas assez bons pour faire passer votre article devant les examinateurs. C'est vraiment un problème du monde réel. Je pense que tous les chercheurs éprouvent des difficultés avec des analyses qui semblent de temps en temps ou même franchement franchir les hypothèses. Après tout, il y a des millions d'articles évaluant par exemple les effets du traitement dans 3 petits groupes de souris avec quelque chose comme 6 à 7 souris dans chaque groupe. Comment savoir si les hypothèses d'Anova sont satisfaites dans un tel article!

J'ai passé en revue un grand nombre d'articles, en particulier dans le domaine de la physiopathologie cardiovasculaire et, en fait, je ne me sens jamais sûr à 100% si je peux faire confiance aux données ou non dans un article que j'ai lu. Mais pour moi en tant que critique, j'ai tendance à penser que des problèmes peuvent survenir à tellement de niveaux dans la science qu'il est probablement inutile de creuser trop profondément dans les statistiques - après tout, l'ensemble de données pourrait être fabriqué et je ne le ferais jamais dans un million d'années être en mesure de dire. En conséquence, il y aura toujours un élément de confiance dans ce domaine de travail, dont les chercheurs ne doivent jamais abuser.

La suggestion la plus concrète que je donnerais est que vous devez tout réfléchir très attentivement avant de soumettre et vous assurer que vous serez en mesure de répondre honnêtement à toutes les questions posées par les examinateurs. Tant que vous avez fait de votre mieux, vos intentions sont honnêtes et vous dormez bien la nuit, je pense que vous devriez aller bien.


2
Je ne suis pas sûr d'être d'accord sur le fait de ne pas être en mesure de repérer les fabrications: j'en ai repéré auparavant.
Alexis
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.