Voici une autre illustration: il s'agit des questions de l'examen de travaux pratiques de septembre 2012.
Il est clair que, dans les situations où on souhaite tester si deux échantillons proviennent de deux populations normales de même moyenne et de même variance, la puissance du test de détection dépendra de l'écart entre les deux populations. Si l'écart est nul (c'est-à-dire, si l'hypothèse nulle H0: μ1=μ2 est vraie), le test ne devrait idéalement détecter aucune différence. Malheureusement, les tests n'étant pas parfaits, le test commettra des erreurs de type I, et donc déclarera erronnément la différence observée entre les échantillons comme étant significative dans une proportion de cas approximativement égale à α. Si, par contre, l'écart entre les deux moyennes des distributions n'est pas nul (μ1 ≠ μ2), le test déclarera à juste titre qu'il y a une différence entre les distributions dans une proportion de cas qui correspond à la puissance et qui vaut P=1-β. Bien entendu, plus l'écart sera important et plus la puissance augmentera. Attention que l'écart entre les moyennes est un écart relatif: un même écart pourrait être significatif si les données varient beaucoup (σ >>), et ne pas l'être si elles varient peu (σ <<). Pour cette raison, on exprimera l'écart en "nombre d de déviations standards", ce qui revient à écrire que: d = |μ1-μ2|/σ. Ces précisions étant apportées, voici l'énoncé du problème de l'examen de septembre 2012:
Les tests de comparaisons de deux groupes ont une puissance qui dépend d'une part de l'effectif des groupes (n1, n2), et d'autre part de la différence moyenne standardisée entre les groupes (d = |μ1-μ2|/σ). Afin de mettre en évidence la relation entre puissance (au seuil α = 0.05) et différence moyenne standardisée, nous allons effectuer la simulation suivante en gardant les effectifs constants (par exemple, n1=n2=10). On va faire varier d de 0.0 à 2.0 par pas de 0.1 (remarque : μ2 = μ1 + σ*d), et, pour chaque situation, simuler 1000 fois les 2 échantillons, calculer la statistique correspondant au test de l'hypothèse nulle H0: μ1=μ2, et comptabiliser la proportion de situations où le test détecte une différence.
Le code est donc le suivant:
n1<-10
n2<-10
mu1<-0
sigma<-1
power<-vector(length=11)
dlist<-seq(0.0,2.0,0.1)
i<-0
for (d in dlist) {
i<-i+1
c<-0
mu2<-mu1+sigma*d
for (r in 1:1000){
s1<-rnorm(n1,mu1,sigma)
s2<-rnorm(n2,mu2,sigma)
t<-t.test(s1,s2,var.equal=TRUE)
if (t$p.value<0.05) {c<-c+1}
}
power[i]<-1.0*c/1000
}
plot(dlist,power,type="l")
Le raisonnement est similaire à celui de la question précédente: on garde cette fois la différence standardisée entre les moyennes constante (arbitrairement, on a choisi μ2 = μ1 + σ*1.0, ce qui revient à prendre une valeur de d = 1.0 dans l'exemple précédent. Il est clair que si on choisit une autre valeur de d, les puissances obtenues vont différer de celles présentées ici). On fait cette fois varier les tailles d'échantillons (on choisit toutefois de garder n1=n2. On pourrait évidemment imaginer de faire les calculs pour des valeurs différentes des deux effectifs). Le programme est similaire au programme de la question 1:
d<-1.0
sigma<-1
mu1<-0
mu2<-mu1+d*sigma
power<-vector(length=10)
nlist<-seq(2,20,2)
i<-0
for (n in nlist){
i<-i+1
c<-0
for (r in 1:1000){
s1<-rnorm(n,mu1,sigma)
s2<-rnorm(n,mu2,sigma)
t<-t.test(s1,s2,var.equal=TRUE)
if(t$p.value<0.05) {c<-c+1}
}
power[i]<-1.0*c/1000
}
plot(nlist,power,type="l")
Le code est très similaire à celui de la question 1. La boucle externe est cette fois sur les tailles d'échantillons (n), et la boucle interne reste la boucle sur les simulations (r).