Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 6,
fig.align = 'center'
)
## -----------------------------------------------------------------------------
# Load libraries
library(mstate)
library(ggplot2)
# Set general ggplot2 theme
theme_set(theme_bw(base_size = 14))
## ----load_dat-----------------------------------------------------------------
# Load data
data("aidssi")
head(aidssi)
# Shorter name
si <- aidssi
# Prepare transition matrix
tmat <- trans.comprisk(2, names = c("event-free", "AIDS", "SI"))
tmat
# Run msprep
si$stat1 <- as.numeric(si$status == 1)
si$stat2 <- as.numeric(si$status == 2)
silong <- msprep(
time = c(NA, "time", "time"),
status = c(NA, "stat1", "stat2"),
data = si,
keep = "ccr5",
trans = tmat
)
# Run cox model
silong <- expand.covs(silong, "ccr5")
c1 <- coxph(Surv(time, status) ~ ccr5WM.1 + ccr5WM.2 + strata(trans),
data = silong)
## ----msfit_prep---------------------------------------------------------------
# Data to predict
WW <- data.frame(
ccr5WM.1 = c(0, 0),
ccr5WM.2 = c(0, 0),
trans = c(1, 2),
strata = c(1, 2)
)
# Make msfit object
msf.WW <- msfit(
object = c1,
newdata = WW,
trans = tmat
)
## ----msfitplot_base_1---------------------------------------------------------
plot(msf.WW)
## ----msfitplot_ggplot2_1------------------------------------------------------
plot(msf.WW, use.ggplot = TRUE)
## ----msfitplot_base_2---------------------------------------------------------
par(mfrow = c(1, 2))
plot(msf.WW, type = "separate")
## ----msfitplot_ggplot_2-------------------------------------------------------
# Fixed scales
plot(msf.WW, type = "separate", use.ggplot = TRUE, scale_type = "fixed")
# Free scales
plot(msf.WW, type = "separate", use.ggplot = TRUE, scale_type = "free", xlim = c(0, 15))
## ----msfitplot_customs--------------------------------------------------------
par(mfrow = c(1, 1))
# A base R customised plot
plot(
msf.WW,
type = "single",
cols = c("blue", "black"), # or numeric e.g. c(1, 2)
xlim = c(0, 15),
legend.pos = "top",
lty = c("dashed", "solid"),
use.ggplot = FALSE
)
title("Cumulative baseline hazards")
# A ggplot2 customised plot
plot(
msf.WW,
type = "single",
cols = c("blue", "black"), # or numeric e.g. c(1, 2)
xlim = c(0, 15),
lty = c("dashed", "solid"),
legend.pos = "bottom",
use.ggplot = TRUE
) +
# Add title and center
ggtitle("Cumulative baseline hazards") +
theme(plot.title = element_text(hjust = 0.5))
## ----msfitplot_confint1-------------------------------------------------------
plot(
msf.WW,
type = "single",
use.ggplot = TRUE,
conf.type = "log",
conf.int = 0.95
)
## ----msfitplot_confint2-------------------------------------------------------
plot(
msf.WW,
type = "separate",
use.ggplot = TRUE,
conf.type = "log",
conf.int = 0.95,
scale_type = "free_y"
)
## -----------------------------------------------------------------------------
# Run probtrans
pt.WW <- probtrans(msf.WW, predt = 0)
# Example predict at different times
summary(pt.WW, times = c(1, 5, 10))
## ----plot_pt_filled1----------------------------------------------------------
plot(pt.WW, from = 1)
## ----plot_pt_filled2----------------------------------------------------------
# from = 1 implied
plot(pt.WW, use.ggplot = TRUE)
## ----plot_pt_filled3----------------------------------------------------------
plot(pt.WW, use.ggplot = TRUE, label = "annotate", cex = 6)
## ----plot_pt_filled4----------------------------------------------------------
# Check state order again from transition matrix
tmat
# Plot aids (state 2), then event-free (state 1), and SI on top (state 3)
plot(pt.WW, use.ggplot = TRUE, ord = c(2, 1, 3))
## ----plot_pt_stacked----------------------------------------------------------
plot(pt.WW, use.ggplot = TRUE, type = "stacked")
## ----plot_pt_separate1--------------------------------------------------------
par(mfrow = c(1, 3))
plot(pt.WW, type = "separate")
## ----plot_pt_separate2--------------------------------------------------------
plot(
pt.WW,
use.ggplot = TRUE,
type = "separate",
conf.int = 0.95, # 95% level
conf.type = "log"
)
## ----plot_pt_single1----------------------------------------------------------
plot(
pt.WW,
use.ggplot = TRUE,
type = "single",
conf.int = 0.95, # 95% level
conf.type = "log"
)
## ----plot_pt_single2----------------------------------------------------------
plot(
pt.WW,
use.ggplot = TRUE,
type = "single",
conf.type = "none",
lty = c(1, 2, 3), # change the linetype
lwd = 1.5,
)
## ----plot_pt_single3----------------------------------------------------------
# Run plot and extract data using $data
dat_plot <- plot(x = pt.WW, use.ggplot = TRUE, type = "single")$data
# Begin new plot - Exclude or select states to be plotted
ggplot(data = dat_plot[state != "event-free", ], aes(
x = time,
y = prob,
ymin = CI_low,
ymax = CI_upp,
group = state,
linetype = state,
col = state
)) +
# Add CI and lines; change fill = NA to remove CIs
geom_ribbon(col = NA, fill = "gray", alpha = 0.5) +
geom_line() +
# Remaining details
labs(x = "Time", y = "Cumulative Incidence") +
coord_cartesian(ylim = c(0, 1), xlim = c(0, 14), expand = 0)
## ----plot.Cuminc1-------------------------------------------------------------
cum_incid <- Cuminc(
time = "time",
status = "status",
data = si
)
plot(
x = cum_incid,
use.ggplot = TRUE,
conf.type = "log",
lty = 1:2,
conf.int = 0.95,
)
## ----plot.cuminc_x------------------------------------------------------------
cum_incid_grp <- Cuminc(
time = "time",
status = "status",
group = "ccr5",
data = si
)
plot(
x = cum_incid_grp,
use.ggplot = TRUE,
conf.type = "none",
lty = 1:4,
facet = FALSE
)
plot(
x = cum_incid_grp,
use.ggplot = TRUE,
conf.type = "none",
lty = 1:4,
facet = TRUE
)
## ----vis_multiple_prep--------------------------------------------------------
# 1. Prepare patient data - both CCR5 genotypes
WW <- data.frame(
ccr5WM.1 = c(0, 0),
ccr5WM.2 = c(0, 0),
trans = c(1, 2),
strata = c(1, 2)
)
WM <- data.frame(
ccr5WM.1 = c(1, 0),
ccr5WM.2 = c(0, 1),
trans = c(1, 2),
strata = c(1, 2)
)
# 2. Make msfit objects
msf.WW <- msfit(c1, WW, trans = tmat)
msf.WM <- msfit(c1, WM, trans = tmat)
# 3. Make probtrans objects
pt.WW <- probtrans(msf.WW, predt = 0)
pt.WM <- probtrans(msf.WM, predt = 0)
## ----vis_multiple_plot--------------------------------------------------------
vis.multiple.pt(
x = list(pt.WW, pt.WM),
from = 1,
to = 2,
conf.type = "log",
cols = c(1, 2),
labels = c("Pat WW", "Pat WM"),
legend.title = "Ref patients"
)
## ----vis_multiple_plot2-------------------------------------------------------
vis.multiple.pt(
x = list(pt.WW),
from = 1,
to = 2,
conf.type = "log",
cols = c(1, 2),
labels = c("Pat WW", "Pat WM"),
legend.title = "Ref patients"
)
## ----mirror1------------------------------------------------------------------
vis.mirror.pt(
x = list(pt.WW, pt.WM),
titles = c("WW", "WM"),
horizon = 10
)
## ----mirror2------------------------------------------------------------------
vis.mirror.pt(
x = list(pt.WW, pt.WM),
titles = c("WW", "WM"),
size_titles = 8,
horizon = 5,
breaks_x_left = c(0, 1, 2, 3, 4, 5),
breaks_x_right = c(0, 1, 2, 3, 4),
ord = c(3, 2, 1)
)
## ----saving, eval=FALSE-------------------------------------------------------
# # Saving a ggplot2 plot
# p <- plot(pt.WW, use.ggplot = TRUE)
# ggplot2::ggsave("my_ggplot2_plot.png")
#
# # Standard graphics plot
# png("my_standard_plot.png")
# plot(pt.WW, use.ggplot = FALSE)
# dev.off()
## ----session-info, include=TRUE, echo=TRUE, results='markup'------------------
# Date/time
Sys.time()
# Environment
sessionInfo()
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.