문제



24b0d121e09c28a8699fe8b115ef046ecd40c3f52a



결과



24b0d121e09c28a8699fe8b115ef046c61f12e4f9e



R코드


par(mfrow = c(1, 2))


likelihood <- function(mu) {

  exp(-0.125*(32-mu)^2)

}

l=curve(likelihood(x),10,50,n=1000)

ll = l$y

xx = l$x

df = data.frame(x = xx, y = ll)

write.csv(df, "1가능도.csv", row.names = FALSE)


g <- function(mu) { #사전분포

  ifelse(mu >= 0 & mu <= 18,

         0,

         ifelse(mu > 18 & mu <= 24,

                (mu/6)-3,

                ifelse(mu > 24 & mu <= 40,

                       1,

                       ifelse(mu > 40 & mu <= 46,

                              (46-mu)/6,

                       0))))

}

#g가 맞는지 확인하는 방법

l = curve(g(x), 10, 50, n = 1000)

ll = l$y

xx = l$x

df = data.frame(x = xx, y = ll)

write.csv(df, "2사전.csv", row.names = FALSE)


posterior_num <- function(mu) {

  likelihood(mu) * g(mu)

}


l=curve(posterior_num(x),10,50,n=1000)

ll = l$y

xx = l$x

df = data.frame(x = xx, y = ll)

write.csv(df, "3사후.csv", row.names = FALSE)


#최대우도 확인

posterior_num(30)

posterior_num(31)

posterior_num(34)



mu_grid <- seq(10, 50, length=1000)

xxx=posterior_num(mu_grid)

plot(mu_grid, posterior_num(mu_grid),

     type="l",

     main="Unnormalized Posterior",

     xlab=expression(mu),

     ylab="L(mu) * g(mu)")


C <- integrate(posterior_num, lower=10, upper=50)$value



yy=posterior_num(mu_grid)/C

write.csv(yy,"yy.csv")


plot(mu_grid, yy,

     type="l",

     main="Normalized Posterior",

     xlab=expression(mu),

     ylab="L(mu) * g(mu)")