문제
결과
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)")
댓글 0