Simulate changes of state and transition times from a semi-Markov
multi-state model fitted using flexsurvreg.
sim.fmsm(x, trans, t, newdata = NULL, start = 1, M = 10, tvar = "trans",
tcovs = NULL, debug = FALSE)A model fitted with flexsurvreg. See
msfit.flexsurvreg for the required form of the model and the
data.
Alternatively x can be a list of fitted flexsurvreg
model objects. The ith element of this list is the model
corresponding to the ith transition in trans. This is a more
efficient way to fit a multi-state model, but only valid if the parameters
are different between different transitions.
Matrix indicating allowed transitions. See
msfit.flexsurvreg.
Time, or vector of times for each of the M individuals, to
simulate trajectories until.
A data frame specifying the values of covariates in the
fitted model, other than the transition number. See
msfit.flexsurvreg.
Starting state, or vector of starting states for each of the
M individuals.
Number of individual trajectories to simulate.
Variable in the data representing the transition type. Not
required if x is a list of models.
Names of "predictable" time-dependent covariates in
newdata, i.e. those whose values change at the same rate as time.
Age is a typical example. During simulation, their values will be updated
after each transition time, by adding the current time to the value
supplied in newdata. This assumes the covariate is measured in the
same unit as time. tcovs is supplied as a character vector.
Print intermediate outputs: for development use.
A list of two matrices named st and t. The rows of
each matrix represent simulated individuals. The columns of t
contain the times when the individual changes state, to the corresponding
states in st.
The first columns will always contain the starting states and the starting
times. The last column of t represents either the time when the
individual moves to an absorbing state, or right-censoring in a transient
state at the time given in the t argument to sim.fmsm.
sim.fmsm relies on the presence of a function to sample random
numbers from the parametric survival distribution used in the fitted model
x, for example rweibull for Weibull models. If
x was fitted using a custom distribution, called dist say,
then there must be a function called (something like) rdist either
in the working environment, or supplied through the dfns argument to
flexsurvreg. This must be in the same format as standard R
functions such as rweibull, with first argument n, and
remaining arguments giving the parameters of the distribution. It must be
vectorised with respect to the parameter arguments.
This function is only valid for semi-Markov ("clock-reset") models, though no warning or error is currently given if the model is not of this type. An equivalent for time-inhomogeneous Markov ("clock-forward") models has currently not been implemented.
Note the random sampling method for flexsurvspline models is
currently very inefficient, so that looping over the M individuals
will be very slow.
# NOT RUN {
bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist="exp")
tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA))
sim.fmsm(bexp, M=10, t=5, trans=tmat)
# }
Run the code above in your browser using DataLab