| CohortDtstmTrans {hesim} | R Documentation |
Transitions for a cohort discrete time state transition model
Description
Simulate health state transitions in a cohort discrete time state transition model.
Format
An R6::R6Class object.
Public fields
paramsParameters for simulating health state transitions. Supports objects of class
tparams_transprobsorparams_mlogit_list.input_dataAn object of class
input_mats.cycle_lengthThe length of a model cycle in terms of years. The default is
1meaning that model cycles are 1 year long.absorbingA numeric vector denoting the states that are absorbing states; i.e., states that cannot be transitioned from. Each element should correspond to a
state_id, which should, in turn, be the index of the health state.
Active bindings
start_stateprobsA non-negative vector with length equal to the number of health states containing the probability that the cohort is in each health state at the start of the simulation. For example, if there were three states and the cohort began the simulation in state 1, then
start_stateprobs = c(1, 0, 0). Automatically normalized to sum to 1. IfNULL, then a vector with the first element equal to 1 and all remaining elements equal to 0.trans_matA transition matrix describing the states and transitions in a discrete-time multi-state model. Only required if the model is parameterized using multinomial logistic regression. The
(i,j)element represents a transition from stateito statej. Each possible transition from rowishould be based on a separate multinomial logistic regression and ordered from0toK - 1whereKis the number of possible transitions. Transitions that are not possible should beNA. and the reference category for each row should be0.
Methods
Public methods
Method new()
Create a new CohortDtstmTrans object.
Usage
CohortDtstmTrans$new( params, input_data = NULL, trans_mat = NULL, start_stateprobs = NULL, cycle_length = 1, absorbing = NULL )
Arguments
paramsThe
paramsfield.input_dataThe
input_datafield.trans_matThe
trans_matfield.start_stateprobsThe
start_stateprobsfield.cycle_lengthThe
cycle_lengthfield.absorbingThe
absorbingfield. IfNULL, then the constructor will determine which states are absorbing automatically; nonNULLvalues will override this behavior.
Returns
A new CohortDtstmTrans object.
Method sim_stateprobs()
Simulate probability of being in each health state during each model cycle.
Usage
CohortDtstmTrans$sim_stateprobs(n_cycles)
Arguments
n_cyclesThe number of model cycles to simulate the model for.
Returns
An object of class stateprobs.
Method clone()
The objects of this class are cloneable with this method.
Usage
CohortDtstmTrans$clone(deep = FALSE)
Arguments
deepWhether to make a deep clone.
See Also
create_CohortDtstmTrans() creates a CohortDtstmTrans object from either
a fitted statistical model or a parameter object. A complete economic model can be implemented
with the CohortDtstm class.
Examples
library("msm")
library("data.table")
set.seed(101)
# We consider two examples that have the same treatment strategies and patients.
# One model is parameterized by fitting a multi-state model with the "msm"
# package; in the second model, the parameters are entered "manually" with
# a "params_mlogit_list" object.
# MODEL SETUP
strategies <- data.table(
strategy_id = c(1, 2, 3),
strategy_name = c("SOC", "New 1", "New 2")
)
patients <- data.table(patient_id = 1:2)
hesim_dat <- hesim_data(
strategies = strategies,
patients = patients
)
# EXAMPLE #1: msm
## Fit multi-state model with panel data via msm
qinit <- rbind(
c(0, 0.28163, 0.01239),
c(0, 0, 0.10204),
c(0, 0, 0)
)
fit <- msm(state_id ~ time, subject = patient_id,
data = onc3p[patient_id %in% sample(patient_id, 100)],
covariates = list("1-2" =~ strategy_name),
qmatrix = qinit)
## Simulation model
transmod_data <- expand(hesim_dat)
transmod <- create_CohortDtstmTrans(fit,
input_data = transmod_data,
cycle_length = 1/2,
fixedpars = 2,
n = 2)
transmod$sim_stateprobs(n_cycles = 2)
# EXAMPLE #2: params_mlogit_list
## Input data
transmod_data[, intercept := 1]
transmod_data[, new1 := ifelse(strategy_name == "New 1", 1, 0)]
transmod_data[, new2 := ifelse(strategy_name == "New 2", 1, 0)]
## Parameters
n <- 10
transmod_params <- params_mlogit_list(
## Transitions from stable state (stable -> progression, stable -> death)
stable = params_mlogit(
coefs = list(
progression = data.frame(
intercept = rnorm(n, -0.65, .1),
new1 = rnorm(n, log(.8), .02),
new2 = rnorm(n, log(.7, .02))
),
death = data.frame(
intercept = rnorm(n, -3.75, .1),
new1 = rep(0, n),
new2 = rep(0, n)
)
)
),
## Transition from progression state (progression -> death)
progression = params_mlogit(
coefs = list(
death = data.frame(
intercept = rnorm(n, 2.45, .1),
new1 = rep(0, n),
new2 = rep(0, n)
)
)
)
)
transmod_params
## Simulation model
tmat <- rbind(c(0, 1, 2),
c(NA, 0, 1),
c(NA, NA, NA))
transmod <- create_CohortDtstmTrans(transmod_params,
input_data = transmod_data,
trans_mat = tmat, cycle_length = 1)
transmod$sim_stateprobs(n_cycles = 2)