Calcul du nombre de sujets nécessaires - compléments

Calcul du nombre de sujets nécessaires

Après la publication de mon article sur la détermination du nombre minimal d’unités expérimentales pour une ANOVA, (👉 cliquez ici pour le consulter) j’ai reçu de nombreux commentaires et  questions. J’ai alors écrit ce second article afin de partager des éléments complémentaires sur cette thématique du calcul du nombre de sujets nécessaires.

Table des matières

Les logiciels et applications gratuits pour calculer la le nombre de sujets nécessaires (NSN)

Le logiciel GPower

Le logiciel GPower permet de réaliser des calculs du nombre de sujets nécessaires ou de puissance, pour les principaux tests d’hypothèses et les principaux modèles de régression. 

Je l’utilise très fréquemment pour vérifier le nombre de patients à inclure dans les essais de recherche clinique que j’étudie au comité de protection des personnes. Et pour avoir comparé ses résultats avec ceux obtenus avec d’autres logiciels ou application (dont des packages R), dans une multitude de situations, j’ai une grande confiance dans ce logiciel.

L’interface est un peu old-school, et un peu petite, mais le logiciel fait largement le job ! 

Vous pourrez le télécharger là 👉 https://www.psychologie.hhu.de/arbeitsgruppen/allgemeine-psychologie-und-arbeitspsychologie/gpower

Ici un calcul dans le cadre d’une comparaison de 2 moyennes :

Sur la page de téléchargement du logiciel 👉 https://www.psychologie.hhu.de/arbeitsgruppen/allgemeine-psychologie-und-arbeitspsychologie/gpower) vous trouverez aussi un mode d’emploi avec des exemples dans pas mal de situations courantes, je vous conseille de le télécharger aussi et de le consulter.

Il existe également tout une série de tutoriels vidéos sur la chaîne youtube d’Alexander Swan , mais je ne les ai jamais visionnés, je ne peux donc vous dire ce qu’ils valent.

L’application biostaTGV

Le site biostaTGV propose un calculateur du nombre de sujets nécessaire en ligne, pour quelques situations simples. Les calculs sont réalisés via R. Le projet est très sérieux, il est notamment soutenu par le réseau sentinelle et l’Inserm. J’ai souvent comparé les résultats avec ceux de Gpower, ils sont très similaires.

Ici un exemple de calcul dans le cadre d’une comparaison de 2 moyennes observées :

Comme vous pouvez le voir, les résultats obtenus (N=84) sont très proches de ceux obtenus avec G Power (N=86).

Les calculateurs en ligne

GPower et BiostaTGV couvrent les situations les plus fréquentes, mais peut être pas toutes celles dont vous aurez besoin. Si vous ne maîtriser pas l’utilisation du logiciel R , vous pouvez essayer de rechercher un calculateur en ligne en faisant une requête en anglais dans google .

Par exemple ”sample size calculator for non inferiority trial

Comme ce n’est pas toujours évident d’avoir une pleine confiance dans les résultats, je vous suggère d’en utiliser plusieurs et de comparer les résultats obtenus !

Les packages R pour le calcul du nombre de sujets nécessaires

À ma connaissance, le package le plus complet est le package TrialSize, qui est très orientée recherche clinique. Vous pourrez avoir une idée de son contenu en consultant la liste des fonctions du manuel de référence 👉 https://cran.r-project.org/web/packages/TrialSize/TrialSize.pdf .

Voici un court extrait :

Pour des besoins plus simple il y a le package pwr (que j’ai utilisé dans le premier article) qui se limite aux tests les plus courants : comparaison de moyennes, comparaison de proportions, anova. Voici ce que dit la doc : 

This package contains functions for basic power calculations using effect sizes and notations from Cohen (1988) :

  • pwr.p.test: test for one proportion (ES=h)
  • pwr.2p.test: test for two proportions (ES=h)
  • pwr.2p2n.test: test for two proportions (ES=h, unequal sample sizes)
  • pwr.t.test: one sample and two samples (equal sizes) t tests for means (ES=d)
  • pwr.t2n.test: two samples (different sizes) t test for means (ES=d)
  • pwr.anova.test: test for one-way balanced anova (ES=f)
  • pwr.r.test: correlation test (ES=r)
  • pwr.chisq.test: chi-squared test (ES=w)
  • pwr.f2.test: test for the general linear model (ES=f2)
  • ES.h: computing effect size h for proportions tests
  • ES.w1: computing effect size w for the goodness of fit chi-squared test
  • ES.w2: computing effect size w for the association chi-squared test cohen.
  • ES: computing effect sizes for all the previous tests corresponding to conventional effect sizes (small, medium, large)

Et si vous avez des besoins ultra spécifiques, je vous recommande d’aller sur la page de packages de Cran 👉 https://cran.r-project.org/web/packages/available_packages_by_name.html et de faire une recherche (CTRL + F) avec le mot clé “power”, vous trouverez très certainement un package qui répondra à ces besoins.

Les livres pour le calcul du nombre de sujets nécessaires

Je connais principalement 2 ouvrages, orientés études cliniques :

  • Samples size table for Clinical, Laboratory and Epidemiology studies de David Machin
  • Sample size Calculation in Clinical research de ChulAhn, Moonseoung Heo , et al

Le package TrialSize a été développé par une partie des auteurs de ce livre, et couvre une grande partie des situations qui y sont décrites.

Prendre en compte les perdus de vue (biais d’attrition) dans le calcul du nombre de sujets nécessaires

En recherche clinique, il est fréquent d’anticiper la survenue d’éventuels perdus de vue (on appelle cela le biais d’attrition) en les intégrant dans le calcul du nombre de sujets nécessaires.

Le principe est de faire un calcul initial, puis de diviser le nombre obtenu par 1- le pourcentage de perdus de vue attendus.

Par exemple, si le calcul initial a conduit à N=340 et que l’on s’attend à 10% de perdus de vue, alors le nombre de patients à réellement inclure est :

\[ N’ = \frac{N}{1-%PV} = \frac{340}{1-0.1} = 378\]

Évaluer l'impact de la variation de plusieurs paramètres sur le calcul du nombre de sujets nécessaires

Par exemple, dans la situation du calcul du nombre de sujets ( d’unités expérimentales) dans le cadre d’une ANOVA (voir le premier article), on pourrait souhaiter évaluer comment évolue ce nombre lorsque l’effect size, le nombre de groupes et la puissance, varient ensemble.

Pour cela, nous pouvons:
1. réaliser un data frame contenant toutes les combinaisons de ces paramètres
2. faire les calculs pour chaque combinaison
3. représenter graphiquement les résultats, en utilisant les facets de ggplot2

Les seuils d’effect size f classiquement employés pour l’ANOVA (voir https://imaging.mrc-cbu.cam.ac.uk/statswiki/FAQ/effectSize) sont :

  • small : 0.1, 
  • medium : 0.25,
  • large : 0.4)

 

Dans l’exemple suivant, je vais faire varier ce paramètre entre 0.1 et 0.4 par pas de 0.1.
Je vais également faire varier le nombre de groupes entre 3 et 5, et faire varier la puissance entre 0.7 et 0.95 par pas de 0.05.

#Charger le package tidyverse. 
library(tidyverse)

# Créer une séquence de valeurs de 0.1 à 0.6 par pas de 0.1. Ces valeurs représentent l'effect size
f = seq(0.1, 0.4, by=0.1)

# Créer une séquence de valeurs de 3 à 6. Ces valeurs représentent la variable le nombre de groupes.
k= c(3:5)

# Créer une séquence de valeurs de 0.7 à 0.95 par pas de 0.05. Ces valeurs représentent la puissance du test.
power = seq(0.7, 0.95, by=0.05)

# Utiliser la fonction expand_grid du package tidyverse pour créer un data.frame avec toutes les combinaisons possibles de 'f', 'k', et 'power'.
mydf <- expand_grid(f=f, k=k, power=power)

# Afficher les 20 premières lignes du data.frame créé. 
# %>% est l'opérateur de pipe qui prend le résultat de la gauche (mydf) et l'utilise comme premier argument de la fonction suivante (slice_head).
# slice_head() est une fonction de dplyr qui sélectionne les premières lignes d'un data.frame.
mydf %>% 
  slice_head(n=20)


    # A tibble: 20 × 3
           f     k power
       <dbl> <int> <dbl>
     1   0.1     3  0.7 
     2   0.1     3  0.75
     3   0.1     3  0.8 
     4   0.1     3  0.85
     5   0.1     3  0.9 
     6   0.1     3  0.95
     7   0.1     4  0.7 
     8   0.1     4  0.75
     9   0.1     4  0.8 
    10   0.1     4  0.85
    11   0.1     4  0.9 
    12   0.1     4  0.95
    13   0.1     5  0.7 
    14   0.1     5  0.75
    15   0.1     5  0.8 
    16   0.1     5  0.85
    17   0.1     5  0.9 
    18   0.1     5  0.95
    19   0.2     3  0.7 
    20   0.2     3  0.75

# Application de la fonction pwr.anova.test à chaque ligne de mydf afin de calculer le nombre de sujets nécessaires pour chaque combinaison
library(pwr)
mydf <- mydf %>%
  rowwise() %>%
  mutate(n = pwr.anova.test(k = k, f = f, sig.level = 0.05, power = power)$n)

# Affichage des 10 premières lignes de mydf
mydf %>% 
  slice_head(n=10)    
# A tibble: 72 × 4
    # Rowwise: 
           f     k power     n
       <dbl> <int> <dbl> <dbl>
     1   0.1     3  0.7   258.
     2   0.1     3  0.75  287.
     3   0.1     3  0.8   322.
     4   0.1     3  0.85  365.
     5   0.1     3  0.9   423.
     6   0.1     3  0.95  516.
     7   0.1     4  0.7   221.
     8   0.1     4  0.75  245.
     9   0.1     4  0.8   274.
    10   0.1     4  0.85  309.
    
# visualisation

library(see) # pour utiliser la fonction   scale_colour_material() et utiliser de + jolies couleurs
ggplot(mydf, aes(x=n, y=power, colour=as.factor(k)))+
         geom_point()+
         facet_wrap(~paste0("f=", f), 
                    scales="free_x")+
        geom_line()+
      scale_colour_material()
     
Calcul du nombre d'unités expérimentales nécessaires en faisant varier plusieurs paramètres

Conclusion

J’espère que ce complément d’informations vous permettra de réaliser plus facilement vos calculs du nombre de sujets (ou d’unités expérimentales) nécessaires, afin de concevoir vos expérimentations de façon plus optimale. 

Et si vous pensez que j’ai oublié quelques chose, ✍️ écrivez un commentaire 👇👇👇 pour le partager avec toutes les lectrices et lecteurs du blog 🙏

4 réponses

  1. Bonjour Madame
    J’utilise ce chemin pour vous contacter.
    Tout d’abord j’aime bien lire vos articles parfois bien techniques mais toujours d’appoint…me procurant de belles découvertes découlant du travail d’une passionnée de toute évidence.
    Je suis retraité, un autodidacte en dilettante dans l’analyse de données, le plus souvent descriptives, puisant dans l’information statistique publique de l’administration gouvernementale et municipale.
    Je fais alors les liens avec tous les tests statistiques pour m’approprier la théorie sous jacente et les calculs mathématiques les appuyant.
    J’utilise beaucoup le logiciel R et Rcmdr et Factominer et les fonctions statistiques d’Excel…. et beaucoup d lectures spécialisées.
    Jai découvert récemment le logiciel Jamovi que j’aime bien par ailleurs et permettant la visualisation rapide en modifiant plus facilement les requêtes.
    Que pensez vous de ce logiciel …
    Salutations du Québec…et continuez votre beau travail.

  2. Bonjour Claire,
    Merci pour vos posts que je trouve clairs, agréables à lire et que je conseille. Concernant le calcul du nombre de sujets, j’aimerais ajouter quelques commentaires.
    Je dois d’abord préciser que mon domaine d’activité actuel concerne la recherche animale où la réduction du nombre d’animaux est cruciale.
    Pour les ANOVAs, beaucoup de chercheurs font le calcul en ne considérant que des ANOVAs à une voie, alors que des ANOVAs à plusieurs voies avec interactions seraient plus justifiées. Par exemple, avec un plan 2×2, un f à 0.4 (correspondant grossièrement à un d de Cohen à 0.8), une puissance à 80% et un risque alpha à 0.05, le traitement par une ANOVA dite omnibus [une voie, 4 groupes] nécessite 76 sujets, alors que si on prend en compte l’interaction dans une ANOVA à deux voies, il suffit de 52 sujets. L’économie est de 32 %. J’anticipe peut-être sur votre prochain post.
    Quelques précisions pour vos lecteurs. Dès qu’on multiplie les voies, il faut faire attention aux degrés de liberté et avec R au type de carrés (sujet que vous avez évoqué à propos des ANOVAs, je crois). Pour GPower, le site de Karl Wuensch est excellent https://core.ecu.edu/wuenschk/StatsLessons.htm Chercher dans la page Power Analysis, en particulier le calcul de puissance pour les ANOVAs (calcul du nombre de degrés de liberté et type de carrés). Il complète bien le tuto de GPower.
    Pour les analyses de survie le logiciel PS Power and Sample Size de l’université Vanderbilt (https://biostat.app.vumc.org/wiki/Main/PowerSampleSize) est simple. Choisir l’onglet survival.
    Concernant GPower, je ne comprends pas bien ce que signifie old-school. Dans ce cas, que dire de R que j’adore, mais qui me fait parfois penser à mes débuts en Fortran 80 colonnes, ou au C Kernighan et Ritchie ! Ce qui compte, c’est l’absence de bugs, ce qui n’est pas toujours le cas des jolies interfaces “modernes”.
    Continuez, vos qualités de pédagogue sont précieuses.
    Xav
    PS. Avez-vous l’intention de faire un ou deux tutos sur les plans d’expérience ? R doit bien avoir des procédures dédiées.

    1. Bonjour Xavier,
      Merci beaucoup pour ce complément du complément, en particulier pour les deux liens précieux !

Laisser un commentaire

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

Vous souhaitez vous former à R, ou aux statistiques ?

Retrouver le planning et les programmes de  mes formations ici  👇👇👇 

Vous avez besoin d'un assitance pour analyser vos données ?

Retrouver mes propositions de services ici  👇👇👇 

Vous souhaitez soutenir mon travail ?​

C’est possible en faisant un don  sur la page Tipeee du blog  👇👇👇

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.