Analyse de puissance en R
Vue d'ensemble
L'analyse de la puissance est un aspect important de la conception expérimentale. Elle permet de déterminer la taille de l'échantillon nécessaire pour détecter un effet d'une taille donnée avec un degré de confiance donné. Inversement, elle permet de déterminer la probabilité de détecter un effet d'une taille donnée avec un niveau de confiance donné, sous contrainte de taille d'échantillon. Si la probabilité est inacceptablement faible, il serait sage de modifier ou d'abandonner l'expérience.
Les quatre quantités suivantes sont intimement liées :
- taille de l'échantillon
- taille de l'effet
- Niveau de signification = P(erreur de type I) = probabilité de trouver un effet qui n'existe pas
- puissance = 1 - P(erreur de type II) = probabilité de trouver un effet existant
Si l'on dispose de trois éléments quelconques, on peut déterminer le quatrième.
Analyse de puissance en R
Le paquet pwr, développé par Stéphane Champely, met en œuvre l'analyse de puissance telle qu'elle est décrite par Cohen (!988)</a >. Certaines des fonctions les plus importantes sont énumérées ci-dessous.
fonction | les calculs de puissance pour |
pwr.2p.test | deux proportions (n égal) |
pwr.2p2n.test | deux proportions (n inégaux) |
pwr.anova.test | ANOVA équilibrée à sens unique |
pwr.chisq.test | test du chi-carré |
pwr.f2.test | modèle linéaire général |
pwr.p.test | proportion (un échantillon) |
pwr.r.test | correlation |
pwr.t.test | Tests t (un échantillon, deux échantillons, appariés) |
pwr.t2n.test | Test t (deux échantillons avec n inégaux) |
Pour chacune de ces fonctions, vous entrez trois des quatre quantités (taille de l'effet, taille de l'échantillon, niveau de signification, puissance) et la quatrième est calculée.
Le niveau de signification est par défaut de 0,05. Par conséquent, pour calculer le niveau de signification, compte tenu de la taille de l'effet, de la taille de l'échantillon et de la puissance, utilisez l'option "sig.level=NULL".
La spécification d'une taille d'effet peut s'avérer une tâche ardue. Les formules ES et les suggestions de Cohen (basées sur la recherche en sciences sociales) sont présentées ci-dessous. Les suggestions de Cohen ne doivent être considérées que comme des lignes directrices très approximatives. Votre propre expérience en la matière doit être mise à profit.
(Pour explorer les intervalles de confiance et tirer des conclusions à partir d'échantillons, essayez ce cours interactif sur les fondements de l'inférence.
t-tests
Pour les tests t, utilisez les fonctions suivantes :
pwr.t.test(n = , d = , sig.level = , power = , type = c("two.sample", "one.sample", "paired"))</strong >
où n est la taille de l'échantillon, d est la taille de l'effet et le type indique un test t à deux échantillons, un test t à un échantillon ou un test t à deux échantillons. Si vous avez des tailles d'échantillon inégales, utilisez
pwr.t2n.test(n1 = , n2= , d = , sig.level =, power = )
où n1 et n2 sont les tailles des échantillons.
Pour les tests t, l'ampleur de l'effet est évaluée comme suit
Cohen suggère que des valeurs d de 0,2, 0,5 et 0,8 représentent respectivement des tailles d'effet petites, moyennes et grandes.
Vous pouvez spécifier alternative="two.sided", "less" ou "greater" pour indiquer un test bilatéral ou unilatéral. Un test à deux tailles est utilisé par défaut.
ANOVA
Pour une analyse de variance à sens unique, utilisez
pwr.anova.test(k = , n = , f = , sig.level = , power = )
où k est le nombre de groupes et n la taille de l'échantillon commun à chaque groupe.
Pour une ANOVA à sens unique, l'ampleur de l'effet est mesurée par f où
Cohen suggère que les valeurs f de 0,1, 0,25 et 0,4 représentent respectivement des tailles d'effet petites, moyennes et grandes.
Corrélations
Pour les coefficients de corrélation, utilisez
pwr.r.test(n = , r = , sig.level = , power = )
où n est la taille de l'échantillon et r la corrélation. Nous utilisons le coefficient de corrélation de la population comme mesure de l'ampleur de l'effet. Cohen suggère que les valeurs r de 0,1, 0,3 et 0,5 représentent respectivement des tailles d'effet petites, moyennes et grandes.
Modèles linéaires
Pour les modèles linéaires (par exemple, régression multiple), utilisez
pwr.f2.test(u =, v = , f2 = , sig.level = , power = )
où u et v sont les degrés de liberté du numérateur et du dénominateur. Nous utilisons f2 comme mesure de l'ampleur de l'effet.
La première formule est appropriée lorsque nous évaluons l'impact d'un ensemble de prédicteurs sur un résultat. La seconde formule est appropriée lorsque nous évaluons l'impact d'un ensemble de prédicteurs au-delà d'un deuxième ensemble de prédicteurs (ou covariables). Cohen suggère que les valeurs f2 de 0,02, 0,15 et 0,35 représentent des tailles d'effet petites, moyennes et grandes.
Tests de proportions
Lorsque vous comparez deux proportions, utilisez
pwr.2p.test(h = , n = , sig.level =, power = )
où h est la taille de l'effet et n la taille de l'échantillon commun à chaque groupe.
Cohen suggère que les valeurs h de 0,2, 0,5 et 0,8 représentent respectivement des tailles d'effet petites, moyennes et grandes.
Pour des n inégaux, utilisez
pwr.2p2n.test(h = , n1 = , n2 = , sig.level = , power = )
Pour tester une proportion unique, utilisez
pwr.p.test(h = , n = , sig.level = power = )
Pour les tests de proportion à deux échantillons et à un échantillon, vous pouvez spécifier alternative="two.sided", "less" ou "greater" pour indiquer un test bilatéral ou unilatéral. Un test à deux tailles est utilisé par défaut.
Tests du chi carré
Pour les tests du chi-carré, utilisez
pwr.chisq.test(w =, N = , df = , sig.level =, power = )
où w est la taille de l'effet, N la taille totale de l'échantillon et df les degrés de liberté. L'ampleur de l'effet w est définie comme suit
Cohen suggère que les valeurs w de 0,1, 0,3 et 0,5 représentent respectivement des tailles d'effet petites, moyennes et grandes.
Quelques exemples
library(pwr)
# For a one-way ANOVA comparing 5 groups, calculate the
# sample size needed in each group to obtain a power of
# 0.80, when the effect size is moderate (0.25) and a
# significance level of 0.05 is employed.
pwr.anova.test(k=5,f=.25,sig.level=.05,power=.8)
# What is the power of a one-tailed t-test, with a
# significance level of 0.01, 25 people in each group,
# and an effect size equal to 0.75?
pwr.t.test(n=25,d=0.75,sig.level=.01,alternative="greater")
# Using a two-tailed test proportions, and assuming a
# significance level of 0.01 and a common sample size of
# 30 for each proportion, what effect size can be detected
# with a power of .75?
pwr.2p.test(n=30,sig.level=0.01,power=0.75)
Création de diagrammes de puissance ou de taille d'échantillon
Les fonctions du paquet pwr peuvent être utilisées pour générer des graphiques de puissance et de taille d'échantillon.
# Plot sample size curves for detecting correlations of
# various sizes.
library(pwr)
# range of correlations
r <- seq(.1,.5,.01)
nr <- length(r)
# power values
p <- seq(.4,.9,.1)
np <- length(p)
# obtain sample sizes
samsize <- array(numeric(nr*np), dim=c(nr,np))
for (i in 1:np){
for (j in 1:nr){
result <- pwr.r.test(n = NULL, r = r[j],
sig.level = .05, power = p[i],
alternative = "two.sided")
samsize[j,i] <- ceiling(result$n)
}
}
# set up graph
xrange <- range(r)
yrange <- round(range(samsize))
colors <- rainbow(length(p))
plot(xrange, yrange, type="n",
xlab="Correlation Coefficient (r)",
ylab="Sample Size (n)" )
# add power curves
for (i in 1:np){
lines(r, samsize[,i], type="l", lwd=2, col=colors[i])
}
# add annotation (grid lines, title, legend)
abline(v=0, h=seq(0,yrange[2],50), lty=2, col="grey89")
abline(h=0, v=seq(xrange[1],xrange[2],.02), lty=2,
col="grey89")
title("Sample Size Estimation for Correlation Studies\n
Sig=0.05 (Two-tailed)")
legend("topright", title="Power",
as.character(p),
fill=colors)