## ----load R package, echo=TRUE------------------------------------------------
library(gscounts)
## ---- echo=TRUE---------------------------------------------------------------
out <- design_gsnb(rate1 = 0.0875, rate2 = 0.125, dispersion = 5,
ratio_H0 = 1, power = 0.8, sig_level = 0.025,
timing = c(0.4, 0.7, 1), esf = obrien, study_period = 4,
accrual_period = 1.25, random_ratio = 1)
out
## ---- echo=FALSE--------------------------------------------------------------
str(out)
## ---- echo=TRUE---------------------------------------------------------------
out2 <- design_gsnb(rate1 = 0.0875, rate2 = 0.125, dispersion = 5,
ratio_H0 = 1, power = 0.8, sig_level = 0.025,
timing = c(0.4, 0.7, 1), esf = obrien, study_period = 4,
accrual_period = 1.25, random_ratio = 1,
futility = "binding", esf_futility = obrien)
out2
## ---- results='hold'----------------------------------------------------------
out3 <- design_gsnb(rate1 = 4.2, rate2 = 8.4, dispersion = 3, ratio_H0 = 1,
power = 0.8, sig_level = 0.025, timing = c(0.5, 1),
esf = pocock, followup_max = 0.5, random_ratio = 1)
out3$n
out3$n1
out3$n2
## ---- results='hold'----------------------------------------------------------
out4 <- design_gsnb(rate1 = 4.2, rate2 = 8.4, dispersion = 3, ratio_H0 = 1,
power = 0.8, sig_level = 0.025, timing = c(0.5, 1),
esf = pocock, followup_max = 0.5, random_ratio = 2,
futility = "nonbinding", esf_futility = obrien)
out4$n
out4$n1
out4$n2
## -----------------------------------------------------------------------------
recruit <- seq(0, 1.25, length.out = 1042)
out5 <- design_gsnb(rate1 = 0.0875, rate2 = 0.125, dispersion = 5,
power = 0.8, timing = c(0.5, 1), esf = obrien,
ratio_H0 = 1, sig_level = 0.025,
t_recruit1 = recruit, t_recruit2 = recruit)
out5$study_period
## ---- results='hold'----------------------------------------------------------
out6 <- design_gsnb(rate1 = 4.2, rate2 = 8.4, dispersion = 3, ratio_H0 = 1,
power = 0.8, sig_level = 0.025, timing = c(0.5, 1),
esf = obrien, followup_max = 1, random_ratio = 1)
out6$n1
out6$n2
## ----hospitalizations---------------------------------------------------------
head(hospitalizations, n = 10)
## ----info-monitoring, results='hide', message=FALSE---------------------------
library(dplyr)
# Filter data to obtain all the events which happened prior to t = 1.2906
t <- 1.2972
rawdata_interim <- dplyr::filter(hospitalizations, t_recruit <= t,
(is.na(eventtime) | eventtime <= t))
# Calculate the number of events of every patient until t
events_interim <- rawdata_interim %>%
group_by(treatment, pat, t_recruit) %>%
summarise(count = sum(eventtime <= t, na.rm = TRUE))
# Exposure time = time of patient with study
events_interim$t_expose <- t - events_interim$t_recruit
# Negative binomial regression
glm_out <- MASS::glm.nb(formula = count ~ treatment + offset(log(t_expose)) - 1,
data = events_interim)
rates <- exp(glm_out$coefficients)
followup1 <- dplyr::filter(events_interim, treatment == 'experiment')$t_expose
followup2 <- dplyr::filter(events_interim, treatment == 'control')$t_expose
# Information level at calendar time t
info_interim <- get_info_gsnb(rate1 = rates["treatmentexperiment"],
rate2 = rates["treatmentcontrol"],
dispersion = 1/glm_out$theta,
followup1 = followup1,
followup2 = followup2)
## -----------------------------------------------------------------------------
glm_interim1 <- MASS::glm.nb(formula = count ~ treatment + offset(log(t_expose)),
data = events_interim)
summary(glm_interim1)$coefficients
## ----fixed_design, echo=TRUE--------------------------------------------------
out_fix <- design_nb(rate1 = 0.0875, rate2 = 0.125, dispersion = 5,
ratio_H0 = 1, power = 0.8, sig_level = 0.025,
study_period = 4, accrual_period = 1.25, random_ratio = 1)
out_fix
## ----nb_stucture--------------------------------------------------------------
str(out_fix)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.