0% ont trouvé ce document utile (0 vote)
0 vues24 pages

Document Simulation Bootstrap

Transféré par

pibrahimak.73
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues24 pages

Document Simulation Bootstrap

Transféré par

pibrahimak.73
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction à bootstrap

M2R santé publique

02 octobre 2020
Principe

I On s’intéresse au paramètre d’une loi de probabilité Fθ , fθ ,


f (x ; θ) ou Pθ
I On ne possède qu’un échantillon X1 , . . . , Xn issu de Fθ
I θb = t X1 , . . . , Xn est un estimateur de θ

Principe

I On s’intéresse au paramètre d’une loi de probabilité Fθ , fθ ,


f (x ; θ) ou Pθ
I On ne possède qu’un échantillon X1 , . . . , Xn issu de Fθ
I θb = t X1 , . . . , Xn est un estimateur de θ


Plusieurs questions liées à la distribution de θb


I Biais de l’estimateur θb
I Variance de θb (sa précision)
I Intervalle de confiance pour θ
Simuler suivant Fθ ou fθ

Exemple : supposons que X ∼ N (θ, 1) où θ = 2


[Link](123)
# simuler un jeu de données de 100 individus
n <- 100
x <- rnorm(n, mean=2, sd=1)

# simuler N jeux de données


N <- 10000
X <- matrix(rnorm(N*n,2,1), N,n)
t <- rowMeans(X)
summary(t)
Le résultat

[Link](123)
# simuler un jeu de données de 100 individus
n <- 100
x <- rnorm(n, mean=2, sd=1)

# simuler N jeux de données


N <- 10000
X <- matrix(rnorm(N*n,2,1), N,n)
t <- rowMeans(X)
summary(t)

Min. 1st Qu. Median Mean 3rd Qu. Max.


1.623 1.932 1.999 1.999 2.068 2.376
Le code pour tracer les sorties

hist(t, nclass=40, freq=F, ylab="",xlab="",main="")


xx <- seq(1.5, 2.5, le=200)
et <- 1/sqrt(n)
points(xx, dnorm(xx, 2, et),
type="l", lwd = 2, col="red")
La figure
hist(t, nclass=40, freq=F, ylab="",xlab="",main="")
xx <- seq(1.5, 2.5, le=200)
et <- 1/sqrt(n)
points(xx, dnorm(xx, 2, et), type="l", lwd = 2, col="red")
4
3
2
1
0

1.6 1.8 2.0 2.2 2.4


Une petite parenthèse : générateur de nombres aléatoires
La loi de base que l’on simule est la loi uniforme sur [0, 1], un tel
générateur est inclus dans tous les langages de programmation et
dans tous les logiciels.
Une petite parenthèse : générateur de nombres aléatoires
La loi de base que l’on simule est la loi uniforme sur [0, 1], un tel
générateur est inclus dans tous les langages de programmation et
dans tous les logiciels.
I La méthode de congruence linéaire (D.H Lehmer-Lucas 1948),
gn+1 = agn + b mod m
où a, b, m et g0 sont à choisir intialement.
I Ce générateur fabrique une suite d’entiers aléatoires allant de 0
à m − 1.
I La suite gn /m − 1 fournit des nombres sur l’intervalle [0, 1].
I La suite ainsi produite possède une période inférieure ou égale
à m.
I Un générateur de ce type, nommé RANDU, fut exploité
pendant des années dans toutes sortes de logiciels.
I Les paramètres de RANDU sont m = 235 , a = 3125, b = 1 et
Inversion de la fonction de répartition

On veut générer des nombres aléatoires suivant une loi données par
sa fonction de répartition F . Comment procéder ?
Inversion de la fonction de répartition

On veut générer des nombres aléatoires suivant une loi données par
sa fonction de répartition F . Comment procéder ?
I Générer U1 , U2 , . . . , Un suivant une loi uniforme U(0, 1).
I On forme

X1 , X2 , . . . , Xn = F −1 (U1 ), F −1 (U2 ), . . . , F −1 (Un )


 
Inversion de la fonction de répartition


On va s’intéresser à la loi exponentielle E λ où λ = 2
I Rappelons que F (x ) = 1 − e −λx
I Simuler 100 réalisations de la loi E(2)
I Tracer sur la même figure l’histogramme des réalisations ainsi
que la vraie densité de probabilité de la loi E(2)
Inversion de la fonction de répartition

[Link](123)
x.u <- runif(1000)
x.e <- qexp(x.u, rate = 2)
hist(x.e, nclass=30, freq = F, main="", xlab="", xlab="")
x<-seq(0,3.6, le=100)
points(x, dexp(x, 2), type="l", lwd = 2, col ="red")
Sortie
[Link](123)
x.u <- runif(10000)
x.e <- qexp(x.u, rate = 2)
hist(x.e, nclass=40, freq = F, main="", ylab="", xlab="")
x<-seq(0,3.6, le=100)
points(x, dexp(x, 2), type="l", lwd = 2, col ="red")
1.5
1.0
0.5
0.0

0 1 2 3 4 5
Simuler une loi normale : Box-Muller

Soit, U et V deux variables aléatoires uniformes sur [0, 1]


indépendantes, la variable
q 
X = cos(2πU) − 2 log(V )

suit une loi normale N (0, 1).


Alternative : rééchantillonnage

Fθ est en général inconnue !


Alternative : rééchantillonnage

Fθ est en général inconnue !


Le bootstrap consiste donc à faire une simulation à partir de la loi
empirique Fn observée (i.e. l’échantillon) au lieu de la vraie loi Fθ ,
qui est inconnue.
Alternative : rééchantillonnage

Fθ est en général inconnue !


Le bootstrap consiste donc à faire une simulation à partir de la loi
empirique Fn observée (i.e. l’échantillon) au lieu de la vraie loi Fθ ,
qui est inconnue.
I On tire B échantillons x ∗1 , x ∗2 , . . . , x ∗B où chaque x ∗b est
constitué en tirant avec remise n valeurs de l’échantillon
X1 , . . . , Xn .
I On appelle chaque tirage d’un x ∗b un bootstrap
La fonction sample de R

I Sous R, taper :
?sample

I On propose de faire un premier test avec cette fonction


[Link](123)
# 100 réalisations d'une gaussienne N(10,10)
x <- rnorm(100, mean = 10, sd = 10)
# faire un tirage avec remise de taille 100
[Link] <- sample(?, ?, ?) ## attention remplacer les ?
Un jeu de données

Exemple : jeu de données de taille n = 47 observations de la durée


de rémission d’une leucémie en semaines.
## lecture du jeu de données leucemie
setwd("~/Dropbox/enseignements/bootstrap")
rm(list = ls())
## je vais lire le fichier [Link]
load("~/Dropbox/enseignements/bootstrap/[Link]")
Exemple : estimation de la médiane

I On s’intéresse à la médiane dans le jeu de données de leucemie,


ici la statistique t(x) est la médiane empirique de l’échantillon
x = X1 , . . . , Xn .
I Proposer une procédure qui génère B = 1000 échantillons
bootstrap à partir du jeu de données leucemie.
I Calculer l’estimateur bootstrap du biais donné par

B
1 X
median x ∗b − median X1 , . . . , Xn
 
biais
d =
B b=1

I Estimer la variance et l’écart type de l’estimateur de la


médiane.
Le package boot de R

On souhaite ici, voir ce que fait le package boot et le comparer à


nos résultats sur le jeux de données leucémie.
[Link](123)
[Link]<-function(y,i){z<-median(y[i]); return(z)}
boot.obj1<-boot(data = y,
statistic = [Link],
R = B)
names(boot.obj1)
boot.obj1
Bilan

I La variablilité de l’échantillonnage dans la population se reflète


dans la variabilité de l’échantillonnage dans la sous-population
y.
I Nous avons utiliser la variance du vecteur boot pour estimer la
variance de median(y ).
I Il est clair que ce que nous venons de faire pour la médiane,
nous pouvons le répéter pour estimer la variance d’autres
statistiques.
Intervalles de confiance : jeu de données CommuteAtlanta

I Charger le package Lock5Data et le jeu de données


CommuteAtlanta
I Se faire une idée du jeu de données : sa taille, les noms des
variables etc . . .
I Générer B = 1000 échantillons bootstrap sans faire appel au
package boot de la variable trajet (Distance)
I Calculer l’écart type du trajet moyen
I Construire un intervalle de confiance du trajet moyen

Vous aimerez peut-être aussi