Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Welch test ou log-transformation
3 participants
Page 1 sur 1
Welch test ou log-transformation
Bonjour,
je suis tombé sur une étude qui utilise des test-t pour tester l'égalité de moyenne entre deux groupes.
Lorsque l'égalité des variances n'est pas respectée, ils transforment les données avec une transformation logarithmique... Ce qui a pour effet de quasiment valider à chaque fois le test d'égalité des variances entre les deux groupes, mais je ne suis pas du tout certain de la légitimité de la transformation logarithmique (pas trop d'étude de la distribution, écart type non proportionnel à la moyenne, pas d'étude de moyenne géométrique, etc.).
Plusieurs questions me viennent en tête :
1- Cela a-t-il un sens de regarder les conclusions sur les données transformées rendant les variances homogènes, et sur les données originales sinon? J'aurai tendance à dire que non et qu'il faut toujours regarder l'un ou l'autre en fonction de la légitimité de la transformation logarithmique (se rapproche-t-on d'une distribution normale)?
2 - Si le test est significatif sur les données transformées, est-il toujours équivalent de dire que les moyennes sur les données non transformées sont différentes également?
3- comment proprement tester la normalité des données sur de petits échantillons (entre 10 et 20 individus par groupe)?
3- Si la transformation des données permet de se rapprocher d'une distribution normale, peut-on utiliser le test de Welsh sur les données transformées en cas d'inégalité des variances sur les données transformées? (la question paraît idiote, mais toutes les publications parlent de l'une ou l'autre méthode, mais jamais des 2 à la fois...)
5- Dans un cadre plus général, pour réaliser un t-test, faut-il préférer une homogénéité des variances entre les groupes ou une distribution la plus normale possible des données? (quelle hypothèse est la plus invalidante?)
5 bis- Si la transformation permet d'avoir quasiment toujours une égalité des variances mais qu'on s'éloigne d'une distribution normale => vaut-il mieux un welch test sur les données d'origine ou un t-test sur les données transformées?
Merci
Niaboc
je suis tombé sur une étude qui utilise des test-t pour tester l'égalité de moyenne entre deux groupes.
Lorsque l'égalité des variances n'est pas respectée, ils transforment les données avec une transformation logarithmique... Ce qui a pour effet de quasiment valider à chaque fois le test d'égalité des variances entre les deux groupes, mais je ne suis pas du tout certain de la légitimité de la transformation logarithmique (pas trop d'étude de la distribution, écart type non proportionnel à la moyenne, pas d'étude de moyenne géométrique, etc.).
Plusieurs questions me viennent en tête :
1- Cela a-t-il un sens de regarder les conclusions sur les données transformées rendant les variances homogènes, et sur les données originales sinon? J'aurai tendance à dire que non et qu'il faut toujours regarder l'un ou l'autre en fonction de la légitimité de la transformation logarithmique (se rapproche-t-on d'une distribution normale)?
2 - Si le test est significatif sur les données transformées, est-il toujours équivalent de dire que les moyennes sur les données non transformées sont différentes également?
3- comment proprement tester la normalité des données sur de petits échantillons (entre 10 et 20 individus par groupe)?
3- Si la transformation des données permet de se rapprocher d'une distribution normale, peut-on utiliser le test de Welsh sur les données transformées en cas d'inégalité des variances sur les données transformées? (la question paraît idiote, mais toutes les publications parlent de l'une ou l'autre méthode, mais jamais des 2 à la fois...)
5- Dans un cadre plus général, pour réaliser un t-test, faut-il préférer une homogénéité des variances entre les groupes ou une distribution la plus normale possible des données? (quelle hypothèse est la plus invalidante?)
5 bis- Si la transformation permet d'avoir quasiment toujours une égalité des variances mais qu'on s'éloigne d'une distribution normale => vaut-il mieux un welch test sur les données d'origine ou un t-test sur les données transformées?
Merci
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Welch test ou log-transformation
Bonjour, c'est un sujet intéressant.
Il faut garder en tête que c'est une simulation spécifique et qui ne permet pas de conclure sur l'ensemble des cas de figures.
Logiquement la variable a un méchanisme d'action donc en évaluant un groupement de jeux de données comportant cette variable, on peut parfois analyser les résidus. (si cette variable est disponible dans des conditions similaires à celle que tu analyses dans le petit jeu de données).
Sur cette simulation, on voit que la réponse est non. Par contre les résultats non-concordants sont très faibles.Niaboc a écrit:2 - Si le test est significatif sur les données transformées, est-il toujours équivalent de dire que les moyennes sur les données non transformées sont différentes également?
Il faut garder en tête que c'est une simulation spécifique et qui ne permet pas de conclure sur l'ensemble des cas de figures.
- Code:
set.seed(2)
#On simule 10000 paires de jeux de données comportant une différence brute de 4 points: mu1=100; mu2=104
#On utilise un t-test sur les données brutes puis sur les données log-transformées
#On compare les p-valeurs de t-tests sur données brutes avec les p-valeurs des t-tests sur données log-transformées
nsim=10000
ddd=data.frame(pvalRAW=rep(NA,nsim),pvalLOG=rep(NA,nsim))
for(i in 1:nsim){
RAW_1=rnorm(100,100,10)
RAW_2=rnorm(100,104,10)
LOG_1=log10(RAW_1)
LOG_2=log10(RAW_2)
ddd$pvalRAW[i]=t.test(RAW_1,RAW_2,var.equal=TRUE)$p.value
ddd$pvalLOG[i]=t.test(LOG_1,LOG_2,var.equal=TRUE)$p.value
}
ddd$sigRAW=ifelse(ddd$pvalRAW<=0.05,"Sig","NS")
ddd$sigLOG=ifelse(ddd$pvalLOG<=0.05,"Sig","NS")
table(ddd$sigRAW,ddd$sigLOG);100*prop.table(table(ddd$sigRAW,ddd$sigLOG))
#Certains jeux de données ont des t-tests sur données brutes significatifs et des t-tests sur données log-transformées NS (95/10000)
#Certains jeux de données ont des t-tests sur données log-transformées significatifs et des t-tests sur données brutes NS (64/10000)
C'est vrai que c'est compliqué sur des petits jeux de données, un astuce consiste à regrouper plusieurs jeux de données comportant la variable concernée, faire un modèle pour réduire le bruit et analyser la normalité des résidus (qui devront être plus nombreux).Niaboc a écrit:3- comment proprement tester la normalité des données sur de petits échantillons (entre 10 et 20 individus par groupe)?
Logiquement la variable a un méchanisme d'action donc en évaluant un groupement de jeux de données comportant cette variable, on peut parfois analyser les résidus. (si cette variable est disponible dans des conditions similaires à celle que tu analyses dans le petit jeu de données).
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Welch test ou log-transformation
Du coup avec ta simulation, la réponse à la question 2 serait : on ne peut rien dire? Et donc, je me demande quel est l'intérêt d'une transformation de variables (hormis pouvoir rentrer dans le cadre du test statistique)...
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Welch test ou log-transformation
Avec la simulation on peut avoir un contre-exemple de "Si le test est significatif sur les données transformées, il sera toujours équivalent de dire que les moyennes sur les données non transformées sont différentes également?" mais avec assez peu de cas qui contredisent ce statement.
Après j'ai vu des statisticiens log-transformer des variables pour avoir des variances plus faibles et penser que ça résoudrait les problèmes d'hétéroscédasticité (pas forcément le cas vu que les moyennes baissent beaucoup aussi).
Et c'est pas forcément correct de transformer une variable pour essayer de corriger les problèmes de variance. Une variable suit une loi et logiquement on est censé optimiser les résultats en faisant un test paramétrique sur la bonne distribution de la variable.
Faudrait regarder au cas par cas mais transformer une variable juste pour de l'hétérogénéité, sans regarder la distribution de la variable, ça me semble douteux. La distribution est plus importante que l'hétérogénéité parce que la différence de moyenne qu'on évalue se fait sur des distributions normales. Si on compare les moyennes de deux distributions left-skewed, ça a un peu moins de sens.
Une correction de Welch ça permet de garder une erreur de type I à 5%, si on applique un t-test sur la mauvaise distribution, on a une inflation de l'erreur de type I.
Ce n'est que mon avis.
Après j'ai vu des statisticiens log-transformer des variables pour avoir des variances plus faibles et penser que ça résoudrait les problèmes d'hétéroscédasticité (pas forcément le cas vu que les moyennes baissent beaucoup aussi).
Et c'est pas forcément correct de transformer une variable pour essayer de corriger les problèmes de variance. Une variable suit une loi et logiquement on est censé optimiser les résultats en faisant un test paramétrique sur la bonne distribution de la variable.
Faudrait regarder au cas par cas mais transformer une variable juste pour de l'hétérogénéité, sans regarder la distribution de la variable, ça me semble douteux. La distribution est plus importante que l'hétérogénéité parce que la différence de moyenne qu'on évalue se fait sur des distributions normales. Si on compare les moyennes de deux distributions left-skewed, ça a un peu moins de sens.
Une correction de Welch ça permet de garder une erreur de type I à 5%, si on applique un t-test sur la mauvaise distribution, on a une inflation de l'erreur de type I.
- Code:
set.seed(1)
#Générer deux vecteurs vides
pval_raw=vector()
pval_log=vector()
#Simulation de deux jeux de données normaux hétéroscédastiques
#puis log-transformation de ces deux jeux de données
for(i in 1:100000){
raw_1=rnorm(30,100,5)
raw_2=rnorm(30,100,12)
log_1=log10(raw_1)
log_2=log10(raw_2)
pval_raw[i]=t.test(raw_1,raw_2,var.equal=F)$p.value
pval_log[i]=t.test(log_1,log_2,var.equal=T)$p.value
}
#Résultats
prop.table(table(pval_raw<=0.05)) #alpha=0.049 (~5%)
prop.table(table(pval_log<=0.05)) #alpha=0.056 (>5%)
Ce n'est que mon avis.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Welch test ou log-transformation
C'est une excellente question, mais elle se pose à chaque fois qu'on utilise une transformation.
A mon avis, la réponse est que l'on ne peut guère apporter de crédit à une analyse faite si les conditions de réalisation des tests (e.g., normalité et homoscédasticité) ne sont pas vérifiées. Si une transformation permet de se rapprocher des conditions d'application (par exemple, homogénéisation des variances), alors les résultats du test qui s'appuie sur ces conditions seront plus crédibles/valides que ceux issus des calculs faits sans transformation.
HTH, Eric.
A mon avis, la réponse est que l'on ne peut guère apporter de crédit à une analyse faite si les conditions de réalisation des tests (e.g., normalité et homoscédasticité) ne sont pas vérifiées. Si une transformation permet de se rapprocher des conditions d'application (par exemple, homogénéisation des variances), alors les résultats du test qui s'appuie sur ces conditions seront plus crédibles/valides que ceux issus des calculs faits sans transformation.
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: Welch test ou log-transformation
Eric a écrit:Si une transformation permet de se rapprocher des conditions d'application (par exemple, homogénéisation des variances), alors les résultats du test qui s'appuie sur ces conditions seront plus crédibles/valides que ceux issus des calculs faits sans transformation.
Je ne comprends pas pourquoi.
A la base le t-test sert à détecter ou non une différence de moyenne, et ce avec ou sans homogénéité des variances (correction de Welch si nécessaire).
Si on applique un t-test sur des données non-normales, on compare des moyennes sur des distributions potentiellement skewed/dissymétriques, la médianne et la moyenne sont alors surement écartées (ce n'est pas optimal et c'est pour ça qu'on compare les rangs sur les distributions non-normales).
Petit exemple illustratif qui montre que des données normales log-transformées à tort peuvent écarter la médianne et la moyenne (de toute façon la distribution devient à tort non-symétrique) :
- Code:
set.seed(2)
raw_1=rnorm(3000,10,1)
raw_2=rnorm(3000,10,3)
log_1=log10(raw_1+1)
log_2=log10(raw_2+1)
par(mfrow=c(2,2))
hist(raw_1,breaks=100,col="black");abline(v=c(mean(raw_1),median(raw_1)),col=c("red","cyan"),lty=5,lwd=3)
hist(raw_2,breaks=100,col="black");abline(v=c(mean(raw_2),median(raw_2)),col=c("red","cyan"),lty=5,lwd=3)
hist(log_1,breaks=100,col="black",xlim=c(0.5,1.5));abline(v=c(mean(log_1),median(log_1)),col=c("red","cyan"),lty=5,lwd=3)
hist(log_2,breaks=100,col="black",xlim=c(0.5,1.5));abline(v=c(mean(log_2),median(log_2)),col=c("red","cyan"),lty=5,lwd=3)
sd(raw_2)/sd(raw_1) #Ratio of SD (raw)
sd(log_2)/sd(log_1) #Ratio of SD (log)
(sd(raw_2)/mean(raw_2))/(sd(raw_2)/sd(raw_1)) #Ratio of CV (raw)
(sd(log_2)/mean(log_2))/(sd(log_2)/sd(log_1)) #Ratio of CV (log)
#En effet, on a baissé le ratio des coefficients de variation avec la log-transformation
#Mais on également transformé à tort des données symétriques en données dissymétriques
On contrôle au moins l'erreur de type I.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Welch test ou log-transformation
Et dans le cas d'un test de Student, quelle hypothèse est la plus invalidante? Faut-il préférer un test de Welsh sur une distribution normale si on a de l'hétéroscédasticité, ou préférer un test de Student avec des données transformées homoscédastiques mais qui s'éloignent d'une distribution normale? (avec les arguments de Zizima je dirais qu'il est préférable de faire un test de Welsh sur une distribution normale))
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Welch test ou log-transformation
En fait, la clef de cette discussion est centrée sur la distribution du test lui-même (la valeur du t) et non sur la distribution des données que l'on compare. C'est bien la distribution du test (t en l'ocurrence) qui conduit à chercher une valeur seuil (en occurrence dans une table de la loi de Student). C'est pour bien s'assurer que l'on connait à priori la distribution du test lui-même que les données d'origine doivent avoir (dans ce cas) des lois normales et de même variance. Les transformations n'ont pour but que ceci.zezima a écrit:
Je ne comprends pas pourquoi.
A la base le t-test sert à détecter ou non une différence de moyenne, et ce avec ou sans homogénéité des variances (correction de Welch si nécessaire).
Maintenant, pour le test-t, il faut noter que la correction de Welch n'est juste qu'un "bidouillage" (sur les df) pour raccrocher les wagons à un test-t standard. Il vaut mieux, je pense, trouver un moyen de standardiser les variances, ce qui n'est pas toujours faisable.
Enfin, il existe des montagnes d'articles (depuis la fin des années 60) qui démontrent clairement que les procédures comme le test t sont hyper-robustes vis-à-vis de l'hétéroscédasticité. Elles tiennent la route (restent valides) même si on s'écarte sensiblement de cette condition d'application. Cette discussion - intéressante - n'a qu'une valeur théorique, en fait.
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Sujets similaires
» Démontrer qu'un t-test rejettera plus qu'un welch test
» test t de Welch
» Quel test derrière la transformation de BoxCox ?
» La log-transformation est dangereuse ?
» transformation pour ACP
» test t de Welch
» Quel test derrière la transformation de BoxCox ?
» La log-transformation est dangereuse ?
» transformation pour ACP
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum