Statistische Informationsverarbeitung - Übung 12
From StatWiki
Contents |
Beispiel 18
Beispiel aus der VO zu Hybrid MCMC
Programmieren Sie den sampler und plotten Sie Ihre simulierten Punkte in der Ebene mit Konturlinien der gemeinsamen Dichtefunktion.
Als Kandidatsverteilung wirdgewählt.
Die passende Konstante für eine Dichte istDurch Integration kommt man auf die Verteilungsfunktion
Das ist aber die Verteilungsfunktion einer Expontentialverteilten Zufallsvariable und daher kann y mit 'rexp' simuliert werden.
pdf(rpdf)
f = function(x1,x2) 3/2 * exp(3) * exp(-x1-abs(x2)*exp(2*x1))
x1 = seq(1.00001, 2.7, length.out=50)
x2 = seq(-.4, .4, length.out=50)
# library(distr)
library(coda)
f = function(x1,x2) 3/2 * exp(3 - x1 - abs(x2) * exp(2*x1))
gibbs = function(x1,n=4000) {
# sehr langsam
# D = DExp(rate = 1)
d = matrix(0, nrow=n, ncol=2)
colnames(d) = c("x1","x2")
qx1 = 1 + rexp(n,1)
ru = runif(n)
rb = (rbinom(n,1,.5)*2)-1
for(i in 1:n) {
# sehr langsam
# X2|X1
# rate(D) = exp(2 * x1)
# d[i,2] = x2 = r(D)(1)
d[i,2] = x2 = rb[i] * rexp(1, exp(2*x1))
y = qx1[i]
d[i,1] = x1 = ifelse(ru[i] < f(y, x2) / f(x1, x2), y, x1)
}
mcmc(d)
}
# mc = mcmc.list(sapply(rep(1,2), gibbs, simplify=F))
mc = mcmc.list(gibbs(1,10000))
plot(c(1,2.5),c(-.4,.4),type="n",xlab="x1",ylab="x2")
points(unlist(mc[,1]), unlist(mc[,2]), pch=".", cex=1.5)
contour(x1, x2, z, add=T)
#
Hier die Dichtefunktion noch in 3D.
pdf(rpdf) persp(x1,x2,z,theta=60,col = "lightblue") #
Beispiel 19
Zeigen Sie, dass der Gibbs Sampler ein Spezialfall der allgemeinen Version des MH- Algorithmus ist.
ist Zufallsvektor.
ist Zufallsvektor. Bezeichne
die bedingte Dichten. Als Vorschlagsdichte:
Die Annahmewahrscheinlichkeit ist
![]()
gewählt.
Durch Integration kommt man auf die Verteilungsfunktion
Das ist aber die Verteilungsfunktion einer Expontentialverteilten Zufallsvariable und daher kann y mit 'rexp' simuliert werden.
ist Zufallsvektor.
ist Zufallsvektor.
Bezeichne
die bedingte Dichten.
Als Vorschlagsdichte:
Die Annahmewahrscheinlichkeit ist
