Vous êtes sur la page 1sur 91

Statistique bayesienne avec R

Julien JACQUES

Université de Lyon, France

1 / 78
Références et logiciels
Ouvrages

Packages R
 package bayess, BayesFactor, BMA, BAS
 package rjags (interface du logiciel JAGS)
2 / 78
Plan

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

3 / 78
Loi normale N (µ, σ 2 )

densité normale N(0,1)

 densité :
p(x|µ, σ 2 ) = √1 exp(−(x − µ)2 /2σ 2 )
σ 2π
 espérance : µ
 variance : σ 2
 sous R : dnorm

−3 −2 −1 0 1 2 3

4 / 78
Loi de Bernoulli B(p)

Modélise une variable aléatoire pouvant prendre 2 valeurs {0, 1}, 1 en


cas de succès et 0 en cas d’échec, où p est la probabilité du succès.
 probabilité : p(x = 1|p) = p

 espérance : p
 variance : p(1 − p)
 sous R : dnbinom avec size=1

5 / 78
Loi binomiale B(n, p)

Modélise le nombre de succès lorsqu’on répète n expériences


indépendante de Bernoulli.
probabilité binomiale B(10,.3)
 probabilité :

p(x = k |p) = Cnk pk (1 − p)n−k pour tout


k ∈ {0, . . . , n}
 espérance : np
 variance : np(1 − p)
 propriétés asymptotiques :
 B(n, p) → P(np) si n grand et np petit
 B(n, p) → N (np, np(1 − p)) si np et
np(1 − p) grands
 sous R : dbinom 0 2 4

x
6 8 10

6 / 78
loi géométrique G(p)

Modélise le nombre d’échecs d’une suite d’expériences de Bernoulli


avant l’obtention du premier succès.
probabilité Geométrique G(.5)

 probabilité : p(x = k |p) = p(1 − p)k


pour tout k ∈ N
 espérance : (1 − p)/p
 variance : (1 − p)/p2
 sous R : dgeom

0 2 4 6 8 10

7 / 78
loi binomiale négative BN (s, p)

Modélise le nombre d’échecs d’une suite d’expériences de Bernoulli


avant l’obtention de s succès.
probabilité Binomiale Négative BN(5,.5)

 probabilité :
k s k
p(x = k |p) = Cs+k −1 p (1 − p) pour
tout k ∈ N
 espérance : s(1 − p)/p
 variance : s(1 − p)/p2
 sous R : dnbinom

0 5 10 15

8 / 78
loi de Poisson P(λ)

Modélise un nombre d’événements indépendants dans un intervalle de


temps donné.
probabilité Poisson P(2)

 probabilité : p(x = k |λ) = λk e−λ /k !


pour tout k ∈ N
 espérance : λ
 variance : λ
 propriété asymptotique :
 P(λ) → N (λ) si λ grand
 sous R : dpois
0 2 4 6 8 10

9 / 78
loi exponentielle E(λ)

Modélise un temps entre deux événements indépendants.


densite exponentielle E(3)

 probabilité : p(x|λ) = λe−λx pour tout


x ≥0
 espérance : 1/λ
 variance : 1/λ2
 sous R : dexp

0 2 4 6 8 10

10 / 78
loi gamma Gamma(α, λ)

Modélise le temps nécessaire pour l’observation de α événements


indépendants. Cette définition est étendue au cas où α n’est pas
nécessairement entier (mais positif).
densite Gamma(5,3)

λα x α−1 e−λx
 probabilité : p(x|α, λ) = Γ(α) pour
tout x ≥ 0
 espérance : α/λ
 variance : α/λ2
 sous R : dgamma

0 2 4 6 8 10

11 / 78
loi beta Beta(α, β)

Loi très flexible sur ]0, 1[, symétrique lorsque α = β.


 probabilité :
Γ(α+β) α−1
p(x|α, β) = Γ(α)Γ(β) x (1 − x)β−1
 espérance : α/(α + β)
 variance : αβ/[(α + β)2 (α + β + 1)]
 Beta(1, 1) est la loi uniforme sur ]0, 1[
 sous R : dbeta

12 / 78
loi de Cauchy centrée Cauchy (0, a)

1 a
 probabilité : p(x|a) = π x 2 +a2
 espérance, variance, ... : non définie
 sous R : dcauchy

13 / 78
Plan

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

14 / 78
Contents

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

15 / 78
Les données normaldata
normaldata
 package bayess
 mesures de différences de vitesses de deux faisceaux de lumière
parcourant la même distance dans deux directions orthogonales
(expérience d’Illingworth en 1927).
15
10
Frequency

5
0

−0.8 −0.6 −0.4 −0.2 0.0 0.2 0.4 0.6

shift

16 / 78
Approche fréquentiste vs bayesienne

Approche fréquentiste
 la variable d’intérêt x est supposée suivre une loi paramétrique :

x ∼ f (·, θ)

 où θ ∈ Θ est un paramètre fixe, inconnu


 que l’on estime à partir un échantillon i.i.d. x = (x1 , . . . , xn )
 en maximisant la vraisemblance des données
n
Y
`(θ|x) = f (xi , θ)
i=1

17 / 78
Exemple 1 - données normaldata

vraisemblance des données normaldata en fonction de µ pour un


modèle N (µ, σ 2 )
vraisemblance en fonction de la moyenne m

2.5e−19
n

2.0e−19
Y √
`(θ|x) = exp{−(xi − µ)2 /2σ 2 }/ 2πσ

vraisemblance
1.5e−19
i=1

exp{−[n(µ − x̄)2 + s2 ]/2σ 2 }/σ n

1.0e−19

5.0e−20
0.0e+00
−0.8 −0.6 −0.4 −0.2 0.0 0.2 0.4 0.6

18 / 78
Approche fréquentiste vs bayesienne

Approche bayesienne
 permet d’introduire l’information a priori dont on dispose sur θ
(i.e. l’information disponible sur θ avant d’observer x ) :

19 / 78
Approche fréquentiste vs bayesienne

Approche bayesienne
 permet d’introduire l’information a priori dont on dispose sur θ
(i.e. l’information disponible sur θ avant d’observer x ) :
pour Illingworth, il ne doit pas y avoir de différence de vitesse

19 / 78
Approche fréquentiste vs bayesienne

Approche bayesienne
 permet d’introduire l’information a priori dont on dispose sur θ
(i.e. l’information disponible sur θ avant d’observer x ) :
pour Illingworth, il ne doit pas y avoir de différence de vitesse
 on note p(θ) la loi a priori (prior ) de θ

19 / 78
Approche fréquentiste vs bayesienne

Approche bayesienne
 permet d’introduire l’information a priori dont on dispose sur θ
(i.e. l’information disponible sur θ avant d’observer x ) :
pour Illingworth, il ne doit pas y avoir de différence de vitesse
 on note p(θ) la loi a priori (prior ) de θ
 on ne s’intéresse plus alors à la vraisemblance `(θ|x) mais à la loi a
posteriori (posterior )

`(θ|x)p(θ)
p(θ|x) = ∝ `(θ|x)p(θ)
p(x)

(on reconnait le théorème de Bayes)

Rq : contrairement à la vraisemblance, la loi a posteriori p(θ|x) est une


distribution de probabilité sur Θ
19 / 78
Exemple 1 - données normaldata
 x ∼ N (µ, σ 2 ) avec variance σ 2 connue
 supposons la loi a priori sur µ : N (0, σ 2 )
 on peut calculer la loi a posteriori

p(µ|x) ∝ p(µ)`(θ|x)
∝ exp{−µ2 /2σ 2 } exp{−n(µ − x̄)2 /2σ 2 }
∝ exp{−(n + 1)[µ − nx̄/(n + 1)]2 /2σ 2 }
n σ2
⇒ µ|x ∼ N( x̄, )
n+1 n+1
 Rq 1 : la moyenne de la loi a posteriori est plus proche de 0 que
l’estimateur classique x de µ : cela est dû à la loi a priori centrée en
0, qui suppose donc que µ est assez proche de 0.
 Rq 2 : l’influence de la loi a priori s’estompe quand la taille
d’échantillon grandit
20 / 78
Estimation bayesienne

Inférence
 estimation ponctuelle θ̂ de θ ?
 on peut choisir l’espérance de p(θ|x)
 on peut aussi choisir la maximum a posteriori (MAP) : la valeur θ̂ qui
maximise p(θ|x) en θ
(mais pas toujours simple à trouver...)
 l’approche bayesienne est une approche inférentielle complète qui
permet de tout faire : estimation, intervalle de confiance, test
d’hypothèse, vérification de modèle, ...

21 / 78
Exercice 1

1. récupérer les données normaldata dans le package bayess. Dans


ces données, la seconde variable (que l’on appelera shift) mesure
de différences de vitesses de deux faisceaux de lumière parcourant
la même distance dans deux directions orthogonales (expérience
d’Illingworth en 1927).
2. estimer l’espérance µ de la variable shift par maximum de
vraisemblance. Tracer la vraisemblance.
3. en supposant une loi a priori N (0, σ 2 ) sur µ, avec σ 2 la variance de la
variable shift, estimer µ par maximum a posteriori. Tracer la loi a
posteriori.

22 / 78
Différents types de loi a priori

Le choix de la loi a priori peut être fait :


 en fonction du réel a priori dont on dispose
(mais attention, la loi a posteriori n’est pas toujours calculable
analytiquement...)

23 / 78
Différents types de loi a priori

Le choix de la loi a priori peut être fait :


 en fonction du réel a priori dont on dispose
(mais attention, la loi a posteriori n’est pas toujours calculable
analytiquement...)
 de sorte à permettre le calcul analytique de la loi a posteriori : on
parle de loi a priori conjuguée
(mais attention à l’influence des hyper-paramètres de la loi conjuguée...)

23 / 78
Différents types de loi a priori

Le choix de la loi a priori peut être fait :


 en fonction du réel a priori dont on dispose
(mais attention, la loi a posteriori n’est pas toujours calculable
analytiquement...)
 de sorte à permettre le calcul analytique de la loi a posteriori : on
parle de loi a priori conjuguée
(mais attention à l’influence des hyper-paramètres de la loi conjuguée...)
 de sorte à atténuer l’effet de l’a priori : on parle de loi a priori non
informative
(dans ce cas la loi a posteriori se rapproche de la vraisemblance...)

23 / 78
Lois a priori conjuguées
Quand on ne dispose pas d’a priori fiable, on opte souvent pour le choix
de la simplicité, c’est-à-dire le choix d’une loi a priori conjuguée qui
facilite le calcul de la loi a posteriori :

24 / 78
Lois a priori non informative

Une loi non informative est une loi qui porte une information sur le
paramètre à estimer dont le poids dans l’inférence est réduit.
 par exemple, si θ peut prendre q valeurs, alors on choisit p(θ) = 1/q
pour tout θ ∈ Θ
 loi de Jeffreys :
 c’est une méthode pour construire des loi donnant un poids plus
important aux valeurs θ où l’informationpde Fisher I(θ) (quantité d’info. sur
θ apporté par x) est grande : p(θ) = C I(θ) R
 cette méthode conduit souvent à des lois impropres ( Θ p(θ)dθ = +∞).

25 / 78
Intervalle de crédibilité bayesien

 dans une approche bayesienne on parle d’intervalle de crédibilité


plutôt que d’intervalle de confiance :

p(θ ∈ IC(θ, x)|x) = 1 − α

où 1 − α est la probabilité qu’un θ ∼ p(θ|x) appartienne à l’intervalle


IC(θ, x).
 le calcul de cet intervalle est trivial dès lors que l’on dispose de
p(θ|x), en utilisant les quantiles de cette dernière
(ce qui n’est généralement pas le cas en dehors du contexte de loi a priori
conjuguée, mais dans ce cas il suffit d’avoir recours à un algorithme
d’approximation ...)

26 / 78
Exercice 2
On veut connaı̂tre la probabilité θ de tomber sur face pour une pièce
donnée.
Nous considérons plusieurs a priori :
1. loi bêta(1,1) : toutes les valeurs de θ sont équiprobables (a priori non
informatif) : p(θ) ∝ 1, ∀θ
2. loi bêta(2,2), bêta(4,4), bêta(8,8)
Nous observons l’échantillon suivant : x = {1, 1, 1, 0, 1, 1, 0, 0, 1, 1}, soit
y = 7 ”face” et 3 ”pile”.
Questions
1. Quelle est la vraisemblance de x ?
2. Pour chaque loi a priori :
2.1 calculer et représenter la loi a posteriori de θ,
2.2 estimer θ ponctuellement,
2.3 donner un intervalle de crédibilité de θ.
27 / 78
Exercice 2 - correction
1. vraisemblance : p(x|θ) = θ7 (1 − θ)3
2. la loi bêta(a,b) étant conjuguée pour la loi binomiale, on peut calculer
la loi a posteriori :
 loi a priori : p(θ) = bêta(a, b) ∝ θa−1 (1 − θ)b−1
 loi a posteriori : p(θ|x) = bêta(a + 7, b + 3) ∝ θa+7−1 (1 − θ)b+3−1

28 / 78
Exercice 2 - correction
1. vraisemblance : p(x|θ) = θ7 (1 − θ)3
2. la loi bêta(a,b) étant conjuguée pour la loi binomiale, on peut calculer
la loi a posteriori :
 loi a priori : p(θ) = bêta(a, b) ∝ θa−1 (1 − θ)b−1
 loi a posteriori : p(θ|x) = bêta(a + 7, b + 3) ∝ θa+7−1 (1 − θ)b+3−1

28 / 78
Exercice 2 - correction
prior = loi beta(1,1) prior = loi beta(2,2)

vraisemblance vraisemblance

prior prior

posterior posterior

0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0

theta theta

prior = loi beta(4,4) prior = loi beta(8,8)

vraisemblance vraisemblance

prior prior

posterior posterior

0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0

theta theta

29 / 78
Exercice 2 - correction

Estimation ponctuelle de θ
La loi a posteriori étant une bêta(a+7,b+3), on peut estimer θ par
a+7
 l’espérance de sa loi a posteriori : a+b+10
a+6
 le mode de sa loi a posteriori : a+b+8

Intervalle de crédibilité de θ
L’intervalle de crédibilité se calcule à partir des quantiles de la loi a
posteriori

30 / 78
Contents

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

31 / 78
Tester la validité d’une hypothèse

Question : est-ce que µ = 0 pour les normaldata ?

32 / 78
Tester la validité d’une hypothèse

Question : est-ce que µ = 0 pour les normaldata ?


Approche fréquentiste
On met en place un test de Student pour décider entre
 H0 : µ = 0
 H1 : µ 6= 0

32 / 78
Tester la validité d’une hypothèse

Question : est-ce que µ = 0 pour les normaldata ?


Approche fréquentiste
On met en place un test de Student pour décider entre
 H0 : µ = 0
 H1 : µ 6= 0

Approche bayésienne
On compare les deux modèles
 M1 : x ∼ N (0, σ 2 )
 M2 : x ∼ N (µ, σ 2 )

32 / 78
Facteur de bayes

Choix entre deux modèles


On veut comparer p(M1 |x) et p(M2 |x).
Pour cela on introduit le Bayes factor :

p(x|M2 ) p(M2 |x)/p(M1 |x)


B21 (x) = =
p(x|M1 ) p(M2 )/p(M1 )

qui correspond au odds ratio ou rapport de vraisemblance classique 1 ,


sauf qu’ici le paramètre est intégré et non maximisé sous chaque
modèle

1 déviance D = −2 ln(p(x|M1 , θ̂)/p(x|M2 , θ̂))


33 / 78
Facteur de bayes
Echelle d’évidence de Jeffrey’s
Bayes factor :

p(x|M2 ) p(M2 |x)/p(M1 |x)


B21 (x) = =
p(x|M1 ) p(M2 )/p(M1 )

 si log10 (B21 (x)) ∈ [0, 0.5], la certitude que M1 est fausse est faible
 si log10 (B21 (x)) ∈ [0.5, 1], la certitude que M1 est fausse est
substantielle
 si log10 (B21 (x)) ∈ [1, 2], la certitude que M1 est fausse est forte
 si log10 (B21 (x)) > 2, la certitude que M1 est fausse est décisive

et idem en faveur de M1 pour les valeurs négatives.

Rq : log10 (B21 (x)) > 1 ⇔ B21 > 10, log10 (B21 (x)) > 2 ⇔ B21 > 100,...
34 / 78
Facteur de bayes

Calcul du facteur de bayes


Bayes factor :
R
p(M2 |x)/p(M1 |x) ` (θ |x)p2 (θ2 )dθ2
Θ 2 2
B21 (x) = =R 2
p(M2 )/p(M1 ) ` (θ |x)p1 (θ1 )dθ1
Θ1 1 1

qui peut parfois se calculer analytiquement.


Quand ce n’est pas le cas, on utilise des approximations numériques
(Méthodes de Monte Carlo)

35 / 78
Tests d’hypothèse sous R

 Pour comparer deux populations, on utilisera :


 fréquentiste : t.test ou wilcox.test
 bayésien : ttestBF
 Pour comparer plus de deux populations, on utilisera :
 fréquentiste : aov ou kruskal.test
 bayésien : anovaBF

36 / 78
Exemple 2 - données sleep
Les données sleep contiennent l’effet de 2 somnifères (group) sur la
durée de sommeil, pour 10 patients.

5
4
3
extra

2
1
0
−1

1 2

group

 tester la différence entre les groupes avec un approche classique


37 / 78
Exemple 2 - données sleep
 nous allons maintenant évaluer la différence entre les groupes avec
une approche bayésienne :
 δ = µ1 −µ
σ
2

 on compare les modèles


 M1 : (µ1 − µ2 )/σ ∼ N (0, 1)
 M2 : (µ1 − µ2 )/σ ∼ N (δ, 1) avec δ ∼ Cauchy(rscale)

 La certitude que M1 est fausse est donc forte !


38 / 78
Exemple 2 - données sleep
 nous pouvons également simuler la distribution a posteriori de
(µ1 − µ2 )/σ
Trace of var1 Density of var1

0.8
0

0.6
−1

0.4
−2

0.2
−3

0.0

0 200 400 600 800 1000 −3 −2 −1 0 1

Iterations N = 1000 Bandwidth = 0.1139

39 / 78
Exercice 3
ToothGrowth contient la longueur des dents de 60 cochons d’Inde en
fonction de deux sources de vitamine C (jus d’orange et acide ascorbique).
Given : supp

VC

OJ

0.5 1.0 1.5 2.0


35
30
25
20
len

15
10
5

0.5 1.0 1.5 2.0

ToothGrowth data: length vs dose, given type of supplement

Tester les effets sources et doses avec :


 une approche classique

 une approche bayésienne


40 / 78
Contents

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

41 / 78
Méthodes de Monte Carlo
Le calcul de la loi a posteriori et des facteurs de Bayes font intervenir le
calcul de : Z
`(θ|x)p(θ)dθ
Θ
qui est souvent non calculable analytiquement.

42 / 78
Méthodes de Monte Carlo
Le calcul de la loi a posteriori et des facteurs de Bayes font intervenir le
calcul de : Z
`(θ|x)p(θ)dθ
Θ
qui est souvent non calculable analytiquement.
Méthode de Monte-Carlo
Pour estimer l’intégrale
Z
I= h(x)g(x)dx

 simuler x1 , . . . , xn ∼ g(x)
 approcher I par
n
1X
În = h(xi )
n
i=1
42 / 78
Méthodes de Monte Carlo
Lorsqu’il est difficile de simuler suivant g(·), on peut utiliser l’importance
sampling
Importance Sampling
Pour estimer l’intégrale
Z Z
g(x)
I = h(x)g(x)dx = h(x) γ(x)dx
γ(x)

 simuler x1 , . . . , xn ∼ γ(x)
 calculer wi = g(xi )/γ(xi )
 approcher I par Pn
w1 h(x1 )
În = i=1
Pn
i=1 wi

43 / 78
Exercice 4
R2 x2
On cherche dans cet exercice à approcher l’intégrale I = 0 e− 2 dx.
Pour cela nous utilisons une méthode de Monte-Carlo. Soit X1 , . . . , Xn
un échantillon de variables aléatoires uniformes sur [0, 2], et soit
X2
i
Yi = e− 2 pour tout i = 1, n.
 Que vousPndis la loi des grands nombres sur la convergence de
Ȳn = n1 i=1 Yi lorsque n → ∞ ?
 Utiliser ce résultat pour approcher l’intégrale I, en simulant n
variables aléatoires Yi (n = 100, 104 , 106 ).
 Répéter 100 fois ces approximations, et représenter les résultats
sous la forme d’une boı̂te à moustache pour chacune des 3 valeurs
de n utilisées. Que constatez-vous ?
 Représenter cette fois ces résultats sous la forme d’un histogramme
(pour chaque valeur de n). Avez-vous une idée de la distribution de
ces résultats d’approximation ? Que vous dit le théorème centrale
limite ?
44 / 78
Plan

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

45 / 78
Régression linéaire ordinaire
Le modèle linéaire ordinaire
y|α, β, σ 2 ∼ N (α1n + xβ, σ 2 In )
avec donc

E[yi |α, β, σ 2 ] = α + β1 xi1 + . . . + βp xip


2
V (yi |α, β, σ ) = σ2

L’estimation par maximum de vraisemblance (débiaisé pour σˆ2 ) donne

α̂ = ȳ
β̂ = (x0 x)−1 x0 (y − ȳ )
(y − α1n + xβ)0 (y − α1n + xβ) s2
σˆ2 = =
n−p−1 n−p−1

46 / 78
Régression bayésienne

avec a priori non informatif de Jeffreys


y|α, β, σ 2 ∼ N (α1n + xβ, σ 2 In )
(α, β, σ 2 ) ∝ σ −2

Les estimateurs bayésiens (espérance E π de la loi a posteriori) sont


alors :

E π [α|y] = α̂
E π [β|y] = β̂
2
π
E [σ |y] = s2 /(n − p − 3)

Notons que les estimations de α et β sont les mêmes que dans le cas
ordinaires, et que l’estimation de σ 2 est un peu plus grande (plus
pessimiste).
47 / 78
Régression bayésienne

avec a priori informatif de Zellner


 idée de Zellner : proposer un a priori conjugué mais en réduisant le
nombre d’hyper-paramètres
⇒ a priori gaussien sur β dont on doit fixer l’espérance β̃ et le facteur
d’importance g
(g = n ⇔ a priori a autant d’importance qu’une observation,
g = 1 ⇔ et il a autant d’importance que toutes les données ensemble)
⇒ a priori non informatif de Jeffreys (impropre) sur (α, σ 2 )

y|α, β, σ 2 ∼ N (α1n + xβ, σ 2 In )


β|α, σ 2
∼ N (β̃, gσ 2 (x0 x)−1 )
(α, σ 2 ) ∝ σ −2
g
L’estimateur bayésien pour β est alors E π [β|y] = g+1 (β̂ + β̃/g)
48 / 78
Régression bayésienne

Quelques a priori particuliers bien connus


 ridge regression : β ∼ N (0, λI):
n p p
X X X
β̂ ridge = argmin{ (yi − α − βj xij )2 + λ βj2 }
β
i=1 j=1 j=1

 LASSO regression : β ∼ Laplace(λ):


n p p
X X X
LASSO 2
β̂ = argmin{ (yi − α − βj xij ) + λ |βj |}
β
i=1 j=1 j=1

49 / 78
Régression bayésienne sous R : BayesReg
La fonction BayesReg (package bayess) implémente une régression
bayésienne avec a priori de Zellner

50 / 78
Régression bayésienne sous R : BayesReg

La fonction BayesReg (package bayess) implémente une régression


bayésienne avec a priori de Zellner

50 / 78
Exercice 5 : données longley

 charger les données longley, les étudier puis réaliser une


régression ordinaire
 comparer à une régression bayésienne en jouant sur les
hyper-paramètres de l’a priori de Zellner

51 / 78
Choix de modèle en régression bayésienne

 avec p variables, le nombre de modèles possibles est 2p


 il est impossible de comparer tous les modèles dans une approche
fréquentiste classique
 en régression bayésienne, le choix du modèle (i.e. des variables à
inclure dans le modèle) est considéré comme un paramètre, avec un
a priori généralement uniforme (ou plus généralement beta-binomial).
 la fonction ModChoBayesReg implémente ce modèle de régression
bayésienne intégrant le choix de modèle.
 si p < 15 les probabilités a posteriori de tous les modèles sont calculées
 si p > 15, une approximation MCMC est utilisée

52 / 78
Régression bayésienne sous R : BayesReg

La fonction ModChoBayesReg implémente un modèle de régression


bayésienne avec a priori de Zellner intégrant le choix de modèle.

53 / 78
Exercice 5 (suite) : données longley

 choisissez le meilleur modèle de régression bayésienne, en jouant


sur le paramètre g de Zellner

54 / 78
Bayesian Model Averaging
 choisir un unique modèle Mm parmi 2p modèles possible peut-être
restrictif, sachant que les différence entre leur probabilité a posteriori
sont parfois faible
 le Bayesian Model Averaging préconise de moyenner les modèles en
fonction de leur probabilité a posteriori. Ainsi :
M
X
E π [β|y] = E π [β|y|Mm ] p(Mm |y)
m=1

où M < 2p est le nombre de modèle conservés (on ne conserve que les
modèles dont la probabilité a posteriori est supérieure à 1/OR le maximum
des probabilités a posteriori).
 cette technique est utilisable dès lors que l’on fait de la prédiction (en
classification également donc), et quelque soit le type de modèle que
l’on utilise (réseaux de neurones, arbres de régression ...)
55 / 78
Bayesian Model Averaging

 la fonction bicreg du package BMA implémente cette technique,


mais sans grand contrôle sur le choix des a priori.
 la fonction bas.lm du package BAS permet de plus contrôler les loi a
priori.

56 / 78
Exercice 5 (suite) : données longley

 Tester le Bayesian Model Averaging avec les fonctions bicreg.

57 / 78
Pour aller plus loin...

Sélection bayésienne de variables en régression linéaire


Gilles Celeux∗, Jean-Michel Marin†et Christian Robert‡
18 mai 2006 Bayesian Model Selection in Social Research
STOR
Adrian E. Raftery

Résumé Sociological Methodology, Vol. 25 (1995), 111-163.


Nous nous intéressons à la sélection bayésienne de variables en régression linéaire. Stable URL:
Nous en abordons tous les aspects afin de fournir au lecteur un guide précis. Nous http://links.jstor.org/sici ?sici=0081-1750%281995%2925%3C 111 %3ABMSISR%3E2.0.C0%3B2-0
étudions successivement les cas où les loi a priori sur les paramètres des modèles sont
informatives et non informatives. Dans le cas informatif, nous proposons d’utiliser la
loi a priori de Zellner pour le modèle contenant toutes les variables et une loi a priori
de Zellner compatible avec la précédente pour chaque sous-modèle. Dans le cas non
Your use of the JSTOR archive indicates your acceptance of JSTOR' s Terms and Conditions of Use, available at
informatif, nous montrons d’abord que l’inférence bayésienne utilisant des loi a priori http://www.jstor.org/about/terms.html. JSTOR's Terms and Conditions of Use provides, in part, that unless you
faiblement informatives construites à partir de la loi de Zellner est très sensible à la have obtained prior permission, you may not download an entire issue of a journal or multiple copies of articles, and
valeur prise par un hyperparamètre, ce qui nous amène à déconseiller son utilisation. you may use content in the JSTOR archive only for your personal, non-commercial use.
Nous proposons alors une nouvelle loi a priori hiérarchique basée sur la loi de Zellner.
Nous montrons que l’utilisation de cette loi a priori assure d’excellentes performances de Each copy of any part of a JSTOR transmission must contain the same copyright notice that appears on the screen or
sélection, d’un point de vue explicatif, par rapport aux critères fréquentiels classiques. printed page of such transmission.
Enfin, lorsque le nombre de variables est important, nous considérons les aspects algo-
Sociological Methodology is published by American Sociological Association. Please contact the publisher for
rithmiques et, en particulier, nous montrons que l’échantillonneur de Gibbs fonctionne further permissions regarding the use of this work. Publisher contact information may be obtained at
parfaitement bien pour sélectionner les variables pertinentes, contrairement à ce qui http://www.jstor.org/joumals/asa.html.
est parfois affirmé.

Mots clés : modèle de régression linéaire, sélection bayésienne de variables,


loi a priori de Zellner, lois a priori compatibles, modèles hiérarchiques,
Sociological Methodology
échantillonneur de Gibbs ©1995 American Sociological Association
Abstract
Bayesian variable selection in linear regression is considered. All its aspects are JSTOR and the JSTOR logo are trademarks of JSTOR, and are Registered in the U.S. Patent and Trademark Office.
studied in order to provide a precise and efficient userguide. The informative and non- For more information on JSTOR contactjstor-info@umich.edu.
informative cases are analysed. In the informative case, it is suggested to choose the
©2003 JSTOR
Zellner G-prior on the full model and to derive compatible prior distributions for each
sub-model. In the non-informative case, it is shown that, if a Zellner weakly informative

INRIA FUTURS, Équipe SELECT, gilles.celeux@math.u-psud.fr

Auteur correspondant : INRIA FUTURS, Équipe SELECT et CEREMADE, Université Paris Dauphine,
Université Paris-Sud, Laboratoire de Mathématiques, 91425 Orsay, jean-michel.marin@math.u-psud.fr

CEREMADE, Université Paris Dauphine et CREST, INSEE, xian@ceremade.dauphine.fr

http://www .j stor.org/
Tue Oct 14 20:31:39 2003

58 / 78
Exercice 6

 Réaliser une régression bayésienne sur les données de votre choix


(les vôtres idéalement)...

59 / 78
Plan

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

60 / 78
Contents

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

61 / 78
Les graphes acycliques dirigés

Les graphes acycliques dirigés (DAG)


 un outil de modélisation général.
 graphique qui montre les relations (stochastiques et déterministes)
entre les paramètres et les données.
 idée : retranscrire toutes les étapes qui, à partir des paramètres,
permettent de générer les données.

Propriétés des DAG


 acyclique : pas de cycle
 dirigés : les liens ont un sens (direction)

62 / 78
Formalisme des DAG

 Noeuds du graphe
 covariables : donnée fixe, supposée sans erreur : rectangle
ex: âge
 variable aléatoire (donnée observée à modéliser, paramètres) : ellipse
ex: poids à la naissance, intercept, pente
 Liens du graphe
 lien déterministe : flèche en pointillés
ex: µi = α + β × agei
 lien stochastiques : flèche en trait plein
ex: yi ∼ N (µi , σ 2 )
 Tous les noeuds du graphe à un même niveau sont contenus dans un
cadre

63 / 78
Exemple 3 : poids des enfants à la naissance

µg sexei

µf µi yi

i:1..n

64 / 78
Exemple 3 : poids des enfants à la naissance

Partie déterministe
µi = µf si l’enfant est une fille (sexei = f )
µi = µg si l’enfant est un graçon (sexei = g)

Partie stochastique

yi ∼ N (µi , σ 2 )

65 / 78
Exemple 3 : poids des enfants à la naissance

Partie déterministe
µi = µf si l’enfant est une fille (sexei = f )
µi = µg si l’enfant est un graçon (sexei = g)

Partie stochastique

yi ∼ N (µi , σ 2 )

Information a priori
 µf et µg sont uniformes entre 2.5kg et 5kg
 σ est uniforme entre 0.2kg et 0.8kg

65 / 78
Contents

Rappel sur les principales lois de probabilités

Statistique bayesienne
Les outils bayesiens
Choix de modèle bayésien
Méthodes de Monte Carlo

Regression et sélection de variables

Les modèles graphiques et leur implémentation sous JAGS


Les graphes acycliques dirigés
JAGS

66 / 78
Projet BUGS: Bayesian inference Using Gibbs
Sampling

Développement et mise à disposition de logiciels flexibles permettant de


mettre en oeuvre l’inférence bayésienne sur des modèles complexes, en
utilisant les MCMC.
Quelques outils disponibles :
 Winbugs
 Openbugs
 JAGS (Just Another Gibbs sampler - Martyn Plummer)
 Stan (nouveaux algorithmes - Andrew Gelman)
 RevBayes (pour la phylogénie)
 ...

67 / 78
Installation de JAGS et rjags

 installer JAGS
http://sourceforge.net/projects/mcmc-jags/
 installer le package R rjags
 guide complet de JAGS :
http://sourceforge.net/projects/mcmc-jags/files/Manuals/

68 / 78
Langage de type BUGS

 c’est un langage déclaratif qui ressemble à R


 déclaration des liens logiques :
noeud <- fonction(certains autres noeuds)
 déclaration des liens stochastiques :
noeud ∼ distribution(certains autres noeuds ou
hyper-paramètres)
 Attention : une sortie du modèle (données cibles que l’on modélise)
doit toujours être définie de façon stochastique.
 un noeud est univarié (utiliser des boucles pour définir des vecteurs,
matrices, array)

69 / 78
Code de l’exemple 3 : poids des enfants à la
naissance

A écrire dans un fichier texte comme ci-dessous.

70 / 78
Langage de type BUGS
 fonctions de base
exp(x) log(x) sqrt(x) min(x1,x2)
step(x) (1 si x ≥ 0, 0 sinon)
ifelse(x,a,b) (si x alors a sinon b)
 fonctions vectorielles
mean(v[]) sd(v[]) inverse(M[])
ranked(v[],k) (k -ème élément de v dans l’ordre croissant)
 fonction de lien pouvant être utilisé à gauche de <-
logit(y) probit(y) log(y)
 exemples de distribution
x∼dbern(p)
x∼dbin(p,n)
x∼dnorm(mu,tau) (attention tau est l’inverse de la variance)
x∼dbeta(alpha,beta)
x∼dmulti(p[],n) (multinomiale)
x∼dmnorm(mu[],T[,]) (T inverse de la matrice de variance)
71 / 78
Utiliser rjags

 il faut commencer par définir les données (attention à la cohérence des


noms dans le modèle et dans les données)
data <- list(poids=poids, sexe=sexe, N=length(poids))

72 / 78
Utiliser rjags

 il faut commencer par définir les données (attention à la cohérence des


noms dans le modèle et dans les données)
data <- list(poids=poids, sexe=sexe, N=length(poids))
 il faut définir l’initialisation (ici 3 différentes):
inits <- list(list(moyennes=c(2600,4000), sigma=500),
list(moyennes=c(4500,2700), sigma=700),
list(moyennes=c(4000,4000), sigma=300))

72 / 78
Utiliser rjags

 il faut commencer par définir les données (attention à la cohérence des


noms dans le modèle et dans les données)
data <- list(poids=poids, sexe=sexe, N=length(poids))
 il faut définir l’initialisation (ici 3 différentes):
inits <- list(list(moyennes=c(2600,4000), sigma=500),
list(moyennes=c(4500,2700), sigma=700),
list(moyennes=c(4000,4000), sigma=300))
 on définie ensuite le modèle, les données, les initialisations
m1 <- jags.model(’modelepoidsnaissance.txt’, data=data,
inits=inits, n.chains=3)

72 / 78
Utiliser rjags

 on itére l’algorithme MCMC sur une période de chauffe


update(m1, 3000)
 puis de nouvelles itérations permettant de générer les paramètres
selon leur loi a posteriori
mcmc1 <- coda.samples(m1,
variable.names=c("moyennes","sigma"), n.iter=2000)
 l’objet mcmc1 ainsi obtenu est une liste de 3 tableaux (1 par init.). Le
tableau i s’obtient par mcmc1[[i]]. Les colonnes de chaque tableau
correspondent aux paramètres, les lignes aux itérations.
 on peut par exemple calculer la moyenne a posteriori de µg :
mean(mcmc1[[1]][, "moyennes[1]"])

73 / 78
Utiliser rjags

 on peut aussi représenter les simulations des paramètres selon leur


lois a posteriori par l’algo. MCMC
plot(mcmc1)
Trace of moyennes[1] Density of moyennes[1]

0.004
4000
3800

0.002
3600
3400

0.000
4000 4500 5000 5500 6000 3400 3600 3800 4000

Iterations N = 2000 Bandwidth = 17.54

Trace of moyennes[2] Density of moyennes[2]

0.0030
3800

0.0020
3400

0.0010
3000

0.0000
4000 4500 5000 5500 6000 2800 3000 3200 3400 3600 3800

Iterations N = 2000 Bandwidth = 22.69

Trace of sigma Density of sigma


800

0.006
700

0.004
600

0.002
500
400

0.000

4000 4500 5000 5500 6000 400 500 600 700 800

Iterations N = 2000 Bandwidth = 10.51

74 / 78
Utiliser rjags
 Pour savoir si on a atteint l’état stationnaire de la chaine MCMC, on
peut calculer l’indice de réduction de la variance de Gelman :
r
variance totale
variance intra-chaı̂nes
moyennes[1] moyennes[2]

1.20
median median

1.020
97.5% 97.5%

1.15

1.015
shrink factor

shrink factor
1.10

1.010
1.005
1.05

1.000
1.00
gelman.diag(mcmc1) 4000 4500 5000

last iteration in chain


5500 6000 4000 4500 5000

last iteration in chain


5500 6000

gelman.plot(mcmc1) sigma

median
97.5%
1.15
shrink factor

1.10
1.05
1.00

4000 4500 5000 5500 6000

last iteration in chain

Ici l’indice est de 1, ce qui signifie que les 3 chaı̂nes échantillonnent


suivant la même distribution (a posteriori)
75 / 78
Utiliser rjags

 Une chaı̂ne MCMC ne doit pas être auto-corrélée (sinon il faut plus
d’itérations). On peut vérifier cela à l’aide de la commande suivante :
moyennes[1] moyennes[2]

1.0

1.0
0.5

0.5
Autocorrelation

Autocorrelation
0.0

0.0
−0.5

−0.5
−1.0

−1.0
0 5 10 15 20 25 0 5 10 15 20 25

Lag Lag

autocorr.plot(mcmc1[[1]]) sigma

1.0
0.5
Autocorrelation

0.0
−0.5
−1.0

0 5 10 15 20 25

Lag

Ici pas de soucis particulier.

76 / 78
Utiliser rjags

 Enfin, on peut exploiter les chaı̂nes MCMC pour obtenir les


estimations bayésienne des paramètres :

77 / 78
Exercice 7

 Toujours sur les poids des enfants à la naissance, introduire d’autres


variables (présente dans le fichier).

78 / 78

Vous aimerez peut-être aussi