3. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple : lancement de satellites
Entre 1980 et 2002 il y a eu 11 lancements de satellites,
3 succ`es et 8 ´echecs.
Objectif : Estimer la probabilit´e de r´eussite d’un
nouveau lanceur, fournir un intervalle de
confiance/cr´edibilit´e.
4. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Approche fr´equentiste (Rappel)
Distribution des donn´ees (le mod`ele statistique)
y est le nombre de succ`es parmi n lancements de
satellites,
θ est la probabilit´e de succ`es d’un lancement
y | θ ∼ B(n, θ);
Vraisemblance et estimateur du maximum de
vraisemblance
l(y | θ) = Cy
nθy
(1 − θ)n−y
,
log (l(y | θ)) = y log θ + (n − y) log(1 − θ).
θ = argmaxθ log (l(y | θ))
θ =
y
n
Calcul d’intervalle de confiance (asymptotique n grand) :
θ ± zα/2
1
n
θ(1 − θ) .
5. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Approche Bay´esienne
On consid`ere une loi a priori Beta sur θ
π(θ) ∝ θa−1
(1 − θ)b−1
.
Calcul de la loi a posteriori
π(θ | y) ∝ l(y | θ)π(θ)
∝ θy+a−1(1 − θ)n−y+b−1.e
Donc y | θ ∼ Beta(y + a, n − y + b).
La distribution, moyenne, variance, intervalle de
cr´edibilit´e a posteriori ?
Solution OpenBuGS
7. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
OpenBUGS
Pr´esentation OpenBUGS fait partie du projet BUGS
(Bayesian inference Using Gibbs Sampler) qui vise `a
rendre simple la pratique des m´ethodes MCMC aux
statisticiens. Il a ´et´e d´evelopp´e par l’unit´e MRC
Biostatistics de l’universit´e de Cambridge.
OpenBUGS est un logiciel libre et gratuit.
Utilisation possible
Via une interface clique-bouton qui permet de
contrˆoler l’analyse,
En utilisant des mod`eles d´efinis par des interfaces
graphiques, appel´es DoddleBUGS,
Via d’autres logiciels tels que R (en particulier via le
package R2OpenBUGS)
8. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Algorithme de Gibbs
Supposons que le vecteur param`etre θ est constitu´e de k
composantes, i.e. θT = (θ1, . . . , θk). Les ´etapes de
l’algorithme de Gibbs sont :
1 Choisir des valeurs initiales pour θ
(0)
1 , . . . , θ
(0)
k .
2 G´en´erer θ
(1)
1 selon π θ1 | θ
(0)
2 , . . . , θ
(0)
k , y .
3 G´en´erer θ
(1)
2 selon π θ2 | θ
(1)
1 , θ
(0)
3 . . . , θ
(0)
k , y .
...
4 G´en´erer θ
(1)
k selon π θk | θ
(1)
1 , θ
(1)
2 . . . , θ
(1)
k−1, y .
R´ep´eter l’´etape 2 plusieurs milliers de fois.
9. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple de code OpenBUGS
Le mod`ele :
model{
for(i in 1:n){
y[i] ˜ dbern(p)
}
p˜dbeta(a,b)
}
Les donn´ees
> list(n=11,y=c(0,0,0,0,0,0,1,0,0,1,0),a=2,b=3)
Les valeurs initiales.
> list(p=.2)
> list(p=.9)
> list(p=.4)
10. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Les ´etapes de l’ex´ecution sous OpenBUGS
1 V´erifier le mod`ele,
2 Charger les donn´ees,
3 Sp´ecifier le nombre de chaˆınes MCMC,
4 Compiler le mod`ele,
5 Charger les conditions initiales,
6 G´en´erer les r´ealisations “burnin”,
7 Sp´ecifier les param`etres/quantit´es `a conserver,
8 G´en´erer les r´ealisations `a conserver,
9 V´erifier la convergence et mise en place des r´esultats.
11. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
D’autres Exemples:
Jet d’une pi`ece de monnaie. On jette une pi`ece de
monnaie 8 fois dont la probabilit´e d’avoir Pile est de 0.5.
Quelle est la probabilit´es de voir Pile au plus 2 fois.
Le mod`ele math´ematique
Y ∼ Binomial(0.5, 8)
Il s’agit d’estimer P(Y ≤ 2).
Le mod`ele sous OpenBugs
model{
Y ˜ dbin(0.5,8)
P <- step(2.5-Y)
}
12. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Comment faire fonctionner ce code dans
OpenBUGS
1 Ouvrir une nouvelle fenˆetre dans OpenBUGS, File>New
2 Copier/Coller le code ci-dessus.
3 Model>Specification
4 Select model et clique sur check model
5 clique sur compile ensuite gen inits.
6 Model>Update et clique sur update
7 Inference> Samples et introduit le param`etre P dans
set
8 Tous les boutons de la derni`ere interface vont s’allumer,
donc vous pouvez avoir votre estimation.
En effet, la fonction step va prendre la valeur si 2.5-Y est
≥ 0 et 0 sinon. Donc P est ´egal `a si Y est plus petit o‘u ´egal `a
1.
13. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Utilisation de OpenBUGS pour simuler une
distribution
Une loi de Student Supposons qu’on voudrait simuler une loi de
Student de moyenne 10, de pr´ecision 2 et de ddl 4.
model{
y ˜ dt(10,2,4)
}
Une transformation de la loi Normale. On consid`ere
Z ∼ N(0, 1), on veut simuler Y = (2Z + 1)3
et estimer P(Y > 10)
model{
z ˜ dnorm(0,1)
y <- pow(2*z+1,3)
p <- step(y-10)
}
14. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Combien de r´eparations?
Supposons que le coˆut de r´eparation a une distribution
Gamma de moyenne 100 TND et d’´ecart-type 50 TND. On
veut r´epondre `a la question, combien de fois peut-on r´eparer
avec 1000 TND?
1 Montrer qu’une Gamma(4,0.04) a une moyenne 100 et
un ´ecart-type 50 TND
2 Ecrire le code ‘OpenBUGS‘ permettant de calculer ce
nombre.
On consid`ere Yi, i = 1, . . . , I variables al´eatoires de loi
Gamma(4,0.04) et il s’agit de chercher M tel que
M
i=1
Yi < 1000
.
15. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Le code OpenBUGS
On prendra I = 20, on va calculer la probabilit´e de faire plus
des 12 r´eparations
model{
for(i in 1:20) {
Y[i] ˜ dgamma(4,0.04)
}
cum[1] <- Y[1]
for(i in 2:20) {
cum[i] <- cum[i-1]+Y[i]
}
for(i in 1:20) {
cum.step[i] <- i*step(1000- cum[i])
}
number <- rank(cum.step[],20) ## le maximum dans cum.step
P <- step(number-12)
}
rank(v,s) s’applique au vecteur v et et au nombre s et calcule le
nombre composantes dans v qui sont plus petites que s
17. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
Pour utiliser OpenBUGS il faut installer dans R le package
R2OpenBUGS.
Consid´erons le probl`eme suivant: On jette deux pi`eces de
monnaie dont ne connaˆıt pas la probabilit´e d’avoir Pile.
Les deux pi`eces sont jet´ees 86 fois. Pour la premi`ere on a
obtenu 83 fois Pile et pour la deuxi`eme on obtenu 72 fois
Pile. Comparer les deux probabilit´es d’avoir Pile.
18. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
D’abord on ´ecrit les donn´ees dans R.
> donnees=list(r=c(83,72),n=c(86,86))
Le mod`ele sous OpenBUGS
model{
for(i in 1:2){
r[i] ˜ dbin(p[i],n[i])
}
for (i in 1:2){ p[i] ˜ dunif(0,1)}
delta <- p[1] - p[2]
delta.up <- step(delta)
lambda <- log( (p[1]/(1-p[1])) / (p[2]/(1-p[2])) );
lambda.up <- step(lambda)
}
19. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
Le code pour g´en´erer le mod`ele `a partir de R sans avoir
recours `a OpenBUGS :
On cr´ee un fichier exempleBinom.txt qui contient le code BUGS
> sink('exempleBinom.txt')
> cat("
+ model{
+ for(i in 1:2){
+ r[i] ˜ dbin(p[i],n[i])
+ }
+ for (i in 1:2){ p[i] ˜ dunif(0,1)}
+ delta <- p[1] - p[2]
+ delta.up <- step(delta)
+ lambda <- log( (p[1]/(1-p[1])) / (p[2]/(1-p[2])) );
+ lambda.up <- step(lambda)
+ }
+ ",fill=T)
> sink()
20. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
On cr´ee une variable avec le nom du fichier.
> filename<-"exempleBinom.txt"
Les valeurs initiales
> inits<-function(){
+ inits=list(p=runif(2,0,1))
+ }
Les param`etres `a estimer
> params <- c('p','delta.up','lambda.up')
Enfin l’ex´ecution sous R
> library(R2OpenBUGS)
> outBinom <-bugs(donnees,inits,params,filename,codaPkg=F,n.thin =1,
+ n.iter=10000,debug=F,n.chains = 3,
+ working.directory=getwd(),
21. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
Le r´esultat
> outBinom
Inference for Bugs model at "exempleBinom.txt",
Current: 3 chains, each with 10000 iterations (first 5000 discarded)
Cumulative: n.sims = 15000 iterations saved
mean sd 2.5% 25% 50% 75% 97.5% Rhat n.eff
p[1] 1.0 0 0.9 0.9 1.0 1.0 1.0 1 15000
p[2] 0.8 0 0.7 0.8 0.8 0.9 0.9 1 15000
delta.up 1.0 0 1.0 1.0 1.0 1.0 1.0 1 15000
lambda.up 1.0 0 1.0 1.0 1.0 1.0 1.0 1 15000
deviance 9.3 2 7.3 7.9 8.7 10.1 14.7 1 15000
For each parameter, n.eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor (at convergence, Rhat=1).
DIC info (using the rule, pD = Dbar-Dhat)
pD = 1.8 and DIC = 11.0
DIC is an estimate of expected predictive error (lower deviance is better).
22. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
Notons que le param`etre lambda est le logarithme du odds
ratio, Si lambda est :
proche de 0, on a la mˆeme chance d’avoir Pile avec les
deux pi`eces. ;
sup´erieur `a 0, il est plus fr´equente d’avoir Pile avec la
pi`ece 1 qu’avec la pi`ece 2 ;
bien sup´erieur `a 0, il est beaucoup plus fr´equente d’avoir
Pile avec la pi`ece 1 qu’avec la pi`ece 2 ;
inf´erieur `a 0, il est moins fr´equente d’avoir Pile avec la
pi`ece 1 qu’avec la pi`ece 2 ;
proche de -∞, il est beaucoup moins fr´equente d’avoir
Pile avec la pi`ece 1 qu’avec la pi`ece 2 ;
23. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
Les param`etres estim´es dans l’objet outBinom
deviance : Si y = (y1, . . . , yn) est le vecteur des donn´ees
dont on suppose g´en´er´e par une loi de probabilit´e de densit´e
f(y | θ). Alors la fonction vraisemblance
l(y | θ) =
n
i=1
f(yi | θ)
Donc la deviance s’exprime par
D(θ) = − log l(y | θ)
Dans notre cas : y1 ∼Binom(N, p1) et y2 ∼Binom(N, p2),
donc
l(y | p1, p2) ∝
p1
1 − p1
y1
p2
1 − p2
y2
24. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec R2OpenBUGS
DIC : Deviance Information Criteria
La moyenne ¯D = Eθ
[D(θ)] est une mesure de l’ajustement du mod`ele aux
donn´ees; plus ¯D est grand, plus l’ajustement est mauvais.
pD est une estimation du nombre effective des param`etres du mod`ele :
pD = ¯D − D(¯θ), plus les valeurs du pD est ´elev´e, plus le mod`ele ajuste au
mieux les donn´ees. C’est pour cela qu’on d´efinit une p´enalisation `a la
vraisemblance.
DIC se calcule
DIC = pD + ¯D = D(¯θ) + 2pD
Des mod`eles avec des valeurs faibles du DIC sont les plus pr´ef´er´es. Comme
¯D d´ecroit quand le nombre de param`etres dans le mod`ele croit, le pD va
compenser cette effet en favorisant les mod`eles avec un petit nombre de
param`etres.
25. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Estimation des densit´es a posteriori
Les probabilit´es
> library(reshape2)
> dt=melt(outBinom$sims.matrix[,1:2])
> library(ggplot2)
> gr<-ggplot(data=dt,aes(x=value,fill=Var2,colour=Var2))+geom_density(alpha=.5)
> gr
27. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Estimation des densit´es a posteriori
delta.up
> dt=data.frame(outBinom$sims.matrix[,3:4])
> gr<-ggplot(data=dt,aes(x=delta.up))+geom_density(alpha=.5,fill="pink")
> gr
31. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exercice : Comparaison de deux mod`eles
bay´esiens
On consid`ere les mod`eles bay´esiens suivants :
Mod`ele M1 : y ∼ Binomial(n, τ) o`u τ ∼ Beta(a, b)
Mod`ele M2 :y ∼ Binomial(n, τ) o`u τ =
1
p + q + 1
o`u
p, q ∼ Uniform[0, 1].
Ecrire les deux codes BUGS et R pour g´en´erer la loi a
posteriori des mod`eles bay´esiens M1 et M2. Comparer les
DIC, pD et la d´eviance des deux mod`eles, Conclure?
33. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Probl´ematique
En D´ecembre 2014, il y a eu les premiers ´elections
pr´esidentielles “libres et d´emocratiques” en Tunisie. Ces
´elections se sont d´eroul´ees en deux tours.
Durant ces derni`eres ´elections plusieurs candidats se sont
pr´esent´es au 1er tour. Les deux gagnants ce 1er tour
sont : Moncef Marzouki et B´eji Caid Essebsi.
Plusieurs bureaux de sondages locaux ont fait des
sondages aux sorties des urnes. Nous voulons pr´esenter
dans ce travail une comparaison statistique des r´esultats
de ces sondages avec les vrais r´esultats des ´elections.
34. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
R´esultats des sondages sorti des urnes
Rappelons les principaux r´esultats pr´esent´es
Bureau BC Marzouki Hammami Hamdi Riahi les autres
Sigma 42.70 32.60% 9.50% 3.90% 6.70% 4.60%
Emraude 44.20 31.20% 10.90% 2.10% 6.90% 4.70%
3C 47.80 26.90% 10.20% 3.50% 5.40% 6.20%
ISIE 39.46 33.43% 7.82% 5.75% 5.55% 7.99%
35. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Le mod`ele statistique.
Chaque bureau de sondage a d´eclar´e avoir questionn´e
autour de 10 000 personnes aux sorties des urnes et donc
l’´echantillon observ´es est une observation d’une loi
multinomiale
X = (X1, . . . , XI) ∼ Mulitinomial(N, p1, . . . , pI)
ou est N = 10000 est le nombre des personnes
interrog´ees et p1, . . . , pI sont les probabilit´es recherch´ees
et qui les % de votes attendus des candidats. La somme
des pI est ´evidement ´egale `a 1 et I
i=1 xI = N.
Donc
P(X = x) =
N!
x1! . . . xI!
px1
1 . . . pxI
I
37. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode fr´equentiste)
Consiste `a estimer les probabilit´es et donner leurs IC.
On utilisera le package MultinomialCI
> pSigma=c(42.7,32.6,9.5,3.9,6.7)
> pEm=c(44.2,31.2,10.9,2.1,6.9)
> p3c=c(47.8,26.9,10.2,3.5,5.4)
> pISIE=c(39.46,33.43,7.82,5.75,5.55)
> pSigma=c(pSigma,100-sum(pSigma))
> pEm=c(pEm,100-sum(pEm))
> p3c=c(p3c,100-sum(p3c))
> pISIE=c(pISIE,100-sum(pISIE))
38. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode fr´equentiste)
> library(MultinomialCI)
> N=10000 ## Sample size
> ySigma=N*pSigma/100
> ySigma
[1] 4270 3260 950 390 670 460
> yEm=N*pEm/100
> yEm
[1] 4420 3120 1090 210 690 470
> y3c=N*p3c/100
> y3c
[1] 4780 2690 1020 350 540 620
39. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode fr´equentiste)
> n=length(ySigma);n
[1] 6
> ci.Sigma=multinomialCI(ySigma,alpha = .05)
> rownames(ci.Sigma)=c("BCE","Marzouki","Hammami",
+ "Hamdi","Riahi","Les autres")
> ci.Sigma
[,1] [,2]
BCE 0.4166 0.43755426
Marzouki 0.3156 0.33655426
Hammami 0.0846 0.10555426
Hamdi 0.0286 0.04955426
Riahi 0.0566 0.07755426
Les autres 0.0356 0.05655426
40. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode fr´equentiste)
> ci.Em=multinomialCI(yEm,alpha = .05)
> rownames(ci.Em)=c("BCE","Marzouki","Hammami",
+ "Hamdi","Riahi","Les autres")
> ci.Em
[,1] [,2]
BCE 0.4316 0.45251734
Marzouki 0.3016 0.32251734
Hammami 0.0986 0.11951734
Hamdi 0.0106 0.03151734
Riahi 0.0586 0.07951734
Les autres 0.0366 0.05751734
41. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode fr´equentiste)
> ci.3c=multinomialCI(y3c,alpha = .05)
> rownames(ci.3c)=c("BCE","Marzouki","Hammami",
+ "Hamdi","Riahi","Les autres")
> ci.3c
[,1] [,2]
BCE 0.4677 0.48831591
Marzouki 0.2587 0.27931591
Hammami 0.0917 0.11231591
Hamdi 0.0247 0.04531591
Riahi 0.0437 0.06431591
Les autres 0.0517 0.07231591
43. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode bay´esienne).
Le vecteur des param`etres p = (p1, . . . , pI) une loi a priori
qui est la loi de Dirichlet de param´etr´es tous ´egaux `a 1.
model {
x[1:n] ˜ dmulti(p[], N)
p[1:n] ˜ ddirch(alpha[])
for (k in 1:n) {
alpha[k] <- 1
}
}
44. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Le code R sous OpenBUGS
> sink('Modelmultinom.txt')
> cat("model {
+ x[1:n] ˜ dmulti(p[], N)
+ p[1:n] ˜ ddirch(alpha[])
+
+ for (k in 1:n) {
+ alpha[k] <- 1
+ }
+ }
+ ")
> sink()
45. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode bay´esienne).
> library(R2OpenBUGS)
> ##
> filename<-'Modelmultinom.txt'
>
> inits <- function(){
+ p<-runif(n)
+ p<-p/sum(p)
+ list(p=p)
+ }
> ###
> params<-"p"
46. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Mise en oeuvre sous R (M´ethode bay´esienne).
> donneesSigma<-list(x=ySigma,N=N,n=n)
> donnees3c<-list(x=y3c,N=N,n=n)
> outSigma <-bugs(donneesSigma,inits,params,
+ filename, n.iter=100000,
+ debug=F,n.chains = 1,
+ working.directory=getwd())
> out3c <-bugs(donnees3c,inits,params,
+ filename,n.iter=100000,
+ debug=F,n.chains = 1,
+ working.directory=getwd())
47. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
R´esum´e des r´esultats des CM.
Les r´esultats de Sigma-Conseil
> library(R2OpenBUGS)
> outSigma
Inference for Bugs model at "Modelmultinom.txt",
Current: 1 chains, each with 1e+05 iterations (first 50000 discarded)
Cumulative: n.sims = 50000 iterations saved
mean sd 2.5% 25% 50% 75% 97.5%
p[1] 0.4 0.0 0.4 0.4 0.4 0.4 0.4
p[2] 0.3 0.0 0.3 0.3 0.3 0.3 0.3
p[3] 0.1 0.0 0.1 0.1 0.1 0.1 0.1
p[4] 0.0 0.0 0.0 0.0 0.0 0.0 0.0
p[5] 0.1 0.0 0.1 0.1 0.1 0.1 0.1
p[6] 0.0 0.0 0.0 0.0 0.0 0.0 0.1
deviance 46.9 3.2 42.7 44.6 46.2 48.5 54.8
DIC info (using the rule, pD = Dbar-Dhat)
pD = 5.0 and DIC = 51.9
DIC is an estimate of expected predictive error (lower deviance is bette
48. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
R´esum´e des r´esultats des CM.
Les r´esultats de EM-Consulting
> outEm
Inference for Bugs model at "Modelmultinom.txt",
Current: 1 chains, each with 1e+05 iterations (first 50000 discarded)
Cumulative: n.sims = 50000 iterations saved
mean sd 2.5% 25% 50% 75% 97.5%
p[1] 0.4 0.0 0.4 0.4 0.4 0.4 0.5
p[2] 0.3 0.0 0.3 0.3 0.3 0.3 0.3
p[3] 0.1 0.0 0.1 0.1 0.1 0.1 0.1
p[4] 0.0 0.0 0.0 0.0 0.0 0.0 0.0
p[5] 0.1 0.0 0.1 0.1 0.1 0.1 0.1
p[6] 0.0 0.0 0.0 0.0 0.0 0.0 0.1
deviance 46.4 3.1 42.3 44.1 45.8 48.1 54.3
DIC info (using the rule, pD = Dbar-Dhat)
pD = 5.0 and DIC = 51.4
DIC is an estimate of expected predictive error (lower deviance is bette
49. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
R´esum´e des r´esultats des CM.
Les r´esultats de 3C-Etudes
> out3c
Inference for Bugs model at "Modelmultinom.txt",
Current: 1 chains, each with 1e+05 iterations (first 50000 discarded)
Cumulative: n.sims = 50000 iterations saved
mean sd 2.5% 25% 50% 75% 97.5%
p[1] 0.5 0.0 0.5 0.5 0.5 0.5 0.5
p[2] 0.3 0.0 0.3 0.3 0.3 0.3 0.3
p[3] 0.1 0.0 0.1 0.1 0.1 0.1 0.1
p[4] 0.0 0.0 0.0 0.0 0.0 0.0 0.0
p[5] 0.1 0.0 0.0 0.1 0.1 0.1 0.1
p[6] 0.1 0.0 0.1 0.1 0.1 0.1 0.1
deviance 46.8 3.2 42.7 44.5 46.2 48.5 54.7
DIC info (using the rule, pD = Dbar-Dhat)
pD = 5.0 and DIC = 51.8
DIC is an estimate of expected predictive error (lower deviance is bette
53. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Utilisation du package MCMCpack
C’est un package compl´etement int´egr´e dans R
Il n’y a pas besoin de faire intervenir un logicil externe `a
R
Il contient des fonctions qui simules des MCMC de lois a
posteriori des mode`eles les plus connus : Bernoulli,
Multinomiale, R´egression, Logit. . .
54. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec les ´elections Tunisiennes.
On simule la loi a posteriori des probabilit´es `a partir du sondage de
Sigma-Conseil.
> library(MCMCpack)
> posterioriSigma=MCmultinomdirichlet(y = ySigma,
+ alpha0 = rep(1,length(ySigma)),
+ mc=100000,n.chain=3)
Estimation de la probabilit´e d’avoir l’ordre des ´elus.
> names(pISIE)=c('BCE','Marzouki','Hammami','Hamdi','Riahi','autres')
> oISIE=order(pISIE,decreasing = T)
> oSigma=apply(posterioriSigma,1,function(x)order(x,decreasing = T))
> oSigma=t(oSigma)
55. Premiers
pas avec
OpenBUGS
Dhafer
Malouche
Introduction
Initiation `a
OpenBUGS
Utilisation
de OpenBUG `a
partir de R
Etude de
Cas: Les
r´esultats
des
sondages
des urnes
ont-ils
pr´edit les
r´esultats
des
´elections?
Exemple avec les ´elections Tunisiennes.
On calcule `a chaque la probabilit´e de pr´edire un, deux,. . . les six
candidats dans l’ordre.
> res=sapply(1:100000,function(i)sum((oSigma[i,]==oISIE)))
> table(res)
res
2 3
99159 841
Donc la probabilit´e que Sigma conseil pr´edit plus que 3 candidats
dans l’ordre est quaziment nulle (< 8 × 10−3
)