Plot method for an object of class 'probtrans'. It plots the transition
probabilities as estimated by probtrans
.
Usage
# S3 method for class 'probtrans'
plot(
x,
from = 1,
type = c("filled", "single", "separate", "stacked"),
ord,
cols,
xlab = "Time",
ylab = "Probability",
xlim,
ylim,
lwd,
lty,
cex,
legend,
legend.pos = "right",
bty = "n",
xaxs = "i",
yaxs = "i",
use.ggplot = FALSE,
conf.int = 0.95,
conf.type = c("log", "plain", "none"),
label,
...
)
Arguments
- x
Object of class 'probtrans', containing estimated transition probabilities
- from
The starting state from which the probabilities are used to plot
- type
One of
"stacked"
(default),"filled"
,"single"
or"separate"
; in case of"stacked"
, the transition probabilities are stacked and the distance between two adjacent curves indicates the probability, this is also true for"filled"
, but the space between adjacent curves are filled, in case of"single"
, the probabilities are shown as different curves in a single plot, in case of"separate"
, separate plots are shown for the estimated transition probabilities- ord
A vector of length equal to the number of states, specifying the order of plotting in case type=
"stacked"
or"filled"
- cols
A vector specifying colors for the different transitions; default is a palette from green to red, when type=
"filled"
(reordered according toord
, and 1 (black), otherwise- xlab
A title for the x-axis; default is
"Time"
- ylab
A title for the y-axis; default is
"Probability"
- xlim
The x limits of the plot(s), default is range of time
- ylim
The y limits of the plot(s); if ylim is specified for type="separate", then all plots use the same ylim for y limits
- lwd
The line width, see
par
; default is 1- lty
The line type, see
par
; default is 1- cex
Character size, used in text; only used when type=
"stacked"
or"filled"
- legend
Character vector of length equal to the number of transitions, to be used in a legend; if missing, numbers will be used; this and the legend arguments following are ignored when type="separate"
- legend.pos
The position of the legend, see
legend
; default is"topleft"
- bty
The box type of the legend, see
legend
- xaxs
See
par
, default is "i", for type="stacked"
- yaxs
See
par
, default is "i", for type="stacked"
- use.ggplot
Default FALSE, set TRUE for ggplot version of plot
- conf.int
Confidence level (%) from 0-1 for probabilities, default is 0.95 (95% CI). Setting to 0 removes the CIs.
- conf.type
Type of confidence interval - either "log" or "plain" . See function details for details.
- label
Only relevant for type = "filled" or "stacked", set to "annotate" to have state labels on plot, or leave unspecified.
- ...
Further arguments to plot
Details
Regarding confidence intervals: let \(p\) denote a predicted probability, \(\sigma\) its estimated standard error, and \(z_{\alpha/2}\) denote the critical value of the standard normal distribution at confidence level \(1 - \alpha\).
The confidence interval of type "plain" is then $$p \pm z_{\alpha/2} * \sigma$$
The confidence interval of type "log", based on the Delta method, is then $$\exp(\log(p) \pm z_{\alpha/2} * \sigma / p)$$
Examples
# transition matrix for illness-death model
tmat <- trans.illdeath()
# data in wide format, for transition 1 this is dataset E1 of
# Therneau and Grambsch (2000)
tg <- data.frame(illt=c(1,1,6,6,8,9),ills=c(1,0,1,1,0,1),
dt=c(5,1,9,7,8,12),ds=c(1,1,1,1,1,1),
x1=c(1,1,1,0,0,0),x2=c(6:1))
# data in long format using msprep
tglong <- msprep(time=c(NA,"illt","dt"),status=c(NA,"ills","ds"),
data=tg,keep=c("x1","x2"),trans=tmat)
# events
events(tglong)
#> $Frequencies
#> to
#> from healthy illness death no event total entering
#> healthy 0 4 2 0 6
#> illness 0 0 4 0 4
#> death 0 0 0 6 6
#>
#> $Proportions
#> to
#> from healthy illness death no event
#> healthy 0.0000000 0.6666667 0.3333333 0.0000000
#> illness 0.0000000 0.0000000 1.0000000 0.0000000
#> death 0.0000000 0.0000000 0.0000000 1.0000000
#>
table(tglong$status,tglong$to,tglong$from)
#> , , = 1
#>
#>
#> 2 3
#> 0 2 4
#> 1 4 2
#>
#> , , = 2
#>
#>
#> 2 3
#> 0 0 0
#> 1 0 4
#>
# expanded covariates
tglong <- expand.covs(tglong,c("x1","x2"))
# Cox model with different covariate
cx <- coxph(Surv(Tstart,Tstop,status)~x1.1+x2.2+strata(trans),
data=tglong,method="breslow")
summary(cx)
#> Call:
#> coxph(formula = Surv(Tstart, Tstop, status) ~ x1.1 + x2.2 + strata(trans),
#> data = tglong, method = "breslow")
#>
#> n= 16, number of events= 10
#>
#> coef exp(coef) se(coef) z Pr(>|z|)
#> x1.1 1.4753 4.3723 1.2557 1.175 0.240
#> x2.2 0.8571 2.3563 0.8848 0.969 0.333
#>
#> exp(coef) exp(-coef) lower .95 upper .95
#> x1.1 4.372 0.2287 0.3731 51.24
#> x2.2 2.356 0.4244 0.4160 13.35
#>
#> Concordance= 0.781 (se = 0.077 )
#> Likelihood ratio test= 2.93 on 2 df, p=0.2
#> Wald test = 2.32 on 2 df, p=0.3
#> Score (logrank) test = 2.86 on 2 df, p=0.2
#>
# new data, to check whether results are the same for transition 1 as
# those in appendix E.1 of Therneau and Grambsch (2000)
newdata <- data.frame(trans=1:3,x1.1=c(0,0,0),x2.2=c(0,1,0),strata=1:3)
msf <- msfit(cx,newdata,trans=tmat)
# probtrans
pt <- probtrans(msf,predt=0)
# default plot
plot(pt,ord=c(2,3,1),lwd=2,cex=0.75)
# filled plot
plot(pt,type="filled",ord=c(2,3,1),lwd=2,cex=0.75)
# single plot
plot(pt,type="single",lwd=2,col=rep(1,3),lty=1:3,legend.pos=c(8,1))
# separate plots
par(mfrow=c(2,2))
plot(pt,type="sep",lwd=2)
par(mfrow=c(1,1))
# ggplot version - see vignette for details
library(ggplot2)
plot(pt, ord=c(2,3,1), use.ggplot = TRUE)