Vous êtes sur la page 1sur 15

Université Paris Nanterre - UFR SEGMI

Licence L3 MIASHS 2021-2022


Statistique S6 P. Bertail - A. Mollié

TD 2 - Vraisemblance et EMV

Exercice 1
On a observé sur 50 lancers d’une pièce, les résultats suivants (où 0 représente face et 1 pile) :
0; 1; 0; 0; 1; 0; 1; 1; 1; 0; 1; 1; 0; 0; 1; 1; 0; 1; 0; 1; 0; 0; 1; 0; 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 0; 1;
0; 0; 0; 1; 1; 1; 1; 1; 1; 0; 0; 1; 1; 1
On suppose que les résultats des lancers sont la réalisation d’un échantillon tiré d’une loi de Bernoulli de
paramètre p :
– Calculer la fonction de log-vraisemblance du paramètre p et la représenter graphiquement.
– Trouver numériquement l’EMV pb de p. Correspond-il à ce que l’on attendait ?

1. Lire les données avec


X <- c(0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1)
str(X)
X
dbinom(X,1,0.2)
sum(log(dbinom(X,1,0.2)))
2. Calculer la log-vraisemblance de p (loi de Bernoulli)
p <- seq(0.001,0.999,0.001)
lvr <- sapply(p, function(p) sum(log(dbinom(X,1,p))) )
# représentation graphique
plot(p,lvr)
3. Trouver la log-vraisemblance maximale et la valeur pb du paramètre p qui réalise le maximum
max(lvr)
p[which.max(lvr)] -> pchap
pchap
# représentation graphique
plot(p,lvr, xlab=bquote(p), ylab="log-vraisemblance", pch=20, cex=0.75)
miny <- round(min(lvr)- (max(lvr)-min(lvr))/7)
minx <- min(p)-(max(p)-min(p))/10
segments(pchap,miny,pchap,max(lvr), col="blue", lty=2)
segments(minx,max(lvr),pchap,max(lvr), col="blue", lty=2)
text(pchap,miny, bquote(hat(p)==.(pchap)), col="blue", xpd=TRUE)
text(minx,max(lvr), bquote(hat(L)==.(round(max(lvr),3))), col="blue", xpd=TRUE)
title(bquote(paste("Loi de Bernoulli : log-vraisemblance et EMV de ", p)) )
mtext(bquote(paste(n==.(length(X))," observations : ",
list(bar(x)==.(round(mean(X),4))))), col="grey40",adj=1)
mean(X)

La log-vraisemblance pour p :
L(x1 , . . . , xn ; p) = log(L (x1 , . . . , xn ; p) = log(Πi pxi (1 − p)1−xi ) = i xi log(p) + (n − i xi ) log(1 − p)
P P

sa dérivée en p s’annule pour l’EMV pb = x

1
Exercice 2
Les nombres de clients entrant dans un supermarché pendant 40 périodes consécutives de 1 minute sont les
suivants :
3 7 7 7 9 7 1 4 7 6 7 6 4 10 5 8 5 4 4 4
5 5 4 2 0 8 6 9 8 2 6 4 5 6 4 8 4 4 13 8
On suppose que les nombres de clients sont la réalisation d’un échantillon issu d’une loi de Poisson de
paramètre λ :
– Calculer la fonction de log-vraisemblance du paramètre λ et la représenter graphiquement.
– Trouver numériquement l’EMV λ
b de λ. Correspond-il à ce que l’on attendait ?

1. Lire les données avec


X <- c(3, 7, 7, 7, 9, 7, 1, 4, 7, 6, 7, 6, 4, 10, 5, 8, 5, 4, 4, 4, 5, 5, 4, 2,
0, 8, 6, 9, 8, 2, 6, 4, 5, 6, 4, 8, 4, 4, 13, 8)
str(X)
2. Calcul de la log-vraisemblance de λ (loi de Poisson)
l <- seq(0.01,30,0.01)
lvr <- sapply(l, function(l) sum(log(dpois(X,l))) )
plot(l,lvr)
3. Trouver la log-vraisemblance maximale et la valeur λ
b du paramètre λ qui réalise le maximum
max(lvr)
l[which.max(lvr)] -> lchap
lchap
# représentation graphique
plot(l,lvr, xlab=bquote(lambda), ylab="log-vraisemblance", pch=20, cex=0.75)
miny <- round(min(lvr)- (max(lvr)-min(lvr))/7)
minx <- min(l)-(max(l)-min(l))/10
segments(lchap,miny,lchap,max(lvr), col="blue", lty=2)
segments(minx,max(lvr),lchap,max(lvr), col="blue", lty=2)
text(lchap,miny, bquote(hat(lambda)==.(lchap)), col="blue", xpd=TRUE)
text(minx,max(lvr), bquote(hat(L)==.(round(max(lvr),3))), col="blue", xpd=TRUE)
title(bquote(paste("Loi de Poisson : log-vraisemblance et EMV de ", lambda)) )
mtext(bquote(paste(n==.(length(X))," observations : ",
list(bar(x)==.(round(mean(X),4))))), col="grey40",adj=1)
mean(X)

La log-vraisemblance pour λ :
λxi
 
L(x1 , . . . , xn ; λ) = log(L (x1 , . . . , xn ; λ) = log Πi exp {−λ} = −nλ + log(λ)( i xi ) −
P P
i log(xi !)
xi !
sa dérivée en λ s’annule pour l’EMV λ
b=x

2
Exercice 3
On a observé les durées de vie (en heures) suivantes de 30 composants électroniques :
0.1 ; 7.4 ; 1.0 ; 7.9 ; 2.1 ; 1.8 ; 17.9 ; 9.3 ; 6.5 ; 3.3 ; 5.6 ; 7.7 ; 0.1 ; 24.3 ; 8.1 ;
19.3 ; 11.9 ; 1.6 ; 2.7 ; 0.5 ; 5.8 ; 42.5 ; 5.1 ; 2.0 ; 0.2 ; 15.0 ; 3.5 ; 6.4 ; 0.6 ; 3.3

(a) On suppose que les durées de vie sont la réalisation d’un échantillon tiré d’une loi exponentielle
d’intensité λ :
– Calculer la fonction de log-vraisemblance du paramètre λ pour des valeurs de λ inférieures à 1 et
la représenter graphiquement.
– Trouver numériquement l’EMV λ b de λ. Correspond-il à ce que l’on attendrait ?

(b) On suppose que les durées de vie sont la réalisation d’un échantillon tiré d’une loi du khi-deux à k
ddl :
– Calculer la fonction de log-vraisemblance du paramètre k pour des valeurs de k inférieures à 50
et la représenter graphiquement.
– Trouver numériquement l’EMV kb de k. Correspond-il à ce que l’on attendrait ?
(c) On suppose que les durées de vie sont la réalisation d’un échantillon tiré d’une loi Normale d’espérance
µ et de variance σ 2 :
– Calculer la fonction de log-vraisemblance des paramètres µ, σ 2 et la représenter graphiquement.
– Trouver numériquement les EMV µ b de µ et σb 2 de σ 2 . Correspondent-ils à ce que l’on attendrait ?
(d) On suppose que les durées de vie sont la réalisation d’un échantillon tiré d’une loi Gamma de paramètres
de forme a et d’intensité b :
– Calculer la fonction de log-vraisemblance des paramètres a, b pour des valeurs de a, b inférieures
à 1 et la représenter graphiquement.
– Trouver numériquement les EMV a b de a et bb de b. Correspondent-ils à ce que l’on attendrait ?

1. Lire les données avec : définir un vecteur numérique


X <- c( 0.1, 7.4, 1.0, 7.9, 2.1, 1.8, 17.9, 9.3, 6.5, 3.3, 5.6, 7.7, 0.1, 24.3,
8.1, 19.3, 11.9, 1.6, 2.7, 0.5, 5.8, 42.5, 5.1, 2.0, 0.2, 15.0, 3.5,
6.4, 0.6, 3.3 )
X
str(X)
2. Calculer la log-vraisemblance de λ (loi exponentielle)
l <- seq(0.0001,1,0.0001)
lvr <- sapply(l, function(l) sum(log(dexp(X,l))) )
plot(l,lvr)
max(lvr)
l[which.max(lvr)] -> lchap
lchap
# représentation graphique
plot(l,lvr, xlab=bquote(lambda), ylab="log-vraisemblance", pch=20, cex=0.75)
miny <- round(min(lvr)- (max(lvr)-min(lvr))/7)
minx <- min(l)-(max(l)-min(l))/10
segments(lchap,miny,lchap,max(lvr), col="blue", lty=2)
segments(minx,max(lvr),lchap,max(lvr), col="blue", lty=2)
text(lchap,miny, bquote(hat(lambda)==.(lchap)), col="blue", xpd=TRUE)
text(minx,max(lvr), bquote(hat(L)==.(round(max(lvr),3))), col="blue", xpd=TRUE)
title(bquote(paste("Loi Exponentielle : log-vraisemblance et EMV de ", lambda)) )
mtext(bquote(paste(n==.(length(X))," observations : ",
list(1/bar(x)==.(round(1/mean(X),4))))), col="grey40",adj=1)
1/mean(X)

3
La log-vraisemblance pour λ :
L(x1 , . . . , xn ; λ) = log(L (x1 , . . . , xn ; λ) = log (Πi λ exp {−λ xi }) = n log(λ) − λ( i xi )
P

sa dérivée en λ s’annule pour l’EMV λ b= 1


x
3. Calculer la log-vraisemblance de k (loi du khi-deux)
k <- 1:50
lvr <- sapply(k, function(k) sum(log(dchisq(X,k))) )
plot(k,lvr)
max(lvr)
k[which.max(lvr)] -> kchap
kchap
# représentation graphique
plot(k,lvr, xlab=bquote(k), ylab="log-vraisemblance", pch=20, cex=0.75)
miny <- round(min(lvr)- (max(lvr)-min(lvr))/7)
minx <- min(k)-(max(k)-min(k))/10
segments(kchap,miny,kchap,max(lvr), col="blue", lty=2)
segments(minx,max(lvr),kchap,max(lvr), col="blue", lty=2)
text(kchap,miny, bquote(hat(k)==.(kchap)), col="blue", xpd=TRUE)
text(minx,max(lvr), bquote(hat(L)==.(round(max(lvr),3))), col="blue", xpd=TRUE)
title(bquote(paste("Loi du khi-deux : log-vraisemblance et EMV de ", k)) )
mtext(bquote(paste(n==.(length(X))," observations : ",
list(bar(x)==.(round(mean(X),4))))), col="grey40",adj=1)

La log-vraisemblance pour k : !
k
−1
1
exp − xi
2

L(x1 , . . . , xn ; k) = log(L (x1 , . . . , xn ; k) = log Πi k k
xi 2
 2 Γ( 2)
2
P
nk  k 
i xi
= − log(2) − n log Γ( k2 ) +
−1 i log(xi ) −
P
2 2 ! 2
P
k
b log(x i )
sa dérivée en k s’annule pour l’EMV kb tel que : ψ = i − log(2)
2 n
où ψ est la fonction Digamma, dérivée du logarithme de la fonction Gamma

4. Minimiser l’opposée de la log-vraisemblance avec une méthode itérative de type Newton-Raphson


("descente de gradient") : fonction mle du package stats4
# définir la fonction qui calcule l’opposée de la log-vraisemblance : lvn
lvn <- function(k=1) {
if(k > 0) -sum(dchisq(X, k, log=TRUE))
else NA
}
# utiliser la fonction mle du package stats4
library(stats4)
emv <- mle(lvn)
summary(emv)
emv
attributes(emv)
coef(emv)
vcov(emv)
confint(emv,level=0.95)
lvn(coef(emv))
logLik(emv)
digamma(coef(emv)/2) # dérivée du log de la fonction Gamma
mean(log(X))-log(2)
4/(length(X)*trigamma(coef(emv)/2)) # borne de FCR évaluée au MLE de k

4
La valeur initiale de k (ici k = 1) peut avoir un impact sur la solution trouvée : on peut vérifier si elle
est modifiée en changeant la valeur initiale, par exemple
emv <- mle(lvn, start = list(k = 50))

5. Calculer la log-vraisemblance de µ, σ 2 (loi Normale)


mu <- 5; sig <- 10
sum(log(dnorm(X,mu,sig))) # log-vrais en mu, sig
lvrais <- function(mu,sig2) {
-(length(X)*log(2*pi*sig2)+ (sum(X^2)-2*sum(X)*mu+length(X)*mu^2)/sig2)/2
}
mu <- seq(-10,20,1)
sig2 <- seq(20,200,2)
z <- outer(mu,sig2,lvrais)
max(z)
which(z==max(z),arr.ind=TRUE) # indices du max
muchap <- mu[which(z==max(z),arr.ind=TRUE)[1]] # max en mu
sig2chap <- sig2[which(z==max(z),arr.ind=TRUE)[2]] # max en sig2
muchap; sig2chap; sqrt(sig2chap)
# représentation graphique
par(mfrow=c(1,1), oma=c(0,0,0,0), mar=c(2,2,2,0))
persp(mu,sig2,z, xlab=expression(mu), ylab=expression(sigma^2), zlab="log-vrais",theta=45,
phi=20, ticktype="detailed", col="lightblue", expand=1, border="grey70") -> graph
lines(trans3d(x=muchap, y=sig2, z=lvrais(muchap, sig2), pmat=graph), col="purple", lwd=2)
lines(trans3d(x=max(mu), y=sig2, z=lvrais(max(mu), sig2), pmat=graph), col="purple", lwd=1)
lines(trans3d(x=min(mu), y=sig2, z=lvrais(min(mu),sig2), pmat=graph),col="purple", lty=3)
lines(trans3d(x=mu, y=sig2chap, z=lvrais(mu, sig2chap), pmat=graph), col="cyan", lwd=2)
lines(trans3d(x=mu, y=min(sig2), z=lvrais(mu, min(sig2)), pmat=graph), col="cyan")
lines(trans3d(x=mu, y=max(sig2), z=lvrais(mu, max(sig2)), pmat=graph), col="cyan", lty=3)
lines(trans3d(x=c(muchap,max(mu)), y=sig2chap, z=min(z), pmat=graph), col="red", lty=2)
lines(trans3d(x=muchap, y=c(min(sig2),sig2chap), z=min(z), pmat=graph), col="red", lty=2)
lines(trans3d(x=muchap, y=sig2chap, z=c(min(z),max(z)), pmat=graph), col="red", lty=2)
title(bquote(paste("Loi Normale : log-vraisemblance et EMV de ", mu, " et ",sigma^2)))
text(trans3d(x=muchap, y=min(sig2), z=min(z), pmat = graph), expression(hat(mu)),
xpd=TRUE, col="red", pos=2)
text(trans3d(x=max(mu), y=sig2chap, z=min(z), pmat = graph), expression(hat(sigma)^2),
xpd=TRUE, col="red", pos=4)
text(trans3d(x=muchap, y=sig2chap, z=max(z), pmat = graph),
expression(L(y,hat(mu),hat(sigma)^2)), xpd=TRUE, col="red", pos=3)
mean(X) ; var(X)*(length(X)-1)/length(X)
# estimation plus précise
mu <- seq(-10,20,0.01)
sig2 <- seq(20,200,0.01)
z <- outer(mu,sig2,lvrais)
muchap <- mu[which(z==max(z),arr.ind=TRUE)[1]] # max en mu
sig2chap <- sig2[which(z==max(z),arr.ind=TRUE)[2]] # max en sig2
muchap; sig2chap; sqrt(sig2chap)

La log-vraisemblance pour µ, σ 2 :
1 1
  
L(x1 , . . . , xn ; µ, σ 2 ) = log(L (x1 , . . . , xn ; µ, σ 2 ) = log Πi √ exp − (xi − µ)2
2πσ 2 2σ 2
n 1 P
= log(2πσ 2 ) − 2 i (xi − µ)
2
2 2σ
1 P
ses dérivées en µ et σ 2 s’annulent pour les EMV µ b2 =
b = x et σ b )2
i (xi − µ
n
5
6. Calculer la log-vraisemblance de a, b (loi Gamma)
a <- 1; b <- 0.1
sum(log(dgamma(X,a,b))) # log-vrais en a, b
lvrais <- function(a,b) {
-length(X)*(log(gamma(a))-a*log(b))+(a-1)*sum(log(X))-sum(X)*b }
a <- seq(0.01,1,0.01)
b <- seq(0.01,1,0.01)
z <- outer(a,b,lvrais)
max(z)
which(z==max(z),arr.ind=TRUE) # indices du maximum
a[which(z==max(z),arr.ind=TRUE)[1]] -> achap
b[which(z==max(z),arr.ind=TRUE)[2]] -> bchap
achap; bchap
# représentation graphique
par(mfrow=c(1,1), oma=c(0,0,0,0), mar=c(2,2,2,0))
persp(a,b,z, xlab=expression(a), ylab=expression(b), zlab="log-vraisemblance", theta=45,
phi=20, ticktype="detailed", col="steelblue", expand=1, border="gray") -> graph
lines(trans3d(x=achap, y=b, z=lvrais(achap, b), pmat = graph), col = "purple", lwd=2)
lines(trans3d(x=max(a), y=b, z=lvrais(max(a), b), pmat = graph), col = "purple", lwd=1)
lines(trans3d(x=min(a), y=b, z=lvrais(min(a),b), pmat = graph),col ="purple", lty=3)
lines(trans3d(x=a, y=bchap, z=lvrais(a, bchap), pmat = graph), col = "cyan", lwd=2)
lines(trans3d(x=a, y=min(b), z=lvrais(a, min(b)), pmat = graph), col = "cyan")
lines(trans3d(x=a, y=max(b), z=lvrais(a, max(b)), pmat = graph), col = "cyan", lty=3)
lines(trans3d(x=c(achap,max(b)), y=bchap, z=min(z), pmat = graph), col="red", lty=2)
lines(trans3d(x=achap, y=c(min(a),bchap), z=min(z), pmat = graph), col="red", lty=2)
lines(trans3d(x=achap, y=bchap, z=c(min(z),max(z)), pmat = graph), col="red", lty=2)
title(bquote(paste("Loi Gamma : log-vraisemblance et EMV de ", a, " et ",b)) )
text(trans3d(x=achap, y=min(b), z=min(z), pmat = graph), expression(hat(a)),xpd=TRUE,
col="red", pos=2)
text(trans3d(x=max(a), y=bchap, z=min(z), pmat = graph), expression(hat(b)), xpd=TRUE,
col="red", pos=1)
text(trans3d(x=achap, y=bchap, z=max(z), pmat = graph), expression(L(x,hat(a),hat(b))),
xpd=TRUE, col="red", pos=3)
achap/bchap
mean(X)

La log-vraisemblance pour a, b :
ba
 
L(x1 , . . . , xn ; a, b) = log(L (x1 , . . . , xn ; a, b) = log Πi xa−1
i exp {−b xi }
Γ(a)
= n a log(b) − n log (Γ(a)) + (a − 1) i log(xi ) − b i xi
P P

ses dérivées
 en a et b s’annulent pour les EMV a b tels que :
b et b
a
b
=x



b
b P
log(xi )
 log(a b) = log(x) − i
b) − ψ (a


n
où ψ est la fonction Digamma, dérivée du logarithme de la fonction Gamma

7. Minimiser l’opposé de la log-vraisemblance avec la fonction mle de la librairie stats4


lvn <- function(a=1, b=1){
if(a > 0 && b > 0) -sum(dgamma(X, a, b, log=TRUE))
else NA
}
lvn(1,1)
lvn(achap,bchap)

6
# library(stats4)
emv <- mle(lvn)
summary(emv)
emv
attributes(emv)
coef(emv)
vcov(emv)
confint(emv,level=0.95)
lvn(coef(emv)[1],coef(emv)[2]); logLik(emv)
On peut vérifier si la solution trouvée est modifiée selon les valeurs initiales des paramètres a et b ;
emv <- mle(lvn, start = list(a=10, b=5))

Exercice 4
Générer une réalisation d’un échantillon (y1 , . . . , yn ) de taille n d’une loi de la liste suivante, décrire et
représenter graphiquement les observations :
(a) loi de Bernoulli de paramètre p
(b) loi binomiale de paramètres m et p
(c) loi de Poisson de paramètre λ
(d) loi Gaussienne de paramètres µ et σ
(e) loi Exponentielle de paramètre λ
(f) loi Gamma de paramètres a (forme) et b (intensité)
(g) loi Uniforme sur [0, b] de paramètre b

1. Loi de Bernoulli Be(p)


# Partir du même nb aléatoire RNG Random Number Generator => mêmes valeurs générées
set.seed(12345)
n <- 1000
p0 <- 0.3
y <- rbinom(n,1,prob=p0)
table(y)
addmargins(table(y))
prop.table(table(y))
mean(y); var(y); sd(y)
summary(y)
# représentation graphique
plot(prop.table(table(y)),ylab="fréquence observée", col="grey80", ylim=c(0,1))
points(0:1,dbinom(0:1,1,p0),col="red",pch=20) # densité théorique Be(p0) pour x=0,1
mtext(bquote(p[0]==.(p0)), col="red",adj=0)
mtext(bquote(paste(n==.(n)," observations : ", list(bar(y)==.(round(mean(y),3))))),
col="grey40",adj=1)
title(bquote(paste("Loi de Bernoulli : ", bolditalic(Be)(p) )))

Le paramètre p est estimé par pb = y à comparer à sa "vraie valeur" p0

2. Loi binomiale B(m, p)


set.seed(12345)
n <- 1000
p0 <- 0.2
m <- 15

7
y <- rbinom(n,m,prob=p0)
addmargins(table(y))
prop.table(table(y))
mean(y); var(y); sd(y)
# représentation graphique
plot(prop.table(table(y)),ylab="fréquence observée", col="grey80")
mtext(bquote(paste(n==.(n)," observations : ", list(bar(y)==.(round(mean(y),3))))),
col="grey40",adj=1)
title(bquote(paste("Loi binomiale : ",bolditalic(B)(m,p) )))
plot(0:m,dbinom(0:m,m,p0),col="red",pch=20, type="h", lwd=3, ylab="fréquence observée",
xlab="y") # densité théorique loi B(m,p)
points(as.numeric(names(prop.table(table(y))))+0.1, prop.table(table(y)),type="h",
col="grey70", lwd=3)
mtext(bquote(list(m==.(m),p[0]==.(p0),mp[0]==.(m*p0))), col="red",adj=0)
mtext(bquote(paste(n==.(n)," observations : ", list(bar(y)==.(round(mean(y),3))))),
col="grey40",adj=1)
title(bquote(paste("Loi binomiale : ", bolditalic(B)(m,p) )))
mean(y)/m
y
Le paramètre p est estimé par pb = à comparer à sa "vraie valeur" p0
m
3. Loi de Poisson P(λ)
set.seed(12345)
n <- 1000
l0 <- 15
y <- rpois(n,l0)
addmargins(table(y))
prop.table(table(y))
mean(y); var(y); sd(y)
# représentation graphique
plot(prop.table(table(y)),ylab="fréquence observée", col="grey80")
mtext(bquote(paste(n==.(n)," observations : ", list(bar(y)==.(round(mean(y),3))))),
col="grey40",adj=1)
title(bquote(paste("Loi de Poisson : ", bolditalic(P)(lambda) )))
maxy <- 50
maxf <- max(prop.table(table(y)))
plot(0:maxy,dpois(0:maxy,l0),col="red",pch=20, type="h", lwd=3, ylim=c(0,maxf),
ylab="fréquence observée", xlab="y") # densité théorique loi P(l)
points(as.numeric(names(prop.table(table(y))))+0.3, prop.table(table(y)),type="h",
col="grey70", lwd=3)
mtext(bquote(lambda[0]==.(l0)), col="red",adj=0)
mtext(bquote(paste(n==.(n)," observations : ", list(bar(y)==.(round(mean(y),3))))),
col="grey40",adj=1)
title(bquote(paste("Loi de Poisson : ", bolditalic(P)(lambda) )))
Le paramètre λ est estimé par λ
b = y à comparer à sa "vraie valeur" λ0

4. Loi Normale N (µ, σ 2 )


set.seed(123)
n <- 1000
mu0 <- 20
sig0 <- 5
y <- rnorm(n,mu0,sig0)
vy <- var(y)*(n-1)/n
c(summary(y), Var.=var(y),S.d.=sd(y), Var.obs.=vy)

8
# représentation graphique
hist(y, main=bquote(paste("Loi Normale : ", bolditalic(N)(mu,sigma^2) )), freq=FALSE,
ylab="fréquence observée")
curve(dnorm(x,mu0,sig0),add=T,col="red", lwd=2) # densité théorique loi N(mu0,sig0^2)
mtext(bquote(list(mu[0]==.(mu0),sigma[0]==.(sig0))), col="red",adj=0)
mtext(bquote(paste(n==.(n)," observations : ", list(bar(y)==.(round(mean(y),3))),
~~hat(s)[y]^2==.(round(var(y),2)), ~~s[y]^2==.(round(vy,2)))), col="grey40",adj=1)

Le paramètre µ est estimé par µb = y à comparer à sa "vraie valeur" µ0


(xi − y)2
P
2
et le paramètre σ est estimé par σb = i
2 = s2y (estimation biaisée) ou
n
(xi − y)2
P
par σb = i
2 = sb2y (estimation sans biais) à comparer à sa "vraie valeur" σ02
n−1
5. Loi Exponentielle Exp(λ)
set.seed(123)
n <- 1000
l0 <- 0.2
y <- rexp(n,l0)
c(summary(y), Var.=var(y),S.d.=sd(y))
# représentation graphique
maxy <- ceiling(max(dexp(min(y):max(y),l0))*10)/10
hist(y, main=bquote(paste("Loi Exponentielle : ", bolditalic(Exp)(lambda) )),
freq=FALSE, ylab="fréquence observée", ylim=c(0,maxy))
lines(0:max(y),dexp(0:max(y),l0),col="red", lwd=2) # densité théorique de Exp(l)
mtext(bquote(lambda[0]==.(l0)), col="red",adj=0)
mtext(bquote(paste(n==.(n)," observations : ",
list(bar(y)==.(round(mean(y),3))), ~~hat(s)[y]==.(round(sd(y),3)))),
col="grey40",adj=1)
1/mean(y)
b = 1 à comparer à sa "vraie valeur" λ0
Le paramètre λ est estimé par λ
y
6. Loi Gamma G(a, b)
set.seed(123)
n <- 1000
a0 <- 3
b0 <- 2
y <- rgamma(n,a0,b0)
vy <- var(y)*(n-1)/n
c(summary(y), Var.=var(y),S.d.=sd(y), Var.obs.=vy)
# représentation graphique
hist(y, main=bquote(paste("Loi Gamma : ", bolditalic(G)(a,b) )), freq=FALSE,
ylab="fréquence observée")
curve(dgamma(x,a0,b0),add=T,col="red", lwd=2) # densité théorique loi G(a,b)
mtext(bquote(list(a[0]==.(a0),b[0]==.(b0), ~~a[0]/b[0] ==.(a0/b0))), col="red",adj=0)
mtext(bquote(paste(n==.(n)," observations : ",
list(bar(y)==.(round(mean(y),3))), ~~s[y]^2==.(round(vy,3)))),
col="grey40",adj=1)
mean(y); a0/b0
mean(y)/vy; mean(y)^2/vy
mean(y)/var(y); mean(y)^2/var(y)

9
a
b a0
Les EMV des paramètres a et b vérifient = y à comparer à sa "vraie valeur"
b
b b0
y2 y
les estimateurs des moments (EMM) des paramètres a et b : a
e= et eb = 2 à comparer aux "vraies
s2y sy
valeurs" a0 et b0 : ces estimateurs sont biaisés mais convergents.

7. Loi uniforme U(0, b)


set.seed(123)
n <- 100
b0 <- 10
y <- runif(n,0,b0)
c(summary(y), Var.=var(y), S.d.=sd(y))
# représentation graphique
hist(y, main=bquote(paste("Loi Uniforme : ", bolditalic(U)(0,b) )), freq=FALSE,
ylab="fréquence observée")
curve(dunif(x,0,b0),add=T,col="red", lwd=2) # densité théorique loi U(0,b)
mtext(bquote(list(b[0]==.(b0))), col="red",adj=0)
mtext(bquote(paste(n==.(n)," observations : ", list(bar(y)==.(round(mean(y),3))))),
col="grey40",adj=1)
# vraisemblance en b
b <- seq(0.01,20,0.01)
vr <- sapply(b, function(b) prod(dunif(y,0,b)) )
# ou avec une boucle
vr <- 0
for (i in 1:length(b)) vr[i] <- prod(dunif(y,0,b[i]))
# représentation graphique
plot(b,vr)
max(vr)
b[which.max(vr)] -> bchap
bchap
max(y); (n+1)*max(y)/n
2*mean(y)

Le paramètre b est estimé


– par son EMV bb = maxi (yi ) estimateur biaisé ou
n+1 b
– par b estimateur sans biais, à comparer à sa "vraie valeur" b0
n
b
– ou par eb = 2 y estimateur des moments, sans biais, puisque E(Y ) =
2

10
Exercice 5
(a) Générer N réalisations d’un échantillon (y1 , . . . , yn ) de taille n d’une loi de Bernoulli de paramètre p.
Calculer la moyenne de chaque réalisation et décrire les fluctuations d’échantillonnage de ces moyennes
observées.
(b) Mêmes questions pour une loi Gaussienne de paramètres µ et σ : calculer la moyenne de chaque
réalisation et décrire les fluctuations d’échantillonnage de ces moyennes observées, puis calculer la
variance observée sans biais de chaque réalisation et décrire les fluctuations d’échantillonnage de ces
variances observées.

1. Loi de Bernoulli Be(p)


# Partir du même nb aléatoire RNG Random Number Generator => mêmes valeurs générées
set.seed(12345)
n <- 100
p0 <- 0.3
N <- 2000
Y <- sapply(1:N, function(N) rbinom(n,1,prob=p0))
pest <- colMeans(Y)
mean(pest)
var(pest); sd(pest)
p0*(1-p0)/n ; sqrt(p0*(1-p0)/n)
# représentations graphiques
boxplot(pest)
points(mean(pest), pch=15, cex=1.25)
points(p0, col="red",pch=16)
hist(pest)
hist(pest, main="", freq=F, ylab="fréquence observée")
mtext(bquote(list(p[0]==.(p0), sqrt(over(p[0](1-p[0]),n))==.(round(sqrt(p0*(1-p0)/n),4)))),
col="red",adj=0)
mtext(bquote(paste(N==.(N), " échantillons de taille ",n==.(n)," : ",
list(bar(hat(p))==.(round(mean(pest),3)),hat(s[hat(p)])==.(round(sd(pest),4))))),
col="grey40",adj=1,line=-1)
title(bquote(paste("Loi de Bernoulli : ", bolditalic(Be)(p) )),line=3)
curve(dnorm(x,p0,sqrt(p0*(1-p0)/n)),add=T,col="red", lwd=2)

On simule N échantillons de taille n d’une loi Be(p0 ) donc N valeurs de pb


p0 (1 − p0 )
dont la moyenne pb −→ p0 et la variance sb2pb ' −→ 0
n→∞ n n→∞

on représente la distribution des N valeurs de pb qui tend vers une loi normale lorsque n tend vers
l’infini.

2. Loi Normale N (µ, σ 2 )


set.seed(12345)
n <- 100
mu0 <- 30
sig0 <- 4
N <- 2000
Y <- sapply(1:N, function(N) rnorm(n,mu0,sig0))
# calcul des moyennes observées
mest <- colMeans(Y)
mean(mest)
var(mest); sd(mest)
sig0/sqrt(n)

11
# représentations graphiques
boxplot(mest)
points(mean(mest), pch=15, cex=1.25)
points(mu0, col="red",pch=16)
hist(mest, main="", freq=F, xlab=bquote(hat(mu)))
mtext(bquote(list(mu[0]==.(mu0), sigma[0]==.(sig0),
over(sigma[0],sqrt(n))==.(round(sig0/sqrt(n),4)))), col="red",adj=0)
mtext(bquote(paste(N==.(N), " échantillons de taille ",n==.(n)," : ",
list(bar(hat(mu))==.(round(mean(mest),3)),hat(s[hat(mu)])==.(round(sd(mest),4))))),
col="grey40",adj=1,line=-1)
title(bquote(paste("Loi Normale : ", bolditalic(N)(mu,sigma^2) )),line=3)
curve(dnorm(x,mu0,sig0/sqrt(n)),add=T,col="red", lwd=2)
# calcul des variances observées sans biais
vest <- apply(Y,2,var)
mean(vest); sig0^2
var(vest); 2*sig0^4/n
# représentations graphiques
boxplot(vest)
points(mean(vest), pch=15, cex=1.25)
points(sig0^2, col="red",pch=16)
hist(vest, main="", freq=F, xlab=bquote(hat(S)^2))
mtext(bquote(list(mu[0]==.(mu0), sigma[0]==.(sig0),
over(2*sigma[0]^4,n)==.(round(2*sig0^4/n,4)))), col="red",adj=0)
mtext(bquote(paste(N==.(N), " échantillons de taille ",n==.(n)," : ",
list(bar(hat(S)^2)==.(round(mean(vest),3)),
hat(s)[hat(S)^2]^2==.(round(var(vest),4))))), col="grey40",adj=1,line=-1)
title(bquote(paste("Loi Normale : ", bolditalic(N)(mu,sigma^2) )),line=3)
curve(dnorm(x,sig0^2,sqrt(2/n)*sig0^2),add=T,col="red", lwd=2)
# calcul des variances observées biaisées
var_obs <- function(x) var(x)*(n-1)/n
vbest <- apply(Y,2,var_obs)
mean(vbest); (n-1)*sig0^2/n
var(vbest)
# représentations graphiques
boxplot(cbind(vest,vbest),names=c(expression(hat(S)^2),expression(S^2)))
points(c(mean(vest),mean(vbest)), pch=15, cex=1.25)
points(c(sig0^2,sig0^2), col="red",pch=16)
hist(vbest, freq=F)
curve(dnorm(x,sig0^2,sqrt(2/n)*sig0^2),add=T,col="red", lwd=2)
On simule N échantillons de taille n d’une loi N (µ0 , σ02 ) donc
σ2
– N valeurs de µ b −→ µ0 et la variance sb2 ' 0 −→ 0
b dont la moyenne µ
n→∞ µ
b n n→∞
on représente la distribution des N valeurs de µ
b qui tend vers une loi normale lorsque n tend vers
l’infini,
2 σ04
– N valeurs de Sby2 dont la moyenne Sby2 −→ σ02 et la variance Sbbs22 ' −→ 0
n→∞ y n n→∞
on représente la distribution des N valeurs de Sby2 qui tend vers une loi normale lorsque n tend
vers l’infini,
2 σ04
– N valeurs de Sy2 dont la moyenne Sy2 −→ σ02 et la variance Sbs22 ' −→ 0
n→∞ y n n→∞

12
Exercice 6
Générer N réalisations d’un échantillon (y1 , . . . , yn ) de taille n d’une loi Uniforme sur [0, b].
Calculer pour chaque réalisation la valeur observée de l’estimateur des moments eb = 2 y, celle de l’EMV
(n + 1)
b = maxi (yi ) et celle de sa version sans biais bb
b et décrire les fluctuations d’échantillonnage de
n
ces estimations.

Loi de Uniforme U(0, b)


set.seed(12345)
n <- 100
b0 <- 10
N <- 2000
Y <- sapply(1:N, function(N) runif(n,0,b0))
# calcul des moyennes observés
mest <- colMeans(Y)
# estimateur des moments
Mest<- mest*2
mean(Mest)
var(Mest); sd(Mest)
b0^2/(3*n)
# EMV
Vest <- apply(Y,2,max)
mean(Vest); b0*n/(n+1)
var(Vest); sd(Vest)
# EMV sans biais
Vestc <- Vest*(n+1)/n
mean(Vestc)
var(Vestc); sd(Vestc)
b0^2/(n*(n+2))
# représentations graphiques
boxplot(cbind(Mest,Vest,Vestc),
names=c(expression(tilde(b)), expression(hat(b)), expression(hat(b)*(n+1)/n)))
points(c(mean(Mest),mean(Vest),mean(Vestc)), pch=15)
points(rep(b0,3), col="red",pch=20)
hist(Mest, main="", freq=F, xlab=bquote(tilde(b)))
mtext(bquote(b[0]==.(b0)), col="red",adj=0)
mtext(bquote(paste(N==.(N), " échantillons de taille ",n==.(n)," : ",
list(bar(tilde(b))==.(round(mean(Mest),3)),
hat(s[tilde(b)])^2==.(round(var(Mest),4))))), col="grey40",adj=1,line=-1)
title(bquote(paste("Loi Uniforme : ", bolditalic(U)(0,b) )),line=3)
curve(dnorm(x,b0,b0/sqrt(3*n)),add=T,col="red", lwd=2)
hist(Vest, main="", freq=F, xlab=bquote(hat(b)))
mtext(bquote(b[0]==.(b0)), col="red",adj=0)
mtext(bquote(paste(N==.(N), " échantillons de taille ",n==.(n)," : ",
list(bar(hat(b))==.(round(mean(Vest),3)),
hat(s[hat(b)])^2==.(round(var(Vest),4))))), col="grey40",adj=1,line=-1)
title(bquote(paste("Loi Uniforme : ", bolditalic(U)(0,b) )),line=3)
hist(Vestc, main="", freq=F, xlab=bquote(hat(b)))
mtext(bquote(b[0]==.(b0)), col="red",adj=0)
mtext(bquote(paste(N==.(N), " échantillons de taille ",n==.(n)," : ",
list(bar(hat(b[c]))==.(round(mean(Vestc),3)),
hat(s[hat(b[c])])^2==.(round(var(Vestc),4))))), col="grey40",adj=1,line=-1)
title(bquote(paste("Loi Uniforme : ", bolditalic(U)(0,b) )),line=3)

13
On simule N échantillons de taille n d’une loi U(0, b0 ) donc
b20
– N valeurs de eb = 2 y dont la moyenne eb −→ b0 et la variance Sbe2 ' −→ 0
n→∞ b 3 n n→∞
on représente la distribution des N valeurs de eb qui tend vers une loi normale lorsque n tend vers
l’infini (par le TCL),
n
– N valeurs de bb = maxi (yi ) dont la moyenne bb −→ b0 on représente la distribution des N
n→∞ n + 1
valeurs de bb qui ne tend pas vers une loi normale lorsque n tend vers l’infini,
n+1 b b20
– N valeurs de bbc = b dont la moyenne bbc −→ b0 et la variance Sb2b ' −→ 0
n n→∞ bc n(n + 2) n→∞

on représente la distribution des N valeurs de bbc qui ne tend pas vers une loi normale lorsque n
tend vers l’infini,
!
b0 − bb
la loi de T = n tend vers une loi exponentielle Exp(1) quand n tend vers l’infini
b0
T <- n*(1-Vest/b0)
mean(T); var(T); sd(T)
hist(T, freq=F, main="")
hist(T, main="", freq=F, xlab=bquote(T), ylim=c(0,1))
mtext(bquote(b[0]==.(b0)), col="red",adj=0)
mtext(bquote(paste(N==.(N), " échantillons de taille ",n==.(n)," : ",
list(bar(T)==.(round(mean(T),3)), hat(s[T])^2==.(round(var(T),4))))),
col="grey40",adj=1,line=-1)
title(bquote(paste("Loi Uniforme : ", bolditalic(U)(0,b) )),line=3)
lines(sort(T),dexp(sort(T),1), col="red", lwd=2)

14
Lois de probabilités usuelles
A. Fonctions de densité de lois continues

loi paramètre(s) densité espérance variance


Uniforme minimum a 1 a+b (b − a)2
U(a, b) f (x) =
sur (a, b) maximum b b−a 2 12
a, b ∈ R pour x ∈ [a, b]
1 1
 
moyenne µ
Normale N (µ, σ) f (x) = √ exp − 2 (x − µ)2 µ σ
écart-type σ 2πσ 2σ
µ ∈ R, σ ∈ R+∗ pour x ∈ R
intensité λ 1 1
Exponentielle Exp(θ) f (x) = λ exp {−λ x} θ= θ2 =
θ = λ−1 λ λ2
λ ∈ R+∗ pour x ∈ R+
1 x
 
k
d.d.l.(a) k f (x) =   x 2 −1 exp −
Khi-deux χ2 (k) 22 Γ
k
k 2 k 2k
2
k ∈ N∗ pour x ∈ R+
1 x
 
forme κ
Gamma G(κ, θ) f (x) = κ xκ−1 exp − κθ κ θ2
échelle θ θ Γ(κ) θ
(intensité θ−1 )
κ, θ ∈ R+∗ pour x ∈ R+
(a) d.d.l. : degrés de liberté Z +∞

Γ désigne la fonction Gamma d’Euler : pour κ ∈ R+∗ , Γ(κ) = tκ−1 e−t dt (Γ(1) = 1 et Γ(1/2) = π)
0

B. Lois de probabilités discrètes

loi paramètre(s) probabilité espérance variance


1
Uniforme k P (X = x) = k+1 (k − 1)(k + 1)
U(k) k
sur {1, . . . , k} k∈ N∗ pour x ∈ {1, . . . , k} 2 12
p P (X = x) = px (1 − p)1−x p p (1 − p)
Bernoulli Be(p)
p ∈ [0, 1] pour x ∈ {0, 1}
n
Binomiale B(n, p) P (X = x) = Cnx px (1 − p)n−x np np (1 − p)
p
n ∈ N, p ∈ [0, 1] pour x ∈ {0, 1, . . . , n}
λx
Poisson P(λ) λ P (X = x) = exp {−λ} λ λ
x!
λ ∈ R+∗ pour x ∈ N

15

Vous aimerez peut-être aussi