Plot method for an object of class 'probtrans'. It plots the transition probabilities as estimated by probtrans.

# S3 method for 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 to ord, 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

Value

No return value

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)$$

See also

Author

Hein Putter H.Putter@lumc.nl

Edouard F. Bonneville e.f.bonneville@lumc.nl

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)