set.seed(155)
m <- 10000
x <- numeric(m)
k <- 0
u <- runif(m)
for (i in 2:m) {
xt <- x[i-1]
y <- rnorm(1)
num <- dcauchy(y)*dnorm((xt),mean=y)
den <- dcauchy(xt)*dnorm((y),mean=xt)
if (u[i] <= num/den) {
x[i] <- y}
else {
x[i] <- xt
k <- k+1 }
}
x <- x[1001:length(x)]
metQ <-quantile(x,seq(0,1,.1))
cauchyQ <- qcauchy(seq(0,1,.1))
knitr::kable(cbind(metQ,cauchyQ))
metQ | cauchyQ | |
---|---|---|
0% | -4.1768738 | -Inf |
10% | -0.9002809 | -3.0776835 |
20% | -0.5771077 | -1.3763819 |
30% | -0.3459395 | -0.7265425 |
40% | -0.1638466 | -0.3249197 |
50% | -0.0090093 | 0.0000000 |
60% | 0.1637055 | 0.3249197 |
70% | 0.3376449 | 0.7265425 |
80% | 0.5514408 | 1.3763819 |
90% | 0.8796916 | 3.0776835 |
100% | 3.1642461 | Inf |