Solution (source code)

= Solution

\b[TODO: Complete the data-specific numerical results and diagnostics when the original `Iris_data.csv` is available.]

Use the <random-walk Metropolis algorithm> with proposal $\mu'=\mu+\varepsilon$, where $\varepsilon\sim N(0,1)$. The proposal is symmetric, so for a nonnegative proposal the acceptance <probability> is
$$
\boxed{a(\mu,\mu')=\min\{1,\exp[\ell_p(\mu')-\ell_p(\mu)]\}},\qquad
\ell_p(u)=-\frac12\sum_i(x_i-u)^2-\frac u3.
$$
Negative proposals are rejected. They are not redrawn until positive, since that would change the proposal kernel and require a different acceptance ratio. On rejection, store the current state again; keeping accepted moves alone would bias the empirical <posterior distribution>.

This R continuation makes exactly 10,000 proposals, starting at $\mu_0=4$:

``
set.seed(20240528)
B <- 10000L
mu <- numeric(B + 1L)
mu[1L] <- 4
logpost <- function(u) {
  if (!is.finite(u) || u < 0) return(-Inf)
  loglik(u) - u/3
}
lp <- logpost(mu[1L])
accepted <- 0L
for (i in seq_len(B)) {
  proposal <- rnorm(1L, mean = mu[i], sd = 1)
  lp_new <- logpost(proposal)
  if (log(runif(1L)) < min(0, lp_new - lp)) {
    mu[i + 1L] <- proposal
    lp <- lp_new
    accepted <- accepted + 1L
  } else {
    mu[i + 1L] <- mu[i]
  }
}
cat("Acceptance fraction =", accepted/B, "\n")
# A provisional discard; assess it with the trace in part (e).
burn <- 1000L
post <- mu[(burn + 2L):(B + 1L)]
m <- xbar - 1/(3*n)
s <- 1/sqrt(n)
posterior_density <- function(u) {
  ans <- numeric(length(u))
  ok <- u >= 0
  ans[ok] <- exp(dnorm(u[ok], m, s, log = TRUE) -
                   pnorm(m/s, log.p = TRUE))
  ans
}
png("q2-posterior.png", width = 900, height = 600)
hist(post, breaks = 40, probability = TRUE, xlab = expression(mu),
     main = "Retained Metropolis draws and exact posterior")
u <- seq(0, max(post) + 3*s, length.out = 4001L)
lines(u, posterior_density(u), col = "firebrick", lwd = 2)
dev.off()
``

The exact <truncated normal distribution> density overlays the histogram as a check; it does not replace the requested <Markov chain Monte Carlo> procedure. The 9,000 retained states exclude the initial state and the first 1,000 transitions. The particular histogram and acceptance fraction remain dependent on the missing measurements.