replace the function calls dnorm(newPosition) and dnorm(position) with
dnormmix(newPosition) and dnormmix(position), where
dnormmix( ) is a function that you'll write that averages two dnorm( )s,
one with mean = -3 and sd = 1, the other with mean = 3 and sd = 1.
Here's the listing:
# Simulate standard normal random numbers using Gibbs and uniform
step <- function (radius) {
return(runif(1,-radius,radius))
}
# Parameters of random walk
radius = 1
position = 0.45
length = 100000
# initialize
values = rep(0,length)
for (i in 1:length) {
newPosition = position + step(radius)
if ( dnorm(newPosition) >= dnorm(position) ) {
position = newPosition
} else {
if ( runif(1) < dnorm(newPosition)/dnorm(position) ) {
position = newPosition
} # else stay at original position
}
values = position
}
hist(values)
ks.test(values, "pnorm")
最后得到的结果根据starting positions的不同有不同的直方图
应该怎么修改代码?已经安装了JAGS