Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
[Groupe de travail] Normalité intra-groupe et ANOVA
Page 1 sur 1
31032017
[Groupe de travail] Normalité intra-groupe et ANOVA
Normalité intra-groupe et ANOVA
Problématique :
Joyeux_lapin13 a écrit:On dit que pour les tests paramétriques il faut que l'échantillon suit une loi normale. Mais par exemple, dans le cas d'un test de Student ou d'une ANOVA, sommes-nous bien d'accords que ce sont les échantillons retreints aux différents groupes qui doivent tous suivre une loi normale et non l'échantillon complet?
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
[Groupe de travail] Normalité intra-groupe et ANOVA :: Commentaires
Bonjour, c'est une très bonne problématique, qui m'intéresse également.
Dans la littérature, je n'ai jamais vu cette condition par contre il est dit pour une ANOVA à 2 facteurs, que la normalité doit être respectée dans chacun des croisements de modalités donc pourquoi cette condition ne devrait pas être respectée pour une ANOVA à 1 facteur ?
Pour les ANOVAs à 1 facteur, dans la littérature, il était conseillé que ce soit la variable sur la population globale qui soit normale.
Ne serait-ce pas l'aléa qui ferait que les deux groupes ne sont pas tous les deux normaux ? S'ils proviennent tous deux d'une population normale alors ils sont théoriquement considérés normaux. Un faible échantillon pourrait expliquer qu'on ne trouve pas la normalité pour les deux groupes. Faire du non-paramétrique pourrait potentiellement être un peu trop handicapant.
Dans la littérature, il est dit qu'une variable peut suivre des méchanismes spécifiques, par exemple à effets additifs (distribution normale) ou à effets/erreurs proportionnelles (distribution log-normale).
Une variable suivra donc une distribution spécifique en l'absence d'impacts d'autres variables.
Je pense que si deux groupes issus d'une même variable ont une distribution différente, c'est que les groupes n'ont pas été créés selon les mêmes critères.
Ensuite, il est possible et tout à fait compréhensible qu'un des groupes ait une distribution différente due à des conditions d'application (par exemple l'administration d'un traitement). La distribution serait donc déplacée ou différente, rien ne nous dit que la distribution resterait la même sous une autre condition. Le fait que les groupes n'aient pas la même distribution ne viendrait pas forcément d'un oubli de randomisation.
Un exemple qui me vient est un régime amincissant, le poids est une variable normale.
Les personnes ayant un poids de base élevé vont beaucoup plus perdre de poids que les personnes ayant un poids de base faible. La distribution Normale de base se transformera donc en une pseudo distribution normale avec un pic très pointu.
Ce qui pourrait être intéressant, serait d'évaluer la différence de puissance entre
- des comparaisons de deux groupes normaux (à variance égales)
- des comparaisons entre un groupe normal et un groupe anormal (à variance égales)
Et ce pour différentes tailles d'échantillon, de variance et de moyenne simulées
Il faudra alors fixer des règles sur "à partir de quels critères j'évalue mon échantillon simulé non normal ?".
Je pourrais essayer de faire une simulation 3D, si vous avez des idées pour générer ces groupes, je suis ouvert à toute idée.
Dans la littérature, je n'ai jamais vu cette condition par contre il est dit pour une ANOVA à 2 facteurs, que la normalité doit être respectée dans chacun des croisements de modalités donc pourquoi cette condition ne devrait pas être respectée pour une ANOVA à 1 facteur ?
Pour les ANOVAs à 1 facteur, dans la littérature, il était conseillé que ce soit la variable sur la population globale qui soit normale.
Ne serait-ce pas l'aléa qui ferait que les deux groupes ne sont pas tous les deux normaux ? S'ils proviennent tous deux d'une population normale alors ils sont théoriquement considérés normaux. Un faible échantillon pourrait expliquer qu'on ne trouve pas la normalité pour les deux groupes. Faire du non-paramétrique pourrait potentiellement être un peu trop handicapant.
Dans la littérature, il est dit qu'une variable peut suivre des méchanismes spécifiques, par exemple à effets additifs (distribution normale) ou à effets/erreurs proportionnelles (distribution log-normale).
Une variable suivra donc une distribution spécifique en l'absence d'impacts d'autres variables.
Je pense que si deux groupes issus d'une même variable ont une distribution différente, c'est que les groupes n'ont pas été créés selon les mêmes critères.
Ensuite, il est possible et tout à fait compréhensible qu'un des groupes ait une distribution différente due à des conditions d'application (par exemple l'administration d'un traitement). La distribution serait donc déplacée ou différente, rien ne nous dit que la distribution resterait la même sous une autre condition. Le fait que les groupes n'aient pas la même distribution ne viendrait pas forcément d'un oubli de randomisation.
Un exemple qui me vient est un régime amincissant, le poids est une variable normale.
Les personnes ayant un poids de base élevé vont beaucoup plus perdre de poids que les personnes ayant un poids de base faible. La distribution Normale de base se transformera donc en une pseudo distribution normale avec un pic très pointu.
Ce qui pourrait être intéressant, serait d'évaluer la différence de puissance entre
- des comparaisons de deux groupes normaux (à variance égales)
- des comparaisons entre un groupe normal et un groupe anormal (à variance égales)
Et ce pour différentes tailles d'échantillon, de variance et de moyenne simulées
Il faudra alors fixer des règles sur "à partir de quels critères j'évalue mon échantillon simulé non normal ?".
Je pourrais essayer de faire une simulation 3D, si vous avez des idées pour générer ces groupes, je suis ouvert à toute idée.
Bonjour à tous, je pense avoir une bonne piste pour répondre à la problématique de Joyeux_lapin13.
J'ai fait une petite simulation en incluant 4 groupes :
- 2 groupes qui suivent une loi Normale (avec une différence de 3)
- 1 groupe qui suit une loi Log-Normal
- 1 groupe qui suit une loi Uniforme
J'ai ensuite fait 2 à 2 des t-tests entre :
- Chaque groupe normal
- Le premier groupe normal avec le groupe log-normal
- Le premier groupe normal avec le groupe uniforme
Tout cela pour des groupes :
- de tailles 10 à 100 par pas de 10
- de variance de 2 à 4 par pas de 1
Le tout lancé 3000 fois.
Les quantiles des p-valeurs sont ensuite analysés à l'aide d'un graphique en les croisant avec la taille de l'échantillon et la variance des groupes.
Au niveau des graphiques, la première ligne représente les groupes Normaux.
La deuxième ligne représente le groupe normal croisé au group log-normal.
La troisième ligne représente le groupe normal croisé au groupe uniforme.
Les graphs parlent un petit peu, il semble qu'il y ait des petites différences de pvaleurs entre les groupes comparés.
Le code prend environ 1 minute à se lancer.
Je pense que le code est optimisable, on pourrait faire en sorte que les différences entre chaque groupe se rapprochent de 3 afin de pouvoir comparer le normal et le log-normal ainsi que le normal et l'uniforme.
Par contre je pense avoir fait fausse route concernant le groupe log-normal car il faudrait le simuler afin d'avoir des moyennes similaires au groupe normal, ça aurait plus de sens je pense.
N'hésitez pas si vous avez des petites idées.
J'ai fait une petite simulation en incluant 4 groupes :
- 2 groupes qui suivent une loi Normale (avec une différence de 3)
- 1 groupe qui suit une loi Log-Normal
- 1 groupe qui suit une loi Uniforme
J'ai ensuite fait 2 à 2 des t-tests entre :
- Chaque groupe normal
- Le premier groupe normal avec le groupe log-normal
- Le premier groupe normal avec le groupe uniforme
Tout cela pour des groupes :
- de tailles 10 à 100 par pas de 10
- de variance de 2 à 4 par pas de 1
Le tout lancé 3000 fois.
Les quantiles des p-valeurs sont ensuite analysés à l'aide d'un graphique en les croisant avec la taille de l'échantillon et la variance des groupes.
Au niveau des graphiques, la première ligne représente les groupes Normaux.
La deuxième ligne représente le groupe normal croisé au group log-normal.
La troisième ligne représente le groupe normal croisé au groupe uniforme.
Les graphs parlent un petit peu, il semble qu'il y ait des petites différences de pvaleurs entre les groupes comparés.
Le code prend environ 1 minute à se lancer.
- Code:
#########################
###Groupe de travail 1###
#########################
#Doit-on avoir une distribution normale dans tous les groupes d'un test de Student ou au global ?
library(moments)
data=array(dim=c(100,10,4,4,3000))
pval=array(dim=c(10,4,3,3000))
pvalquart=array(dim=c(10,4,3,5))
for(i in 1:10){
for(j in 1:4){
for(k in 1:3000){
n=i*10
s=j+1
gn1=rnorm(n,60,s)
gn2=rnorm(n,63,s)
gln=rlnorm(n,log(63),log(0.9+0.06*s))
gu=runif(n,min=63-2.5*s,max=63+2.5*s)
data[,i,j,1,k][1:n]=gn1
data[,i,j,2,k][1:n]=gn2
data[,i,j,3,k][1:n]=gln
data[,i,j,4,k][1:n]=gu
pval[i,j,1,k]=t.test(data[,i,j,1,k][1:n],data[,i,j,2,k][1:n])$p.value
pval[i,j,2,k]=t.test(data[,i,j,1,k][1:n],data[,i,j,3,k][1:n])$p.value
pval[i,j,3,k]=t.test(data[,i,j,1,k][1:n],data[,i,j,4,k][1:n])$p.value
}
}
}
for(i in 1:10){
for(j in 1:4){
for(m in 1:5){
pvalquart[i,j,1,m]=quantile(pval[i,j,1,],probs=seq(0,1,0.25))[m]
pvalquart[i,j,2,m]=quantile(pval[i,j,2,],probs=seq(0,1,0.25))[m]
pvalquart[i,j,3,m]=quantile(pval[i,j,3,],probs=seq(0,1,0.25))[m]
}}}
pval
pvalquart
par(mfrow=c(3,5))
#NvsN
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,1]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="0%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,2]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="25%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,3]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="50%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,4]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="75%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,5]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="100%")
#NvsLN
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,1]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="0%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,2]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="25%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,3]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="50%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,4]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="75%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,5]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="100%")
#NvsUnif
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,1]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="0%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,2]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="25%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,3]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="50%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,4]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="75%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,5]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="100%")
Je pense que le code est optimisable, on pourrait faire en sorte que les différences entre chaque groupe se rapprochent de 3 afin de pouvoir comparer le normal et le log-normal ainsi que le normal et l'uniforme.
Par contre je pense avoir fait fausse route concernant le groupe log-normal car il faudrait le simuler afin d'avoir des moyennes similaires au groupe normal, ça aurait plus de sens je pense.
N'hésitez pas si vous avez des petites idées.
Bonjour,
J'ai réduit les écarts entre les groupes pour isoler la puissance dans chaque groupe de comparaison.
Le code suivant ne permet pas de dire que l'on a une meilleure ou une plus mauvaise puissance si les 2 groupes ne sont pas normaux mais on voit que la distribution a un impact important sur le résultat des comparaisons.
Je vais désormais faire une comparaison des proportions de rejets du risque alpha dans chaque cas de figure pour vraiment évaluer ce risque de ne pas être normal dans les deux groupes (sous un mois max).
J'ai réduit les écarts entre les groupes pour isoler la puissance dans chaque groupe de comparaison.
Le code suivant ne permet pas de dire que l'on a une meilleure ou une plus mauvaise puissance si les 2 groupes ne sont pas normaux mais on voit que la distribution a un impact important sur le résultat des comparaisons.
- Code:
#########################
###Groupe de travail 1###
#########################
#Doit-on avoir une distribution normale dans tous les groupes d'un test de Student ou au global ?
library(moments)
data=array(dim=c(100,10,4,4,4000))
pval=array(dim=c(10,4,3,4000))
pvalquart=array(dim=c(10,4,3,5))
for(i in 1:10){
for(j in 1:4){
for(k in 1:4000){
n=i*10
s=j+1
gn1=rnorm(n,62,s)
gn2=rnorm(n,63,s)
gln=rlnorm(n,log(63),log(0.9+0.06*s))
gu=runif(n,min=63-2.5*s,max=63+2.5*s)
data[,i,j,1,k][1:n]=gn1
data[,i,j,2,k][1:n]=gn2
data[,i,j,3,k][1:n]=gln
data[,i,j,4,k][1:n]=gu
pval[i,j,1,k]=t.test(data[,i,j,1,k][1:n],data[,i,j,2,k][1:n])$p.value
pval[i,j,2,k]=t.test(data[,i,j,1,k][1:n],data[,i,j,3,k][1:n])$p.value
pval[i,j,3,k]=t.test(data[,i,j,1,k][1:n],data[,i,j,4,k][1:n])$p.value
}
}
}
for(i in 1:10){
for(j in 1:4){
for(m in 1:5){
pvalquart[i,j,1,m]=quantile(pval[i,j,1,],probs=seq(0,1,0.25))[m]
pvalquart[i,j,2,m]=quantile(pval[i,j,2,],probs=seq(0,1,0.25))[m]
pvalquart[i,j,3,m]=quantile(pval[i,j,3,],probs=seq(0,1,0.25))[m]
}}}
pval
pvalquart
par(mfrow=c(3,5))
#NvsN
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,1]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="0%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,2]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="25%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,3]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="50%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,4]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="75%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,1,5]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="100%")
#NvsLN
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,1]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="0%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,2]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="25%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,3]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="50%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,4]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="75%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,2,5]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="100%")
#NvsUnif
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,1]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="0%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,2]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="25%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,3]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="50%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,4]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="75%")
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalquart[,,3,5]
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "pvalue",main="100%")
Je vais désormais faire une comparaison des proportions de rejets du risque alpha dans chaque cas de figure pour vraiment évaluer ce risque de ne pas être normal dans les deux groupes (sous un mois max).
Bonjour, voici la suite du code qui permet d'avoir la puissance en fonction des distributions des variables :
On ressent une perte de puissance assez forte pour les distributions Normales croisées aux log-normales et une perte de puissance moyenne pour les distributions Normales croisées aux distributions uniformes.
- Code:
pvalsig=array(dim=c(10,4,3))
for(i in 1:10){
for(j in 1:4){
pvalsig[i,j,1]=sum(pval[i,j,1,]<=0.05)/length(pval[i,j,1,])
pvalsig[i,j,2]=sum(pval[i,j,2,]<=0.05)/length(pval[i,j,2,])
pvalsig[i,j,3]=sum(pval[i,j,3,]<=0.05)/length(pval[i,j,3,])
}}
par(mfrow=c(1,3))
#NvsN
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalsig[,,1]
persp(x, y, z, theta = 120, phi = 30, expand = 0.5, col = "SteelBlue1",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "power",main="Normal vs Normal distribution")
#NvsLN
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalsig[,,2]
persp(x, y, z, theta = 120, phi = 30, expand = 0.5, col = "orange",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "power",main="Normal vs Log-Normal distribution")
#NvsUnif
x=seq(10,100,10)
y=seq(2,5,1)
z=pvalsig[,,3]
persp(x, y, z, theta = 120, phi = 30, expand = 0.5, col = "tomato",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "sample size", ylab = "variance", zlab = "power",main="Normal vs Uniform distribution")
On ressent une perte de puissance assez forte pour les distributions Normales croisées aux log-normales et une perte de puissance moyenne pour les distributions Normales croisées aux distributions uniformes.
Ce qu'on peut se dire lorsqu'on a deux groupes dont les distributions sont différentes, c'est "en quoi la distribution impacte la moyenne et la variance du groupe non normal ?".
Pour une moyenne donnée, une log-normale va avoir une distribution plus variable qu'une normale.
De même pour une loi uniforme, la variabilité des données sera plus grande qu'une normale.
Donc le Student est impacté et on est sensé perdre de la puissance.
Pour une moyenne donnée, une log-normale va avoir une distribution plus variable qu'une normale.
De même pour une loi uniforme, la variabilité des données sera plus grande qu'une normale.
Donc le Student est impacté et on est sensé perdre de la puissance.
Bonjour,
Ne faites pas attention à mes dernier posts, je pense que j'étais hors-sujet.
J'ai fait une dernière simulation qui semble montrer qu'il n'y a pas de différence entre les deux cas de figures suivants :
- 2 groupes simulés d'une loi normale de taille (n=5:100) pour des variances de 1:4 et une moyenne nulle
- 2 groupes piochés aléatoirement d'une loi normale de taille (N=10:200) pour des variances de 1:4 et une moyenne nulle
et ce pour différentes tailles d'échantillon (N=10:200)
J'ai appliqué un test de Student afin d'évaluer le risque alpha des deux scénarios (la puissance a été laissée de côté, je l'admet).
Il est conseillé de diviser l'objet "nsim" par 10 si on ne veut pas avoir une simulation trop longue (~5h sur du 4Go RAM)
Les médianes de risque alpha sont, pour toutes tailles d'échantillon et pour toutes variances simulées, très proches de 5%.
Conclusion : on a des indices qui nous indiquent que le test de Student ne semble pas voir son risque alpha varier selon les deux cas de figures.
Bien à vous
Ne faites pas attention à mes dernier posts, je pense que j'étais hors-sujet.
J'ai fait une dernière simulation qui semble montrer qu'il n'y a pas de différence entre les deux cas de figures suivants :
- 2 groupes simulés d'une loi normale de taille (n=5:100) pour des variances de 1:4 et une moyenne nulle
- 2 groupes piochés aléatoirement d'une loi normale de taille (N=10:200) pour des variances de 1:4 et une moyenne nulle
et ce pour différentes tailles d'échantillon (N=10:200)
J'ai appliqué un test de Student afin d'évaluer le risque alpha des deux scénarios (la puissance a été laissée de côté, je l'admet).
Il est conseillé de diviser l'objet "nsim" par 10 si on ne veut pas avoir une simulation trop longue (~5h sur du 4Go RAM)
- Code:
##################################################
################### Simulation ###################
##################################################
###Est-ce que ce sont les échantillons restreints aux différents groupes
###qui doivent suivre une loi normale ou l'échantillon global ?
#[X,,,]=simulation n from 1 to nsim
#[,X,,]="g for 1", "G for 2"
#[,,X,]=variance from 1 to 4
#[,,,X]=sample size from 5 to 100
nsim=1000000
matp=array(dim=c(nsim,2,4,5))
n=c(5,10,20,50,100)
for(i in 1:nsim){
for(k in 1:4){
for(o in 1:5){
G=rnorm(n[o]*2,0,k)
m=matrix(c(G,seq(1:(n[o]*2))),n[o]*2,2)
g1=rnorm(n[o],0,k)
g2=rnorm(n[o],0,k)
G1=m[c(1:n[o]),1]
G2=m[c((n[o]+1):(n[o]*2)),1]
mean(g1);mean(g2);mean(G1);mean(G2)
var(g1);var(g2);var(G1);var(G2)
mean(g1)-mean(g2)
mean(G1)-mean(G2)
matp[i,1,k,o]=t.test(g1,g2)$p.value
matp[i,2,k,o]=t.test(G1,G2)$p.value
}
}
}
#alpha risk in each group
matg=matrix(,4,5)
matG=matrix(,4,5)
for(i in 1:4){
for(j in 1:5){
matg[i,j]=median(matp[,1,i,j])
matG[i,j]=median(matp[,2,i,j])}}
matg;matG
#alpha risk difference
mattdiff=matp[,1,,]-matp[,2,,]
mat=matrix(,4,5)
for(i in 1:4){
for(j in 1:5){mat[i,j]=median(mattdiff[,i,j])}}
mat
Les médianes de risque alpha sont, pour toutes tailles d'échantillon et pour toutes variances simulées, très proches de 5%.
Conclusion : on a des indices qui nous indiquent que le test de Student ne semble pas voir son risque alpha varier selon les deux cas de figures.
Bien à vous
Sujets similaires
» variance inter et intra groupe avec statistica
» evaluer la normalité d'une distribution... par groupe ?
» nombre de sujets par groupe pour ANOVA
» ANOVA avec effectifs de groupe inégaux
» ANOVA inter-groupe à mesures répétées à un facteur à 2 niv.
» evaluer la normalité d'une distribution... par groupe ?
» nombre de sujets par groupe pour ANOVA
» ANOVA avec effectifs de groupe inégaux
» ANOVA inter-groupe à mesures répétées à un facteur à 2 niv.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|