Estimer l’intervalle de confiance d’une moyenne par bootstrap en une seule ligne de commande

intervalle de confiance

Il y a deux semaines, lorsque j’ai publié l’article sur comment faire des analyses statistiques descriptives de variables numériques avec le logiciel R j’ai parlé de l’intervalle de confiance “bootstrap percentile” de la moyenne. Et j’ai montré comment l’estimer avec le package boot. En réalité, je n’étais pas complètement satisfaite parce que je trouve quel’utilisation de ce package n’est pas totalement évidente lorsqu’on débute à la fois avec le logiciel R et avec les biostatistiques.

Du coup, j’ai cherché une méthode plus simple, et j’ai trouvé ! Dans le billet de cette semaine, je vais donc vous parler de la fonction slipper_ci du package slipper.

Ce package est développé par Jeff Leek de l’université Johns Hopkins, il est téléchargeable, via son GitHub. Jeff Leek est le co-fondateur avec Brian Caffo et Roger Peng de la spécialisation datascience sur la plateforme Coursera.

En dehors des biostatistiques, les bootstraps sont les petites lanières présentes de chaque coté des bottes, sur lesquelles on tire pour faire entrer le pied. Les slippers sont des chaussures sans lacets (ou chaussons), faciles à enfiler ! Le nom du package est donc un clin d’oeil !

Le problème de l’intervalle de confiance

Dans mon précédent article, je disais que lorsqu’il existe un défaut manifeste de normalité, notamment d’asymétrie (skewness), l’estimation de l’intervalle de confiance de la moyenne par la formule classique, qui fait appel à la loi de Student.

$$ IC_{\bar{x}}^{95\%} = [\bar{x} – t_{97.5\%}^{n-1} \;\ast sem \; ;\;\bar{x} + t_{97.5\%}^{n-1} \;\ast sem ] $$

 

ou à la loi Normale (lorsque N>30 en théorie),

$$ IC_{\bar{x}}^{95\%} = [\bar{x} – 1.96\;\ast sem \; ;\;\bar{x} + 1.96\;\ast sem ] $$

 

peut conduire à un intervalle biaisé. J’ajoute aujourd’hui que cela est d’autant plus vrai que la taille de l’échantillon est faible.

Qu’est ce que ça veut dire un intervalle de confiance biaisé ?

Tout d’abord, un petit rappel sur la définition de l’intervalle de confiance. Lorsque l’on décrit des données numériques, on estime généralement la moyenne arithmétique et on l’accompagne très fréquemment de son intervalle de confiance à 95%. Il s’agit d’une plage de valeurs ayant une probabilité (théorique) de 0.95 de contenir la vraie moyenne (celle de la population).

Un intervalle de confiance biaisé est une étendue de valeurs qui a:

  • une probabilité inférieure à celle attendue, de contenir la vraie moyenne.
  • et/ ou une erreur de couverture à gauche et à droite qui n’est pas symétrique. En théorie la probabilité que la borne supérieure (de l’intervalle de confiance à 95% de la moyenne) ne soit pas assez élevée pour couvrir la vraie moyenne est de 2.5%. De même la probabilité théorique que la borne inférieure n’aille pas assez loin à gauche est de 2.5%. Lorsque l’intervalle de confiance est biaisé on peut avoir une probabilité de 9% à droite et de 1% à gauche, ou inversement.

C’est pourquoi, dans mon article j’avais expliqué la technique du “bootstrap percentile” pour estimer l’intervalle de confiance d’une moyenne.

L’intervalle de confiance “bootstrap percentile”

Le principe du bootstrap est de générer un grand nombre d’échantillons (par exemple 1000), de la même taille que l’échantillon observé, en utilisant les valeurs qui le constituent. Si l’échantillon observé contient N valeurs, alors chaque échantillon bootstrap est généré en tirant avec remise N valeurs parmi les N valeurs observées. Cela signifie que dans un échantillon bootstrap donné, certaines valeurs apparaîtront plusieurs fois et que d’autre valeurs ne seront pas présentes du tout. Ensuite, chaque échantillon bootstrap est considéré séparément et la moyenne de chaque échantillon bootstrap est calculée.

L’approche “bootstrap percentile” consiste alors à ordonner ces 1000 moyennes, de la plus petite à la plus grande, et à estimer leurs percentiles 2.5 et 97.5. Le percentile 2.5 correspond au seuil en dessous duquel seules 2.5% des moyennes ordonnées sont présentes. De la même façon, le percentile 97.5 correspond au seuil au dessus duquel seules 2.5% des moyennes estimées ordonnées sont présentes. Ces valeurs constituent alors les bornes inférieure et supérieure de l’intervalle de confiance à 95%, selon l’approche dit ” bootsrap percentile”.

J’avais ensuite montré comment estimer cet intervalle de confiance “bootstrap percentile” en utilisant le package boot. Mais comme je l’ai dit en introduction, je n’étais pas complètement satisfaite parce que je trouve son utilisation un peu compliquée lorsqu’on débute.

J’ai donc cherché plus simple et j’ai trouvé la fonction slipper_ci du package slipper

Estimer l’intervalle de confiance d’une moyenne avec slipper_ci

Installation du package

 

 La fonction “slipper_ci””

La fonction slipper_ci a 5 arguments :

  • df : un tableau de données
  • expr : une fonction qui renvoit le paramètre qui va être bootstrapé
  • B : le nombre d’échantillons boostrap à générer (1000 c’est bien!)
  • lower : le percentile inférieur pour l’interval de confiance
  • upper : le percentile inférieur pour l’interval de confiance

Voici un exemple d’estimation de l’intervalle de confiance à 95% de la moyenne de la variable Sepal.Length du jeu de données iris.

 

En version tidyverse :

 

Pour estimer l’intervalle de confiance à 95% de la variable “Sepal.Length” mais uniquement pour l’espèce Setosa :

 

Pour aller plus loin

Si vous souhaitez plus d’information sur le bootstrap, je vous recommande le livre “An introduction to the bootstrap” de Bradley Efrob et Robert Tibshirani.

 

 

 

En conclusion

Certains pourraient dire qu’en cas d’asymétrie marquée, l’intervalle de confiance “bootstrap percentile” peut aussi être biaisé, et qu’en fait il faut utiliser l’intervalle “bias corrected and accelerated” ou BCa qui est renvoyé par la fonction boot, mais pas par slipper_ci.

Sur le principe c’est vrai, mais en pratique, si on utilise l’intervalle de confiance dans un contexte d’analyses descriptives, et que les analyses inférentielles ne vont pas uniquement reposer sur l’étude du chevauchement des intervalles, alors le l’approche “bootstrap percentile” par la fonction slipper_ci me semble un bon compromis car :

  • la fonction est simple d’utilisation,
  • cela ne nécessite qu’une seule ligne de commande pour obtenir l’intervalle de confiance
  • la fonction est tidyverse compatible, elle peut donc être intégréedans une série de commandes avec le chaînon %>%

Et vous, que pensez vous de cette fonction ? Allez vous l’utilisez ?

Si cet article vous a plu, partagez le !

Credit photo : Alexas_Fotos

Partager l'article
  •  
  •  
  •  
  •  
  •  
    1
    Partage
  • 1
  •  
  •  
  •  
  •  

Laisser un commentaire

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