Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Les posteurs les plus actifs de la semaine
Aucun utilisateur

Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

Welch test ou log-transformation

3 participants

Aller en bas

Welch test ou log-transformation Empty Welch test ou log-transformation

Message par niaboc Mer 3 Juil 2019 - 23:24

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
niaboc
niaboc

Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par zezima Jeu 4 Juil 2019 - 11:39

Bonjour, c'est un sujet intéressant.

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?
Sur cette simulation, on voit que la réponse est non. Par contre les résultats non-concordants sont très faibles.
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)

Niaboc a écrit:3- comment proprement tester la normalité des données sur de petits échantillons (entre 10 et 20 individus par groupe)?
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).
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
zezima

Nombre de messages : 939
Date d'inscription : 26/02/2013

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par niaboc Ven 5 Juil 2019 - 6:44

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
niaboc

Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par zezima Ven 5 Juil 2019 - 7:38

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.
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
zezima

Nombre de messages : 939
Date d'inscription : 26/02/2013

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par Eric Wajnberg Ven 5 Juil 2019 - 10:16

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.
Eric Wajnberg
Eric Wajnberg

Nombre de messages : 1237
Date d'inscription : 14/09/2012

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par zezima Ven 5 Juil 2019 - 11:41

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
zezima

Nombre de messages : 939
Date d'inscription : 26/02/2013

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par niaboc Ven 5 Juil 2019 - 12:12

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
niaboc

Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par Eric Wajnberg Sam 6 Juil 2019 - 7:02

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).
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.

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
Eric Wajnberg

Nombre de messages : 1237
Date d'inscription : 14/09/2012

Revenir en haut Aller en bas

Welch test ou log-transformation Empty Re: Welch test ou log-transformation

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum