Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----message=FALSE------------------------------------------------------------
library("unmconf")
library("bayesplot")
library("ggplot2"); theme_set(theme_minimal())
set.seed(13L)
df <-
runm(n = 100,
type = "int",
missing_prop = .75,
covariate_fam_list = list("norm", "bin", "norm"),
covariate_param_list = list(c(mean = 0, sd = 1), c(.3), c(0, 2)),
unmeasured_fam_list = list("norm", "bin"),
unmeasured_param_list = list(c(mean = 0, sd = 1), c(.3)),
treatment_model_coefs =
c("int" = -1, "z1" = .4, "z2" = .5, "z3" = .4,
"u1" = .75, "u2" = .75),
response_model_coefs =
c("int" = -1, "z1" = .4, "z2" = .5, "z3" = .4,
"u1" = .75, "u2" = .75, "x" = .75),
response = "norm",
response_param = c("si_y" = 1))
rbind(head(df, 5), tail(df, 5))
## -----------------------------------------------------------------------------
# Main Study Data
M <- tibble::tibble(
"y" = rbinom(100, 1, .5),
"x" = rbinom(100, 1, .3),
"z1" = rnorm(100, 0, 1),
"z2" = rnorm(100, 0, 1),
"z3" = rnorm(100, 0, 1),
"u1" = NA,
"u2" = NA
)
# External Validation Data
EV <- tibble::tibble(
"y" = rbinom(100, 1, .5),
"z1" = rnorm(100, 0, 1),
"z2" = rnorm(100, 0, 1),
"u1" = rnorm(100, 0, 1),
"u2" = rnorm(100, 0, 1)
)
df_ext <- dplyr::bind_rows(M, EV) |>
dplyr::mutate(x = ifelse(is.na(x), 0, x))
rbind(head(df_ext, 5), tail(df_ext, 5))
## -----------------------------------------------------------------------------
unm_mod <-
unm_glm(form1 = y ~ x + z1 + z2 + z3 + u1 + u2, # y ~ .,
form2 = u1 ~ x + z1 + z2 + z3 + u2, # u1 ~ . - y,
form3 = u2 ~ x + z1 + z2 + z3, # u2 ~ . - y - u1,
family1 = gaussian(),
family2 = gaussian(),
family3 = binomial(),
priors = c("lambda[u1]" = "dnorm(.5, 1)"),
n.iter = 10000, n.adapt = 4000, thin = 1,
data = df)
## ----eval=FALSE---------------------------------------------------------------
# unm_mod_ext <-
# unm_glm(form1 = y ~ x + z1 + z2 + u1 + u2, # y ~ . - z3,
# form2 = u1 ~ x + z1 + z2 + u2, # u1 ~ . - y - z3,
# form3 = u2 ~ x + z1 + z2, # u2 ~ . - y - u1 - z3,
# family1 = binomial(),
# family2 = gaussian(),
# family3 = gaussian(),
# priors = c("gamma[x]" = "dnorm(1.1, 0.9)",
# "delta[x]" = "dnorm(1.1, 4.5)"),
# n.iter = 4000, n.adapt = 2000, thin = 1,
# data = df_ext)
## ----eval=FALSE---------------------------------------------------------------
# unm_glm(..., code_only = TRUE)
# jags_code(unm_mod)
## ----fig.align='center', fig.height = 4, fig.width = 6, fig.cap="Histogram of the MCMC draws for the internal validation example. Smooth histogram is an indication of good convergence."----
bayesplot::mcmc_hist(unm_mod, pars = "beta[x]")
## ----fig.align='center', fig.height = 4, fig.width = 6, fig.cap="Trace plot of the MCMC draws for the internal validation example. No patterns or diverging chains in the trace plot is an indication of good convergence."----
bayesplot::mcmc_trace(unm_mod, pars = "beta[x]")
## ----echo=FALSE---------------------------------------------------------------
# df2 <-
# runm_extended(n = 100,
# covariate_fam_list = list("norm", "bin", "norm"),
# covariate_param_list = list(c(mean = 0, sd = 1), c(.3), c(0, 2)),
# unmeasured_fam_list = list("norm", "bin"),
# unmeasured_param_list = list(c(mean = 0, sd = 1), c(.3)),
# treatment_model_coefs =
# c("int" = -1, "z1" = .4, "z2" = .5, "z3" = .4,
# "u1" = .75, "u2" = .75),
# response_model_coefs =
# c("int" = -1, "z1" = .4, "z2" = .5, "z3" = .4,
# "u1" = .75, "u2" = .75, "x" = .75),
# response = "norm",
# response_param = c("si_y" = 1),
# type = "int",
# missing_prop = .99)
#
# unm_mod2 <-
# unm_glm(y ~ x + z1 + z2 + z3 + u1 + u2, # y ~ .,
# u1 ~ x + z1 + z2 + z3 + u2, # u1 ~ . - y,
# u2 ~ x + z1 + z2 + z3, # u2 ~ . - y - u1,
# family1 = gaussian(),
# family2 = gaussian(),
# family3 = binomial(),
# #priors = c("lambda[u1]" = "dnorm(0, 4)"),
# n.iter = 4000, n.adapt = 2000, thin = 1,
# data = df2)
#
# write_rds(unm_mod2, "/Users/ryanhebdon/Graduate School/Research/unmconf_personal/Diagnostics/bad_convergence.rds")
#bad_mod <- readRDS("/Users/ryanhebdon/Graduate School/Research/unmconf_personal/Diagnostics/bad_convergence.rds")
## -----------------------------------------------------------------------------
unm_summary(unm_mod, df) |>
head(10)
## -----------------------------------------------------------------------------
unm_backfill(df, unm_mod)[16:25, ]
## ----message=FALSE, warning=FALSE, fig.align='center', fig.height = 4, fig.width = 6, fig.cap= "A credible interval plot for the internal validation example. The light blue circle indicates the posterior median for each parameter, with the bold and thin blue lines displaying the 50% and 95% credible interval, respectively. Red circles are the true parameter values used in the simulation study."----
bayesplot::mcmc_intervals(unm_mod, prob_outer = .95,
regex_pars = "(beta|lambda|gamma|delta|zeta).+") +
geom_point(
aes(value, name), data = tibble::enframe(attr(df, "params")) |>
dplyr::mutate(name = gsub("int", "1", name)),
color = "red", fill = "pink", size = 4, shape = 21
)
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.