Comment effectuer un bootstrapping dans R (avec des exemples)



Le bootstrapping est une méthode qui peut être utilisée pour estimer l’erreur type de n’importe quelle statistique et produire un intervalle de confiance pour la statistique.

Le processus de base pour le bootstrap est le suivant :

  • Prenez k échantillons répétés avec remplacement à partir d’un ensemble de données donné.
  • Pour chaque échantillon, calculez la statistique qui vous intéresse.
  • Cela donne k estimations différentes pour une statistique donnée, que vous pouvez ensuite utiliser pour calculer l’erreur type de la statistique et créer un intervalle de confiance pour la statistique.

Nous pouvons effectuer un bootstrap dans R en utilisant les fonctions suivantes de la bibliothèque de démarrage :

1. Générez des échantillons bootstrap.

boot(données, statistiques, R, …)

où:

  • data : un vecteur, une matrice ou un bloc de données
  • statistique : une fonction qui produit la ou les statistiques à amorcer
  • R : Nombre de répétitions bootstrap

2. Générez un intervalle de confiance bootstrap.

boot.ci (objet de démarrage, conf, type)

où:

  • bootobject : Un objet renvoyé par la fonction boot()
  • conf : L’intervalle de confiance à calculer. La valeur par défaut est 0,95
  • type : Type d’intervalle de confiance à calculer. Les options incluent « norme », « basic », « stud », « perc », « bca » et « all » – La valeur par défaut est « all »

Les exemples suivants montrent comment utiliser ces fonctions dans la pratique.

Exemple 1 : amorcer une seule statistique

Le code suivant montre comment calculer l’erreur standard pour leR-carré d’un modèle de régression linéaire simple :

set.seed(0)
library(boot)

#define function to calculate R-squared
rsq_function <- function(formula, data, indices) {
  d <- data[indices,] #allows boot to select sample
  fit <- lm(formula, data=d) #fit regression model
  return(summary(fit)$r.square) #return R-squared of model
}
#perform bootstrapping with 2000 replications
reps <- boot(data=mtcars, statistic=rsq_function, R=2000, formula=mpg~disp)

#view results of boostrapping
reps

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = mtcars, statistic = rsq_function, R = 2000, formula = mpg ~ 
    disp)


Bootstrap Statistics :
     original      bias    std. error
t1* 0.7183433 0.002164339  0.06513426

D’après les résultats, nous pouvons voir :

  • Le R-carré estimé pour ce modèle de régression est de 0,7183433 .
  • L’erreur type pour cette estimation est de 0,06513426 .

Nous pouvons également visualiser rapidement la distribution des échantillons bootstrapés :

plot(reps)

Histogramme des échantillons bootstrapés dans R

Nous pouvons également utiliser le code suivant pour calculer l’intervalle de confiance à 95 % pour le R-carré estimé du modèle :

#calculate adjusted bootstrap percentile (BCa) interval
boot.ci(reps, type="bca")

CALL : 
boot.ci(boot.out = reps, type = "bca")

Intervals : 
Level       BCa          
95%   ( 0.5350,  0.8188 )  
Calculations and Intervals on Original Scale

À partir du résultat, nous pouvons voir que l’intervalle de confiance bootstrapé à 95 % pour les vraies valeurs R au carré est de (0,5350, 0,8188).

Exemple 2 : amorcer plusieurs statistiques

Le code suivant montre comment calculer l’erreur type pour chaque coefficient dans un modèle de régression linéaire multiple :

set.seed(0)
library(boot)

#define function to calculate fitted regression coefficients
coef_function <- function(formula, data, indices) {
  d <- data[indices,] #allows boot to select sample
  fit <- lm(formula, data=d) #fit regression model
  return(coef(fit)) #return coefficient estimates of model
}

#perform bootstrapping with 2000 replications
reps <- boot(data=mtcars, statistic=coef_function, R=2000, formula=mpg~disp)

#view results of boostrapping
reps

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = mtcars, statistic = coef_function, R = 2000, formula = mpg ~ 
    disp)


Bootstrap Statistics :
       original        bias    std. error
t1* 29.59985476 -5.058601e-02  1.49354577
t2* -0.04121512  6.549384e-05  0.00527082

D’après les résultats, nous pouvons voir :

  • Le coefficient estimé pour l’ordonnée à l’origine du modèle est 29,59985476 et l’erreur type de cette estimation est 1,49354577 .
  • Le coefficient estimé pour la variable prédictive disp dans le modèle est de -0,04121512 et l’erreur type de cette estimation est de 0,00527082 .

Nous pouvons également visualiser rapidement la distribution des échantillons bootstrapés :

plot(reps, index=1) #intercept of model
plot(reps, index=2) #disp predictor variable

Amorçage dans R

On peut également utiliser le code suivant pour calculer les intervalles de confiance à 95 % pour chaque coefficient :

#calculate adjusted bootstrap percentile (BCa) intervals
boot.ci(reps, type="bca", index=1) #intercept of model
boot.ci(reps, type="bca", index=2) #disp predictor variable

CALL : 
boot.ci(boot.out = reps, type = "bca", index = 1)

Intervals : 
Level       BCa          
95%   (26.78, 32.66 )  
Calculations and Intervals on Original Scale
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 2000 bootstrap replicates

CALL : 
boot.ci(boot.out = reps, type = "bca", index = 2)

Intervals : 
Level       BCa          
95%   (-0.0520, -0.0312 )  
Calculations and Intervals on Original Scale

À partir des résultats, nous pouvons voir que les intervalles de confiance bootstrapés à 95 % pour les coefficients du modèle sont les suivants :

  • CI pour l’interception : (26,78, 32,66)
  • CI pour disp : (-.0520, -.0312)

Ressources additionnelles

Comment effectuer une régression linéaire simple dans R
Comment effectuer une régression linéaire multiple dans R
Introduction aux intervalles de confiance

Ajouter un commentaire

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