Gibbs sampling, in its basic incarnation, is a special case of the Metropolis-Hastings algorithm. The point of Gibbs sampling is that given a multivariate distribution it is simpler to sample from a conditional distribution than to marginalize by integrating over a joint distribution.
Monte Carlo integration- YouTube
MCMC visualization java
Gibbs sampling - YouTube
MCMC and the Metropolis Hastings algorithm- YouTube
Example on slides
MCMC Visualizationi r
library(ggplot2)
set.seed (123456)
nrep<- 55000
burn<- 5000
margy<- vector(length=nrep)
margx<- vector(length=nrep)
n<- 10
y<- 0.1 # TRY DIFFERENT INITIAL VALUES FOR Y BY CHANGING THIS NUMBER
a<- 2 # prior shape 1 for beta
b<- 4 # prior shape 2 for beta
\[f(k;n,p)=\Pr(X=k)={\binom {n}{k}}p^{k}(1-p)^{n-k}\]
(c) obtain the marginal distributions of X and Y.
from conditional distribution converge to marginal distribution.
for (i in 1:nrep) {
x<- rbinom(1, n, y)
margx[i]<- x
y<- rbeta(1, x+a,n-x+b)
margy[i]<- y
}
(f) Summarize the features of the marginal distributions for X and Y, and plot the marginal p.m.f. for X and the marginal p.d.f. for Y.
Graph
Posterior distribution
#
hist(margx[(burn+1):nrep], col="red",prob=TRUE,main="Marginal Mass Function for X", xlab="x", ylab="p(x)")

ggplot()+geom_histogram(mapping = aes(x =margx[(burn+1):nrep] ), fill = "red")+
labs(y="p(x)", x = "x", title ="Marginal Mass Function for X")

plot(density(margy[(burn+1):nrep]),col="blue",main="Marginal Density for Y", xlab="y", ylab="p(y)")

ggplot()+geom_density(mapping = aes(x = margy[(burn+1):nrep]))+
labs(y="p(y)", x = "y", title ="Marginal Density Function for y")

(d) Establish that E(X) = 3.337, E(Y) = 0.335, Var.(X) = 5.132, and Var.(Y) = 0.032.
summary(margx[(burn+1):nrep])
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.000 2.000 3.000 3.337 5.000 10.000
summary(margy[(burn+1):nrep])
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.001594 0.193600 0.315300 0.334500 0.457600 0.938400
var(margx[(burn+1):nrep])
[1] 5.131855
var(margy[(burn+1):nrep])
[1] 0.03214491
(e) Show that these results do not depend on the initial value assigned for Y.
y<- 0.1 # TRY DIFFERENT INITIAL VALUES FOR Y BY CHANGING THIS NUMBER
(f) Is the Burn-in period long enough?
Rolling mean diagnostics:
rmean_x<- vector(length=burn)
rmean_y<- vector(length=burn)
for (i in 1:burn) {
rmean_x[i]<- mean(margx[1:i])
rmean_y[i]<- mean(margy[1:i])
}
plot(rmean_x, col="red", main="Rolling Means for X",xlab="Replications", ylab="Mean of X")

ggplot()+geom_point(mapping = aes(x = 1:length(rmean_x), y =rmean_x ), col="red")

plot(rmean_y, col="blue", main="Rolling Means for Y", xlab="Burn-in Replications", ylab="Mean of Y")

ggplot()+geom_point(mapping = aes(x = 1:length(rmean_y), y =rmean_y ), col="blue")

LS0tDQp0aXRsZTogIkVDT041NDYgTGFiOSBHaWJicyBTYW1wbGVyIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQpbR2liYnMgc2FtcGxpbmddKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dpYmJzX3NhbXBsaW5nKSwgaW4gaXRzIGJhc2ljIGluY2FybmF0aW9uLCBpcyBhIHNwZWNpYWwgY2FzZSBvZiB0aGUgKipNZXRyb3BvbGlzLUhhc3RpbmdzIGFsZ29yaXRobSoqLiBUaGUgcG9pbnQgb2YgR2liYnMgc2FtcGxpbmcgaXMgdGhhdCBnaXZlbiBhICoqbXVsdGl2YXJpYXRlIGRpc3RyaWJ1dGlvbioqIGl0IGlzIHNpbXBsZXIgdG8gc2FtcGxlIGZyb20gYSAqKmNvbmRpdGlvbmFsIGRpc3RyaWJ1dGlvbioqIHRoYW4gdG8gKiptYXJnaW5hbGl6ZSoqIGJ5IGludGVncmF0aW5nIG92ZXIgYSBqb2ludCBkaXN0cmlidXRpb24uIA0KDQoNCltNb250ZSBDYXJsbyBpbnRlZ3JhdGlvbi0gWW91VHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/YW5ub3RhdGlvbl9pZD1hbm5vdGF0aW9uXzc3ODUzNSZmZWF0dXJlPWl2JnNyY192aWQ9S29OR0g1UGtYRFEmdj1NS25qc3FZVkc0WSkNCg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KDQpbTUNNQyB2aXN1YWxpemF0aW9uIGphdmFdKGh0dHA6Ly9ibC5vY2tzLm9yZy9zYXRob21hcy9jZjUyNmQ2NDk1ODExYThjYTc3OTk0NmVmNTU1ODcwMikNCg0KDQpbR2liYnMgc2FtcGxpbmcgLSBZb3VUdWJlXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWFfMDhHS1dIRldvKSAgDQoNCg0KW01DTUMgYW5kIHRoZSBNZXRyb3BvbGlzIEhhc3RpbmdzIGFsZ29yaXRobS0gWW91VHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1PVE8xRHlnRUxwWSkNCg0KDQpbRXhhbXBsZSBvbiBzbGlkZXNdKGh0dHA6Ly9zdGF0cy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNDU5NDYvZ2VuZXJhdGluZy1zYW1wbGVzLWZyb20tZ2liYnMtc2FtcGxpbmcpDQoNCg0KW01DTUMgVmlzdWFsaXphdGlvbmkgcl0oaHR0cDovL3JzdHVkaW8tcHVicy1zdGF0aWMuczMuYW1hem9uYXdzLmNvbS81MzQ5MF9kNTgwNWFiODNhOWU0NGNjYTQ4MGI4ZDM3Nzk1MGEwMC5odG1sKQ0KDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCnNldC5zZWVkICgxMjM0NTYpDQpucmVwPC0gNTUwMDANCmJ1cm48LSA1MDAwDQptYXJneTwtIHZlY3RvcihsZW5ndGg9bnJlcCkNCm1hcmd4PC0gdmVjdG9yKGxlbmd0aD1ucmVwKQ0KbjwtIDEwDQp5PC0gMC4xICAgICAgIyBUUlkgRElGRkVSRU5UIElOSVRJQUwgVkFMVUVTIEZPUiBZIEJZIENIQU5HSU5HIFRISVMgTlVNQkVSDQphPC0gMiAjIHByaW9yIHNoYXBlIDEgZm9yIGJldGENCmI8LSA0ICMgcHJpb3Igc2hhcGUgMiAgZm9yIGJldGENCg0KYGBgDQoNCg0KDQojIyMgKGEpIFdoYXQgaXMgdGhlIGNvbmRpdGlvbmFsIGRpc3RyaWJ1dGlvbiBmb3IgWCwgZ2l2ZW4gWT8NCg0KaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlub21pYWxfZGlzdHJpYnV0aW9uDQoNCiQkZihrO24scCk9XFByKFg9ayk9e1xiaW5vbSB7bn17a319cF57a30oMS1wKV57bi1rfSQkDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMjIyAoYikgV2hhdCBpcyB0aGUgY29uZGl0aW9uYWwgZGlzdHJpYnV0aW9uIGZvciBZLCBnaXZlbiBYPw0KDQoNCiQkZih4OyBcYWxwaGEgLFxiZXRhICk9XG1hdGhybXtjb25zdGFudH0gXGNkb3QgeF57XGFscGhhIC0xfSgxLXgpXntcYmV0YSAtMX0kJA0KDQoNCg0KJCR7XGRpc3BsYXlzdHlsZXtcYmVnaW57YWxpZ25lZH1mKHg7XGFscGhhICxcYmV0YSApJj1cbWF0aHJtIHtjb25zdGFudH0gXGNkb3QgeF57XGFscGhhIC0xfSgxLXgpXntcYmV0YSAtMX1cXA0KDQomPXtcZnJhY3t4XntcYWxwaGEgLTF9KDEteClee1xiZXRhIC0xfX17XGRpc3BsYXlzdHlsZSBcaW50X3swfV57MX11XntcYWxwaGEgLTF9KDEtdSlee1xiZXRhIC0xfVwsZHV9fVxcDQoNCiY9e1xmcmFje1xHYW1tYSAoXGFscGhhICtcYmV0YSApfXtcR2FtbWEgKFxhbHBoYSApXEdhbW1hIChcYmV0YSApfX1cLHhee1xhbHBoYSAtMX0oMS14KV57XGJldGEgLTF9XFwNCg0KJj17XGZyYWN7MX17XG1hdGhybXtCfSAoXGFscGhhICxcYmV0YSApfX14XntcYWxwaGEgLTF9KDEteClee1xiZXRhIC0xfVxlbmR7YWxpZ25lZH19fSQkDQoNCg0KDQpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CZXRhX2Rpc3RyaWJ1dGlvbg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KIyMjIChjKSBvYnRhaW4gdGhlIG1hcmdpbmFsIGRpc3RyaWJ1dGlvbnMgb2YgWCBhbmQgWS4NCg0KZnJvbSBjb25kaXRpb25hbCBkaXN0cmlidXRpb24gY29udmVyZ2UgdG8gbWFyZ2luYWwgZGlzdHJpYnV0aW9uLg0KDQpgYGB7cn0NCmZvciAoaSBpbiAxOm5yZXApICB7DQp4PC0gcmJpbm9tKDEsIG4sIHkpDQptYXJneFtpXTwtIHgNCnk8LSByYmV0YSgxLCB4K2Esbi14K2IpDQptYXJneVtpXTwtIHkNCg0KfQ0KYGBgDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCiMjIyAoZikgU3VtbWFyaXplIHRoZSBmZWF0dXJlcyBvZiB0aGUgbWFyZ2luYWwgZGlzdHJpYnV0aW9ucyBmb3IgWCBhbmQgWSwgYW5kIHBsb3QgdGhlIG1hcmdpbmFsIHAubS5mLiBmb3IgWCBhbmQgdGhlIG1hcmdpbmFsIHAuZC5mLiBmb3IgWS4NCg0KR3JhcGgNCg0KUG9zdGVyaW9yIGRpc3RyaWJ1dGlvbg0KDQpgYGB7cn0NCiMgDQpoaXN0KG1hcmd4WyhidXJuKzEpOm5yZXBdLCBjb2w9InJlZCIscHJvYj1UUlVFLG1haW49Ik1hcmdpbmFsIE1hc3MgRnVuY3Rpb24gZm9yIFgiLCB4bGFiPSJ4IiwgeWxhYj0icCh4KSIpDQpgYGANCg0KDQoNCg0KYGBge3J9DQpnZ3Bsb3QoKStnZW9tX2hpc3RvZ3JhbShtYXBwaW5nID0gYWVzKHggPW1hcmd4WyhidXJuKzEpOm5yZXBdICksIGZpbGwgPSAicmVkIikrDQogIGxhYnMoeT0icCh4KSIsIHggPSAieCIsIHRpdGxlID0iTWFyZ2luYWwgTWFzcyBGdW5jdGlvbiBmb3IgWCIpDQpgYGANCg0KDQoNCmBgYHtyfQ0KcGxvdChkZW5zaXR5KG1hcmd5WyhidXJuKzEpOm5yZXBdKSxjb2w9ImJsdWUiLG1haW49Ik1hcmdpbmFsIERlbnNpdHkgZm9yIFkiLCB4bGFiPSJ5IiwgeWxhYj0icCh5KSIpDQpgYGANCg0KDQoNCmBgYHtyfQ0KZ2dwbG90KCkrZ2VvbV9kZW5zaXR5KG1hcHBpbmcgPSBhZXMoeCA9IG1hcmd5WyhidXJuKzEpOm5yZXBdKSkrDQogIGxhYnMoeT0icCh5KSIsIHggPSAieSIsIHRpdGxlID0iTWFyZ2luYWwgRGVuc2l0eSBGdW5jdGlvbiBmb3IgeSIpDQpgYGANCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KIyMjIChkKSBFc3RhYmxpc2ggdGhhdCBFKFgpID0gMy4zMzcsIEUoWSkgPSAwLjMzNSwgVmFyLihYKSA9IDUuMTMyLCBhbmQgVmFyLihZKSA9IDAuMDMyLg0KDQpgYGB7cn0NCg0KDQoNCnN1bW1hcnkobWFyZ3hbKGJ1cm4rMSk6bnJlcF0pDQpzdW1tYXJ5KG1hcmd5WyhidXJuKzEpOm5yZXBdKQ0KdmFyKG1hcmd4WyhidXJuKzEpOm5yZXBdKQ0KdmFyKG1hcmd5WyhidXJuKzEpOm5yZXBdKQ0KYGBgDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KDQoNCiMjIyAoZSkgU2hvdyB0aGF0IHRoZXNlIHJlc3VsdHMgZG8gbm90IGRlcGVuZCBvbiB0aGUgaW5pdGlhbCB2YWx1ZSBhc3NpZ25lZCBmb3IgWS4NCg0KYGBgcg0KeTwtIDAuMSAgICAgICMgVFJZIERJRkZFUkVOVCBJTklUSUFMIFZBTFVFUyBGT1IgWSBCWSBDSEFOR0lORyBUSElTIE5VTUJFUg0KYGBgDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KDQojIyMgKGYpIElzIHRoZSBCdXJuLWluIHBlcmlvZCBsb25nIGVub3VnaD8NCiMjIyMgUm9sbGluZyBtZWFuIGRpYWdub3N0aWNzOg0KDQpgYGB7cn0NCg0KDQpybWVhbl94PC0gdmVjdG9yKGxlbmd0aD1idXJuKQ0Kcm1lYW5feTwtIHZlY3RvcihsZW5ndGg9YnVybikNCmZvciAoaSBpbiAxOmJ1cm4pIHsNCg0Kcm1lYW5feFtpXTwtIG1lYW4obWFyZ3hbMTppXSkNCnJtZWFuX3lbaV08LSBtZWFuKG1hcmd5WzE6aV0pDQp9DQoNCg0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KcGxvdChybWVhbl94LCBjb2w9InJlZCIsIG1haW49IlJvbGxpbmcgTWVhbnMgZm9yIFgiLHhsYWI9IlJlcGxpY2F0aW9ucyIsIHlsYWI9Ik1lYW4gb2YgWCIpDQoNCmBgYA0KDQoNCg0KYGBge3J9DQpnZ3Bsb3QoKStnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IDE6bGVuZ3RoKHJtZWFuX3gpLCB5ID1ybWVhbl94ICksIGNvbD0icmVkIikNCmBgYA0KDQoNCg0KYGBge3J9DQpwbG90KHJtZWFuX3ksIGNvbD0iYmx1ZSIsIG1haW49IlJvbGxpbmcgTWVhbnMgZm9yIFkiLCB4bGFiPSJCdXJuLWluIFJlcGxpY2F0aW9ucyIsIHlsYWI9Ik1lYW4gb2YgWSIpDQpgYGANCg0KDQpgYGB7cn0NCmdncGxvdCgpK2dlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gMTpsZW5ndGgocm1lYW5feSksIHkgPXJtZWFuX3kgKSwgY29sPSJibHVlIikNCg0KYGBgDQoNCg==