Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
library(Mhorseshoe)
library(ggplot2)
library(horseshoe)
## -----------------------------------------------------------------------------
# making simulation data.
set.seed(123)
N <- 300
p <- 500
p_star <- 50
true_beta <- c(rep(1, p_star), rep(0, p-p_star))
# design matrix X.
X <- matrix(1, nrow = N, ncol = p)
for (i in 1:p) {
X[, i] <- stats::rnorm(N, mean = 0, sd = 1)
}
# response variable y.
y <- vector(mode = "numeric", length = N)
e <- rnorm(N, mean = 0, sd = 2)
for (i in 1:p_star) {
y <- y + true_beta[i] * X[, i]
}
y <- y + e
## ----fig.width = 6, fig.height= 4---------------------------------------------
# horseshoe in horseshoe package.
horseshoe_result <- horseshoe::horseshoe(y, X, method.tau = "halfCauchy",
method.sigma = "Jeffreys",
burn = 0, nmc = 500)
# exact_horseshoe in Mhorseshoe package.
exact_horseshoe_result <- exact_horseshoe(y, X, burn = 0, iter = 500)
df <- data.frame(index = 1:100,
horseshoe_BetaHat = horseshoe_result$BetaHat[1:100],
horseshoe_LeftCI = horseshoe_result$LeftCI[1:100],
horseshoe_RightCI = horseshoe_result$RightCI[1:100],
exhorseshoe_BetaHat = exact_horseshoe_result$BetaHat[1:100],
exhorseshoe_LeftCI = exact_horseshoe_result$LeftCI[1:100],
exhorseshoe_RightCI = exact_horseshoe_result$RightCI[1:100],
true_beta = true_beta[1:100])
# Estimation results of the horseshoe in horseshoe package.
ggplot(data = df, aes(x = index, y = true_beta)) +
geom_point(size = 2) +
geom_point(aes(x = index, y = horseshoe_BetaHat), size = 2, col = "red") +
geom_errorbar(aes(ymin = horseshoe_LeftCI,
ymax = horseshoe_RightCI), width = .1, col = "red") +
labs(title = "95% Credible intervals of the horseshoe in horseshoe package",
y = "beta")
# Estimation results of the exact_horseshoe in Mhorseshoe package.
ggplot(data = df, aes(x = index, y = true_beta)) +
geom_point(size = 2) +
geom_point(aes(x = index, y = exhorseshoe_BetaHat),
size = 2, col = "red") +
geom_errorbar(aes(ymin = exhorseshoe_LeftCI,
ymax = exhorseshoe_RightCI), width = .1, col = "red") +
labs(title = "95% Credible intervals of the exact_horseshoe in Mhorseshoe
package", y = "beta")
## ----fig.width = 6, fig.height= 4---------------------------------------------
# approximate algorithm with fixed default threshold.
approx_horseshoe_result <- approx_horseshoe(y, X, burn = 0, iter = 500,
auto.threshold = FALSE)
# modified approximate algorithm.
mapprox_horseshoe_result <- approx_horseshoe(y, X, burn = 0, iter = 500,
auto.threshold = TRUE)
df2 <- data.frame(index = 1:100,
approx_BetaHat = approx_horseshoe_result$BetaHat[1:100],
approx_LeftCI = approx_horseshoe_result$LeftCI[1:100],
approx_RightCI = approx_horseshoe_result$RightCI[1:100],
mapprox_BetaHat = mapprox_horseshoe_result$BetaHat[1:100],
mapprox_LeftCI = mapprox_horseshoe_result$LeftCI[1:100],
mapprox_RightCI = mapprox_horseshoe_result$RightCI[1:100],
true_beta = true_beta[1:100])
# Estimation results of the approximate algorithm.
ggplot(data = df2, aes(x = index, y = true_beta)) +
geom_point(size = 2) +
geom_point(aes(x = index, y = approx_BetaHat), size = 2, col = "red") +
geom_errorbar(aes(ymin = approx_LeftCI,
ymax = approx_RightCI), width = .1, col = "red") +
labs(title = "95% Credible intervals of the approx_horseshoe", y = "beta")
# Estimation results of the modified approximate algorithm.
ggplot(data = df2, aes(x = index, y = true_beta)) +
geom_point(size = 2) +
geom_point(aes(x = index, y = mapprox_BetaHat),
size = 2, col = "red") +
geom_errorbar(aes(ymin = mapprox_LeftCI,
ymax = mapprox_RightCI),
width = .1, col = "red") +
labs(title = "95% Credible intervals of the modified_approx_horseshoe",
y = "beta")
## ----fig.width = 6, fig.height= 4---------------------------------------------
exact_activeset <- rep(p, 500)
approx_activeset <- apply(approx_horseshoe_result$ActiveSet, MARGIN = 1, sum)
mapprox_activeset <- apply(mapprox_horseshoe_result$ActiveSet, MARGIN = 1, sum)
# active set plot
ggplot(data = data.frame(X = 1:500,
exact_activeset = exact_activeset,
approx_activeset = approx_activeset,
mapprox_activeset = mapprox_activeset)) +
geom_line(mapping = aes(x = X, y = exact_activeset,
color = "exact")) +
geom_line(mapping = aes(x = X, y = approx_activeset,
color = "approx"),
alpha = 0.5) +
geom_line(mapping = aes(x = X, y = mapprox_activeset,
color = "modified_approx"),
alpha = 0.5) +
scale_color_manual(name = "algorithm",
values = c("black", "red", "blue"),
breaks = c("exact", "approx", "modified_approx"),
labels = c("exact", "approx", "modified_approx"))
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.