mssample {mstate} | R Documentation |
Given cumulative transition hazards sample paths through the multi-state model.
mssample(Haz, trans, history=list(state=1,time=0,tstate=NULL), beta.state=NULL, clock=c("forward","reset"), output=c("state","path","data"), tvec, cens=NULL, M=10, do.trace=NULL)
Haz |
Cumulative hazards to be sampled from. These should be
given as a data frame with columns |
trans |
Transition matrix describing the multi-state model. See
|
history |
A list with elements The elements |
beta.state |
A matrix of dimension (no states) x (no transitions)
specifying estimated effects of times at which earlier states were reached
on subsequent transitions. If these are not in the model, the value
|
clock |
Character argument, either |
output |
One of |
tvec |
A numeric vector of time points at which the states or paths
should be evaluated. Ignored if |
cens |
An independent censoring distribution, given as a data frame with time and Haz |
M |
The number of sampled trajectories through the multi-state model. The default is 10, since the procedure can become quite time-consuming |
do.trace |
An integer, specifying that the replication number should be
written to the console every |
The procedure is described in detail in Fiocco, Putter & van Houwelingen (2008).
The argument beta.state
and the element tstate
from the
argument history
are meant to incorporate situations where the time at
which some previous states were visited may affect future transition rates.
The relation between time of visit of state s
and transition k
is assumed to be linear on the log-hazards; the corresponding regression
coefficient is to be supplied as the (s,k)-element of beta.state
,
which is 0 if no such effect has been included in the model. If no such effects
are present, then beta.state
=NULL
(default) suffices. In the
tstate
element of history
, the s
-th element is the time
at which state s
was visited. This is only relevant for states which
have been visited prior to the beginning of sampling, i.e. before the
time
element of history
; the elements of tstate
are
internally updated when in the sampling process new states are visited
(only if beta.state
is not NULL
to avoid unnecessary
computations).
M simulated paths through the multi-state model given by trans
and
Haz
. It is either a data frame with columns time
, pstate1
,
..., pstateS
for S states when output="state"
, or with columns
time
, ppath1
,..., ppathP
for the P paths specified in
paths
(trans) when output="path"
. When output="data"
,
the sampled paths are stored in an "msdata"
object, a data frame in long
format such as that obtained by msprep
. This may be useful for
(semi-)parametric bootstrap procedures, in which case cens
may be used
as censoring distribution (assumed to be independent of all transition times
and independent of any covariates).
Marta Fiocco, Hein Putter H.Putter@lumc.nl
Fiocco M, Putter H, van Houwelingen HC (2008). Reduced-rank proportional hazards regression and simulation-based prediction for multi-state models. Statistics in Medicine 27, 4340–4358.
# transition matrix for illness-death model tmat <- trans.illdeath() # data in wide format, for transition 1 this is dataset E1 of # Therneau & Grambsch (T&G) 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) # 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") # new data, to check whether results are the same for transition 1 as T&G newdata <- data.frame(trans=1:3,x1.1=c(0,0,0),x2.2=c(0,1,0),strata=1:3) fit <- msfit(cx,newdata,trans=tmat) tv <- unique(fit$Haz$time) # mssample set.seed(1234) mssample(Haz=fit$Haz,trans=tmat,tvec=tv,M=100) set.seed(1234) paths(tmat) mssample(Haz=fit$Haz,trans=tmat,tvec=tv,M=100,output="path") set.seed(1234) mssample(Haz=fit$Haz,trans=tmat,tvec=tv,M=100,output="data",do.trace=25)