Nothing
## ----echo = FALSE-------------------------------------------------------------
knitr::opts_chunk$set(
warning = FALSE,
message = FALSE,
fig.width = 7,
fig.height = 3
)
## ----packages-----------------------------------------------------------------
library(simstudy)
library(data.table)
library(parallel)
library(lmerTest)
## ----framwork, eval = FALSE---------------------------------------------------
# s_define <- function() {
#
# #--- add data definition code ---#
#
# return(list_of_defs) # list_of_defs is a list of simstudy data definitions
# }
#
# s_generate <- function(list_of_defs, argsvec) {
#
# list2env(list_of_defs, envir = environment())
# list2env(as.list(argsvec), envir = environment())
#
# #--- add data generation code ---#
#
# return(generated_data) # generated_data is a data.table
# }
#
# s_model <- function(generated_data) {
#
# #--- add model code ---#
#
# return(model_results) # model_results is a data.table
# }
#
#
# s_replicate <- function(argsvec) {
#
# list_of_defs <- s_define()
#
# generated_data <- s_generate(list_of_defs, argsvec)
# model_results <- s_model(generated_data)
#
# #--- add summary statistics code ---#
#
# return(model_results)
#
# }
#
#
# model_fits <- mclapply(scenarios, function(a) s_replicate(a))
## -----------------------------------------------------------------------------
a <- c(0.5, 0.7, 0.9)
b <- c(8, 16)
d <- c(12, 18)
# Independent parameters
scenario_list(a, b)
# Grouped parameters
scenario_list(a, grouped(b, d))
# With replications
scenario_list(b, d, each = 2)
## ----eval=FALSE---------------------------------------------------------------
# s_define <- function() {
#
# #--- data definition code ---#
#
# def1 <- defData(varname = "site_eff",
# formula = 0, variance = "..svar", dist = "normal", id = "site")
# def1 <- defData(def1, "n", formula = "..npat", dist = "poisson")
#
# def2 <- defDataAdd(varname = "Y", formula = "5 + site_eff + ..delta * rx",
# variance = "..ivar", dist = "normal")
#
# return(list(def1 = def1, def2 = def2))
# }
#
# s_generate <- function(list_of_defs, argsvec) {
#
# list2env(list_of_defs, envir = environment())
# list2env(as.list(argsvec), envir = environment())
#
# #--- data generation code ---#
#
# ds <- genData(40, def1)
# ds <- trtAssign(ds, grpName = "rx")
# dd <- genCluster(ds, "site", "n", "id")
# dd <- addColumns(def2, dd)
#
# return(dd)
# }
#
# s_model <- function(generated_data) {
#
# #--- model code ---#
#
# lmefit <- lmer(Y ~ rx + (1|site), data = generated_data)
#
# return(data.table(tidy(lmefit)))
# }
#
# s_replicate <- function(argsvec) {
#
# list_of_defs <- s_define()
# generated_data <- s_generate(list_of_defs, argsvec)
# model_results <- s_model(generated_data)
#
# return(list(argsvec, model_results))
# }
## ----eval = FALSE-------------------------------------------------------------
#
# #------ set simulation parameters
#
# npat <- c(8, 16, 24)
# svar <- c(0.40, 0.80)
# ivar <- c(3, 6)
# delta <- c(0.50, 0.75, 1.00)
#
# scenarios <- scenario_list(delta, npat, grouped(svar, ivar), each = 1000)
#
# model_fits <- mclapply(scenarios, function(a) s_replicate(a), mc.cores = 5)
## ----eval = FALSE-------------------------------------------------------------
# summarize <- function(m_fit) {
# args <- data.table(t(m_fit[[1]]))
# reject <- m_fit[[2]][term == "rx", p.value <= 0.05]
# cbind(args, reject)
# }
#
# reject <- rbindlist(lapply(model_fits, function(a) summarize(a)))
# power <- reject[, .(power = mean(reject)), keyby = .(delta, npat, svar, ivar, scenario)]
## ----power_plot, echo=FALSE, fig.width = 7, fig.height=3----------------------
load("data/power.rda")
power[, highvar := (svar ==.8)]
library(ggplot2)
ggplot(data = power,
aes(x = factor(npat), y = power,
group = factor(delta), color = factor(delta))) +
geom_hline(yintercept = 0.8, color = "white") +
geom_line(linewidth = 0.9) +
facet_grid(. ~ factor(highvar, labels = c("low variance", "high variance"))) +
theme(panel.grid = element_blank()) +
scale_y_continuous(limits = c(0,1)) +
scale_x_discrete(name = "number of patients per site", expand = c(.1, .1)) +
scale_color_manual(
values = c("1" = "#4477AA", "0.75" = "#EE6677", "0.5" = "#228833"),
breaks = c("1", "0.75", "0.5"),
labels = c("1.00", "0.75", "0.50"),
name = "effect size"
)
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.