Calcul de la puissance et du nombre de sujets nécessaires

Comme je l’expliquais dans l’article d’introduction à la puissance statistique, cette notion est généralement liée à la problématique du calcul du nombre d’unités expérimentales, ou nombre de sujets nécessaires. En effet, dans de nombreux domaines d’étude, notamment en recherche clinique ou en expérimentation animale, il n’est ni éthiquement, ni financièrement, acceptable de gâcher les unités expérimentales.

Prérequis

Pour tirer pleinement profit de cet article, je vous recommande de consulter, au préalable,  les deux articles suivants :

Contexte du calcul de puissance / nombre de sujets nécessaires

En pratique, on rencontre deux situations. Dans la première, le nombre maximal d’unités expérimentales est connu à l’avance, car limité par une contrainte financière, ou logistique. Dans ce cas-là, on va chercher à évaluer la puissance théorique du test statistique que l’on souhaite employer, compte tenu de ce nombre limité d’unités expérimentales, et des autres paramètres qui l’influence. Dans le cadre d’une comparaison de deux moyennes il s’agit de :

  • la différence de moyenne attendue (delta)
  • l’écart type attendu des données (sd)
  • le risque alpha

Dans la seconde situation, on cherche, au contraire, à évaluer le nombre d’unités expérimentales qu’il est nécessaire d’inclure, compte tenu des paramètres cités précédemment (delta, sd, alpha), mais aussi surtout en fixant une puissance théorique. Autrement dit, en fixant un niveau de probabilité que le test soit significatif. Cette puissance est généralement fixée entre 80 et 90%.

Quelles fonctions pour le calcul de puissance et du nombre de sujets nécessaires ?

Les fonctions du package `stat`

Le package `stat` (chargé par défaut à chaque ouverture de session – vous n’avez donc pas besoin de le charger spécifiquement) contient trois fonctions dédiées au calcul de puissance et au calcul du nombre de sujets nécessaires :

  • `power.t.test()` : dans le cadre de la comparaison de deux moyennes par un test t
  • `power.p.test()` : dans le cadre de la comparaison de deux pourcentages
  • `power.anova.test()`: dans le cadre de la comparaison de plusieurs moyennes avec une anova

Les fonctions du package `pwr`

Si les trois fonctions ci-dessus ne couvrent pas votre besoin, je vous recommande de consulter le package pwr qui contient des fonctions pour les principaux tests d’hypothèse. Voici la liste :

Ce package utilise la notion d’effect size

Vous trouverez la vignette (mode d’emploi de ce package ici ).

Les autres packages dédiés au calcul de puissance ou du nombre de sujets nécessaires

Il existe aussi de nombreux packages, disponibles sur CRAN, dédiées à l’analyse de puissance et au calcul du nombre de sujets nécessaires :

Et encore :

Exemple d'un calcul de puissance

Imaginons qu’une expérimentation ait pour but d’évaluer l’efficacité d’un traitement dans la baisse de la pression artérielle. Pour cela, des patients sont randomisés dans un groupe placebo et dans un groupe de traitement. Les paramètres attendus sont :

  • 20 patients dans chaque groupe
  • une différence attendue (delta) entre les moyennes des pressions artérielles dans les deux groupes = 5mmHg
  • l’écart type attendu des mesures de pression partielle, identique dans les deux groupe (sd) = 10mmH
  • un risque alpha fixé à 5%

Pour réaliser ce calcul, nous allons utiliser la fonction power.t.test().

Pour plus de détails sur l’utilisation de cette fonction, vous pouvez consulter l’aide :

Il suffit alors d’entrer en argument :

  • n = 20
  • delta = 5
  • sd = 10
  • sig.level (c’est alpha) = 0.05

La fonction power.t.test calcule le paramètre manquant, ici la puissance :

power.t.test(20,delta=5,sd=10,sig.level=0.05)

    ## 
    ##      Two-sample t test power calculation 
    ## 
    ##               n = 20
    ##           delta = 5
    ##              sd = 10
    ##       sig.level = 0.05
    ##           power = 0.3377084
    ##     alternative = two.sided
    ## 
    ## NOTE: n is number in *each* group 

Le calcul de puissance nous indique que la probabilité de mettre en évidence une différence significative entre les deux moyennes, en employant un test t bilatéral, est théoriquement de 34%. C’est trop peu, pour envisager l’expérimentation tel quel.

Remarque : Cet exemple est tiré du livre *ample Size Table for clinical Studies (3ème édition) de David Machin et al.

Exemple d'un calcul du nombre de sujets nécessaires pour atteindre une puissance donnée

Imaginons à présent, que l’on souhaite, toujours avec le même exemple, calculer le nombre de sujets nécessaires pour atteindre une puissance de 80%.

Il suffit alors d’indiquer la puissance désirée et de conserver les autres paramètres (à l’exception de n, évidemment) :

power.t.test(power=0.8,delta=5,sd=10,sig.level=0.05)

    ## 
    ##      Two-sample t test power calculation 
    ## 
    ##               n = 63.76576
    ##           delta = 5
    ##              sd = 10
    ##       sig.level = 0.05
    ##           power = 0.8
    ##     alternative = two.sided
    ## 
    ## NOTE: n is number in *each* group 

Le résultat du calcul montre que 64 patients dans chaque groupe seraient nécessaires pour atteindre une probabilité de 80% de mettre en évidence une différence statistiquement significative entre les deux moyennes si :

  • delta = 5
  • sd=10
  • alpha=0.05.

Pour atteindre 90% de puissance, il serait nécessaire d’inclure 85 patients dans chaque groupe : 

power.t.test(power=0.9,delta=5,sd=10,sig.level=0.05)

    ## 
    ##      Two-sample t test power calculation 
    ## 
    ##               n = 85.03129
    ##           delta = 5
    ##              sd = 10
    ##       sig.level = 0.05
    ##           power = 0.9
    ##     alternative = two.sided
    ## 
    ## NOTE: n is number in *each* group 

Pour aller plus loin :

Si le calcul de puissance vous intéresse, je vous recommande l’excellent livre “Sample Size Table for clinical Studies (3ème édition) de David Machin et al” :

sample size tables

Et vous, quelles fonctions ou quels packages utilisez-vous pour réaliser vos calculs de puissance et de nombre de sujets nécessaires ? Indiquez-les moi en commentaire.

Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee 🙏

Crédits photo :  par OpenClipart-Vectors de Pixabay

7 réponses

  1. Bonjour, Claire.
    Merci pour l’article.
    Dans l’exemple, sur quelle base le sd a t-il été choisi?
    Plus généralement, dans le cas d’utilisation de power.t.test(), sur quelle base choisi t-on le sd?
    Merci
    Coliasso

    1. Bonjour,

      en principe le sd est choisi sur la base d’une connaissance préalable, soit à partir de la littérature, soit à partir d’une observation faite sur une expérience pilote.
      Bonne continuation

  2. Bonjour Claire,
    Merci pour cet intéressant article, je cherchais à évaluer le nombre de sujet nécessaire en y incluant aussi la prévalence. J’ai regardé la littérature sans succès.
    Merci d’avance pour tes éclaircissements
    Cordialement
    Sidy

  3. Bonjour,
    Je souhaite comparer l’effet d’un traitement sur 2 populations avec comme critere de jugement une variable quanti discrete (type echelle EVA douleur)
    Comment calculer l’effectif dans ce cas la ?
    Help !!!
    Merci
    J

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bonjour !

vous venez souvent ?

Identifiez-vous pour avoir accès à toutes les fontionnalités !

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.