Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
echo = TRUE,
eval = FALSE,
comment = "#>"
)
options(digits=2)
run_everything = FALSE
## ---- eval = FALSE, echo = TRUE-----------------------------------------------
# library(pema)
# library(tidySEM)
# library(ggplot2)
# options(mc.cores = 4)
## ---- eval = TRUE, echo = FALSE-----------------------------------------------
library(pema)
library(ggplot2)
options(mc.cores = 4)
data("bonapersona")
## ---- eval = run_everything, echo = FALSE-------------------------------------
# descs <- tidySEM::descriptives(bonapersona)[, c("name", "type", "n", "unique", "mean", "sd", "v")]
# saveRDS(descs, "descs.RData")
## ----data, eval = FALSE-------------------------------------------------------
# descriptives(bonapersona)[, c("name", "type", "n", "unique", "mean", "sd", "v")]
## ---- echo = FALSE, eval = TRUE-----------------------------------------------
descs <- readRDS("descs.RData")
descs
## -----------------------------------------------------------------------------
# bonapersona$ageWeek[is.na(bonapersona$ageWeek)] <- median(bonapersona$ageWeek, na.rm = TRUE)
## -----------------------------------------------------------------------------
# datsel <- bonapersona[ , c("yi", "vi", "author", "mTimeLength", "year", "model", "ageWeek", "strainGrouped", "bias", "species", "domain", "sex")]
## -----------------------------------------------------------------------------
# dat2l <- datsel
# dat2l[["author"]] <- NULL
## ---- echo = TRUE, eval = F---------------------------------------------------
# fit_lasso <- brma(yi ~ .,
# data = dat2l,
# vi = "vi",
# method = "lasso",
# prior = c(df = 1, scale = 1),
# mute_stan = FALSE)
## ---- echo = FALSE, eval = TRUE-----------------------------------------------
if(run_everything){
bonapersona$ageWeek[is.na(bonapersona$ageWeek)] <- median(bonapersona$ageWeek, na.rm = TRUE)
datsel <- bonapersona[ , c("yi", "vi", "author", "mTimeLength", "year", "model", "ageWeek", "strainGrouped", "bias", "species", "domain", "sex")]
dat2l <- datsel
dat2l[["author"]] <- NULL
fit_lasso <- brma(yi ~ .,
data = dat2l,
vi = "vi",
method = "lasso",
prior = c(df = 1, scale = 1),
mute_stan = FALSE)
saveRDS(fit_lasso, "fitlasso.RData")
fit_lasso <- readRDS("fitlasso.RData")
sum <- summary(fit_lasso)
saveRDS(sum$coefficients[, c("mean", "sd", "2.5%", "97.5%", "n_eff", "Rhat")], "sum.RData")
saveRDS(I2(fit_lasso), "i2.RData")
}
sums <- readRDS("sum.RData")
i2s <- readRDS("i2.RData")
## ---- eval = F----------------------------------------------------------------
# sum <- summary(fit_lasso)
# sum$coefficients[, c("mean", "sd", "2.5%", "97.5%", "n_eff", "Rhat")]
## ---- eval = TRUE, echo = FALSE-----------------------------------------------
sums
## -----------------------------------------------------------------------------
# I2(fit_lasso)
## ---- echo = FALSE, eval = TRUE-----------------------------------------------
i2s
## ----hs, echo = TRUE, eval = F------------------------------------------------
# # use the default settings
# fit_hs1 <- brma(yi ~ .,
# data = dat2l,
# vi = "vi",
# method = "hs",
# prior = c(df = 1, df_global = 1, df_slab = 4, scale_global = 1, scale_slab = 1, relevant_pars = NULL),
# mute_stan = FALSE)
#
# # reduce the global scale
# fit_hs2 <- brma(yi ~ .,
# data = dat2l,
# vi = "vi",
# method = "hs",
# prior = c(df = 1, df_global = 1, df_slab = 4, scale_global = 0.1, scale_slab = 1, relevant_pars = NULL),
# mute_stan = FALSE)
#
# # increase the scale of the slab
# fit_hs3 <- brma(yi ~ .,
# data = dat2l,
# vi = "vi",
# method = "hs",
# prior = c(df = 1, df_global = 1, df_slab = 4, scale_global = 1, scale_slab = 5, relevant_pars = NULL),
# mute_stan = FALSE)
#
## ---- echo = FALSE, eval = TRUE-----------------------------------------------
if(run_everything){
# use the default settings
fit_hs1 <- brma(yi ~ .,
data = dat2l,
vi = "vi",
method = "hs",
prior = c(df = 1, df_global = 1, df_slab = 4, scale_global = 1, scale_slab = 1, relevant_pars = NULL),
mute_stan = FALSE)
# reduce the global scale
fit_hs2 <- brma(yi ~ .,
data = dat2l,
vi = "vi",
method = "hs",
prior = c(df = 1, df_global = 1, df_slab = 4, scale_global = 0.1, scale_slab = 1, relevant_pars = NULL),
mute_stan = FALSE)
# increase the scale of the slab
fit_hs3 <- brma(yi ~ .,
data = dat2l,
vi = "vi",
method = "hs",
prior = c(df = 1, df_global = 1, df_slab = 4, scale_global = 1, scale_slab = 5, relevant_pars = NULL),
mute_stan = FALSE)
saveRDS(fit_hs1, "fit_hs1.RData")
saveRDS(fit_hs2, "fit_hs2.RData")
saveRDS(fit_hs3, "fit_hs3.RData")
fit_hs1 <- readRDS("fit_hs1.RData")
fit_hs2 <- readRDS("fit_hs2.RData")
fit_hs3 <- readRDS("fit_hs3.RData")
}
## ---- eval = FALSE, echo = TRUE-----------------------------------------------
# make_plotdat <- function(fit, prior){
# plotdat <- data.frame(fit$coefficients)
# plotdat$par <- rownames(plotdat)
# plotdat$Prior <- prior
# return(plotdat)
# }
#
# df0 <- make_plotdat(fit_lasso, prior = "lasso")
# df1 <- make_plotdat(fit_hs1, prior = "hs default")
# df2 <- make_plotdat(fit_hs2, prior = "hs reduced global scale")
# df3 <- make_plotdat(fit_hs3, prior = "hs increased slab scale")
#
# df <- rbind.data.frame(df0, df1, df2, df3)
# df <- df[!df$par %in% c("Intercept", "tau2"), ]
# pd <- 0.5
# ggplot(df, aes(x=mean, y=par, group = Prior)) +
# geom_errorbar(aes(xmin=X2.5., xmax=X97.5., colour = Prior), width=.1, position = position_dodge(width = pd)) +
# geom_point(aes(colour = Prior), position = position_dodge(width = pd)) +
# geom_vline(xintercept = 0) +
# theme_bw() + xlab("Posterior mean") + ylab("")
## ---- eval = TRUE, echo = FALSE, out.width='80%'------------------------------
# make_plotdat <- function(fit, prior){
# plotdat <- data.frame(fit$coefficients)
# plotdat$par <- rownames(plotdat)
# plotdat$Prior <- prior
# return(plotdat)
# }
#
# df0 <- make_plotdat(fit_lasso, prior = "lasso")
# df1 <- make_plotdat(fit_hs1, prior = "hs default")
# df2 <- make_plotdat(fit_hs2, prior = "hs reduced global scale")
# df3 <- make_plotdat(fit_hs3, prior = "hs increased slab scale")
#
# df <- rbind.data.frame(df0, df1, df2, df3)
# df <- df[!df$par %in% c("Intercept", "tau2"), ]
# pd <- 0.5
# p <- ggplot(df, aes(x=mean, y=par, group = Prior)) +
# geom_errorbar(aes(xmin=X2.5., xmax=X97.5., colour = Prior), width=.1, position = position_dodge(width = pd)) +
# geom_point(aes(colour = Prior), position = position_dodge(width = pd)) +
# geom_vline(xintercept = 0) +
# theme_bw() + xlab("Posterior mean") + ylab("")
# ggsave("sensitivity.png", p, device = "png", width = 3, height = 1.5, dpi = 300, scale = 2.5)
knitr::include_graphics("sensitivity.png")
## ---- echo = TRUE, eval = F---------------------------------------------------
# fit_3l <- brma(yi ~ .,
# data = datsel,
# vi = "vi",
# study = "author",
# method = "lasso",
# standardize = FALSE,
# prior = c(df = 1, scale = 1),
# mute_stan = FALSE)
## ---- eval = TRUE, echo = F---------------------------------------------------
if(run_everything){
fit_3l <- brma(yi ~ .,
data = datsel,
vi = "vi",
study = "author",
method = "lasso",
prior = c(df = 1, scale = 1),
mute_stan = FALSE)
saveRDS(fit_3l, "fit_3l.RData")
fit_3l <- readRDS("fit_3l.RData")
}
## ----echo = FALSE, eval = TRUE------------------------------------------------
if(run_everything){
moderators <- model.matrix(yi~ageWeek + strainGrouped, data = datsel)[, -1]
scale_age <- scale(moderators[,1])
stdz <- list(center = c(attr(scale_age, "scaled:center"), rep(0, length(levels(datsel$strainGrouped))-1)),
scale = c(attr(scale_age, "scaled:scale"), rep(1, length(levels(datsel$strainGrouped))-1)))
moderators <- data.frame(datsel[c("yi", "vi", "author")], moderators)
fit_std <- brma(yi ~ .,
data = moderators,
vi = "vi",
study = "author",
method = "lasso",
prior = c(df = 1, scale = 1),
standardize = stdz,
mute_stan = FALSE)
saveRDS(fit_std, "fit_std.RData")
fit_std <- readRDS("fit_std.RData")
}
## ----echo = TRUE, eval = FALSE------------------------------------------------
# moderators <- model.matrix(yi~ageWeek + strainGrouped, data = datsel)[, -1]
# scale_age <- scale(moderators[,1])
# stdz <- list(center = c(attr(scale_age, "scaled:center"), rep(0, length(levels(datsel$strainGrouped))-1)),
# scale = c(attr(scale_age, "scaled:scale"), rep(1, length(levels(datsel$strainGrouped))-1)))
# moderators <- data.frame(datsel[c("yi", "vi", "author")], moderators)
# fit_std <- brma(yi ~ .,
# data = moderators,
# vi = "vi",
# study = "author",
# method = "lasso",
# prior = c(df = 1, scale = 1),
# standardize = stdz,
# mute_stan = FALSE)
#
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.