Nothing
## ----knitr-opts, include=FALSE------------------------------------------------
knitr::opts_chunk$set(comment = "#", collapse = TRUE, results = "hold",
fig.align = "center", dpi = 90)
## ----sim-data-----------------------------------------------------------------
set.seed(1)
n <- 400
u <- 2 + (runif(n) < 0.2) * rnorm(n)
## ----sim-data-2---------------------------------------------------------------
s <- rep(1/3, n)
x <- u + s * rnorm(n)
## ----plot-mle, fig.height=3.5, fig.width=3.5----------------------------------
par(mar = c(4, 4, 2, 2))
lims <- c(-0.55, 5.05)
plot(u, x, pch = 4, cex = 0.75, xlim = lims, ylim = lims,
xlab = "true value", ylab = "estimate", main = "MLE")
abline(a = 0, b = 1, col = "magenta", lty = "dotted")
## ----ebnm-normal--------------------------------------------------------------
library("ebnm")
fit_normal <- ebnm(x, s, prior_family = "normal", mode = "estimate")
## ----plot-ebnm-normal, fig.height=3.5, fig.width=3.5--------------------------
y <- coef(fit_normal)
par(mar = c(4, 4, 2, 2))
plot(u, y, pch = 4, cex = 0.75, xlim = lims, ylim = lims,
xlab = "true value", ylab = "estimate", main = "normal prior")
abline(a = 0, b = 1, col = "magenta", lty = "dotted")
## ----mse-1--------------------------------------------------------------------
err_mle <- (x - u)^2
err_shrink_normal <- (y - u)^2
print(round(digits = 4,
x = c(mle = sqrt(mean(err_mle)),
shrink_normal = sqrt(mean(err_shrink_normal)))))
## ----plot-mse-1, fig.height=3.5, fig.width=3.5--------------------------------
par(mar = c(4, 4, 2, 2))
plot(err_mle, err_shrink_normal, pch = 4, cex = 0.75,
xlim = c(0, 1.2), ylim = c(0, 1.2))
abline(a = 0, b = 1, col = "magenta", lty = "dotted")
## ----ebnm-pn------------------------------------------------------------------
fit_pn <- ebnm(x, s, prior_family = "point_normal", mode = "estimate")
## ----plot-ebnm-pn, fig.height=3.5, fig.width=3.5------------------------------
par(mar = c(4, 4, 2, 2))
y <- coef(fit_pn)
plot(u, y, pch = 4, cex = 0.75, xlim = lims, ylim = lims,
xlab = "true value", ylab = "estimate", main = "point-normal prior")
abline(a = 0, b = 1, col = "magenta", lty = "dotted")
## ----mse-2--------------------------------------------------------------------
err_shrink_pn <- (y - u)^2
print(round(digits = 4,
x = c(mle = sqrt(mean(err_mle)),
normal = sqrt(mean(err_shrink_normal)),
point_normal = sqrt(mean(err_shrink_pn)))))
## -----------------------------------------------------------------------------
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.