Nothing
## ----echo=FALSE,message=FALSE-------------------------------------------------
knitr::opts_chunk$set(eval=TRUE, message=FALSE, warning=FALSE, cache=TRUE)
## ----echo=FALSE,message=FALSE-------------------------------------------------
rstan::rstan_options(auto_write = TRUE)
options(mc.cores = 2) # CRAN check limits to 2 cores
# options(mc.cores = parallel::detectCores()) # CRAN check limits to 2 cores
## -----------------------------------------------------------------------------
library(survextrap)
library(ggplot2)
library(dplyr)
survminer::ggsurvplot(survfit(Surv(years, status) ~ 1, data=colons), data=colons)
## ----results="hide"-----------------------------------------------------------
nd_mod <- survextrap(Surv(years, status) ~ 1, data=colons, chains=1)
plot(nd_mod, show_knots=TRUE, tmax=5)
## ----results="hide"-----------------------------------------------------------
nd_mod2 <- survextrap(Surv(years, status) ~ 1, data=colons, chains=1,
mspline = list(add_knots=4))
plot(nd_mod2, tmax=5)
## ----results="hide"-----------------------------------------------------------
nd_modr <- survextrap(Surv(years, status) ~ 1, data=colons, chains=1,
smooth_model = "exchangeable",
mspline = list(add_knots=4))
plot(nd_modr, tmax=5)
## -----------------------------------------------------------------------------
head(summary(nd_mod))
## -----------------------------------------------------------------------------
rmst(nd_mod2, t = c(3,10,1000), niter=100)
## -----------------------------------------------------------------------------
rmst(nd_mod2, t = c(3,10,1000),
summ_fns = list(mean=mean, median=median,
~quantile(.x, c(0.25, 0.75))),
niter=50)
## ----results="hide"-----------------------------------------------------------
extdat <- data.frame(start = c(5, 10, 15, 20),
stop = c(10, 15, 20, 25),
n = c(100, 100, 100, 100),
r = c(50, 40, 30, 20))
## ----results="hide"-----------------------------------------------------------
nde_mod <- survextrap(Surv(years, status) ~ 1, data=colons,
fit_method="opt", external = extdat,
mspline = list(add_knots=c(4, 10, 25)))
plot(nde_mod)
## -----------------------------------------------------------------------------
mean(nde_mod, niter=100)
rmst(nde_mod, c(3, 10, 1000), niter=100)
## ----results="hide"-----------------------------------------------------------
levs <- c("trial", "external")
colons$dataset <- factor("trial", level=levs)
extdat$dataset <- factor("external", level=levs)
## ----results="hide"-----------------------------------------------------------
ndec_mod <- survextrap(Surv(years, status) ~ dataset, data=colons,
external = extdat,
fit_method = "opt",
mspline = list(add_knots=c(4, 10, 25)))
## -----------------------------------------------------------------------------
summary(ndec_mod) %>% filter(variable=="hr")
## -----------------------------------------------------------------------------
rmst(ndec_mod, t=3, niter=100)
## -----------------------------------------------------------------------------
SHELF::fitdist(vals=c(0.1, 0.3, 0.5), probs=c(0.025, 0.5, 0.975),
lower=0, upper=1)$Beta
## ----results="hide"-----------------------------------------------------------
extdat <- data.frame(start = c(10), stop = c(15),
n = c(20), r = c(6))
nde_mod <- survextrap(Surv(years, status) ~ 1, data=colons,
external = extdat, fit_method="opt")
plot(nde_mod)
## -----------------------------------------------------------------------------
mean(nde_mod, niter = 100)
## -----------------------------------------------------------------------------
coxph(Surv(years, status) ~ rx, data=colons)
## -----------------------------------------------------------------------------
rxph_mod <- survextrap(Surv(years, status) ~ rx, data=colons, refresh=0, fit_method="opt")
summary(rxph_mod) |>
filter(variable=="loghr")
## -----------------------------------------------------------------------------
plot(rxph_mod, niter=100)
## -----------------------------------------------------------------------------
extdat <- data.frame(start = c(5, 10), stop = c(10, 15),
n = c(100, 100), r = c(50, 40),
rx = "Obs")
rxphe_mod <- survextrap(Surv(years, status) ~ rx, data=colons,
external = extdat, refresh=0, fit_method="opt")
rmst(rxphe_mod, niter=100, t=20)
plot(rxphe_mod, niter=100, tmax=5)
plot_hazard(rxphe_mod, niter=100, tmax=20)
## -----------------------------------------------------------------------------
nd <- data.frame(rx = c("Obs","Lev+5FU"))
survival(rxph_mod, t=c(5,10), newdata=nd)
## -----------------------------------------------------------------------------
ref_pop <- data.frame(rx = c("Obs","Lev+5FU"))
survival(rxph_mod, t = c(5,10), newdata = standardise_to(ref_pop))
## -----------------------------------------------------------------------------
survival(rxph_mod, t = c(5,10), newdata = standardise_to(ref_pop, random=TRUE))
## ----results="hide"-----------------------------------------------------------
rxnph_mod <- survextrap(Surv(years, status) ~ rx, data=colons, nonprop=TRUE, fit_method="opt")
plot(rxnph_mod, niter=200)
## -----------------------------------------------------------------------------
nd <- data.frame(rx = c("Lev+5FU","Lev"))
plot_hazard_ratio(rxnph_mod, newdata=nd) +
coord_cartesian(ylim=c(0,5))
## ----eval=FALSE---------------------------------------------------------------
# rxph_mod$loo
## ----eval=FALSE---------------------------------------------------------------
# rxnph_mod$loo
## ----results="hide"-----------------------------------------------------------
plot(survfit(Surv(t, status) ~ 1, data=curedata))
noncure_mod <- survextrap(Surv(t, status) ~ 1, data=curedata, fit_method = "opt")
plot_survival(noncure_mod,tmax=5)
cure_mod <- survextrap(Surv(t, status) ~ 1, data=curedata, cure=TRUE, iter=1000, fit_method="opt")
plot(cure_mod, tmax=10, niter=20)
## -----------------------------------------------------------------------------
curec_mod <- survextrap(Surv(t, status) ~ 1, data=curedata, cure=~x, fit_method="opt")
summary(curec_mod) %>%
filter(variable %in% c("pcure", "logor_cure", "or_cure"))
## -----------------------------------------------------------------------------
bh <- data.frame(time=c(0, 3, 5, 10),
hazard=c(0.01, 0.05, 0.1, 0.2))
## -----------------------------------------------------------------------------
mod <- survextrap(Surv(years, status) ~ 1, data=colons, fit_method="opt")
mod_bh <- survextrap(Surv(years, status) ~ 1, data=colons, fit_method="opt", backhaz=bh)
## -----------------------------------------------------------------------------
plot_survival(mod, tmax=15, niter=20) +
geom_line(data=survival(mod_bh, tmax=15, niter=20), aes(y=median, x=t), col="red", lwd=1.2)
plot_hazard(mod, tmax=15, niter=20) +
geom_line(data=hazard(mod_bh, tmax=15, niter=20), aes(y=median, x=t), col="red", lwd=1.2)
## -----------------------------------------------------------------------------
bh_strata <- data.frame(time = rep(bh$time, 2),
hazard = c(bh$hazard, bh$hazard*1.2),
agegroup = rep(c("Under 70", "Over 70"),each=4))
colons$agegroup <- cut(colons$age, breaks=c(0,70,Inf),
right=FALSE, labels=c("Under 70","Over 70"))
bh_strata
## -----------------------------------------------------------------------------
mod_bhs <- survextrap(Surv(years, status) ~ 1, data=colons, fit_method="opt",
backhaz=bh_strata, backhaz_strata="agegroup")
## -----------------------------------------------------------------------------
nd <- data.frame(agegroup = c("Over 70", "Under 70"))
plot_hazard(mod, tmax=15, ci=FALSE) +
geom_line(data = hazard(mod_bhs, newdata=nd, tmax=15, niter=300),
aes(y=median, x=t, col=agegroup), lwd=1.2) +
ylim(0,0.5)
## ----results="hide"-----------------------------------------------------------
colonsb <- colons
colonsb$bh <- rep(0.05, nrow(colons))
modb <- survextrap(Surv(years, status) ~ 1, data=colonsb, backhaz="bh", fit_method="opt")
## ----results="hide"-----------------------------------------------------------
mod <- survextrap(Surv(years, status) ~ 1, data=colonsb, fit_method="opt")
plot_hazard(mod) +
geom_line(data=hazard(modb), col="blue")
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.