Joint models for non-continuous outcomes
Details on the different types of models for non-continuous data in Simulx and their syntax are given on these pages:
Detailed descriptions of the library of non-continuous data models integrated within Simulx are given here:
On the current page, we show examples of joint models combining continuous and non-continuous outcomes from the Simulx demos.
Joint model for continuous PK and categorical PD data
7.2.categorical/PKcategorical.smlx
In this PK/PD demo, the PD is represented by three severity levels: 1 (Low), 2 (Medium) and 3 (High). The severity levels are modeled via a probability distribution for each category. As the categories are ordered, cumulative odds ratios are used in the model definition. The concentration of the PK model is affecting the probabilities via an effect compartment to mimic an effect delay.
Let be the PD level for patient i at time . We can then use a proportional odds model for modeling this categorical data:
where is the predicted concentration of warfarin in the effect compartment at time t for patient i with PK parameters . This model defines a probability distribution for if .
If , the probability of low PCA at time increases along with the predicted concentration .
The full model implemented in the model includes the joint structural model and a statistical model with random effects on the PK parameters and , and an effect of the wt covariate (weight) on V and Cl:
[COVARIATE]
input = wt
EQUATION:
lw70 = log(wt/70)
[INDIVIDUAL]
input = {Tlag_pop, omega_Tlag, ka_pop, omega_ka, V_pop, beta_V_lw70, lw70, omega_V, Cl_pop, beta_Cl_lw70, omega_Cl, ke0_pop, omega_ke0, alpha_pop, omega_alpha, beta_pop, gamma_pop}
DEFINITION:
Tlag = {distribution=logNormal, typical=Tlag_pop, sd=omega_Tlag}
ka = {distribution=logNormal, typical=ka_pop, sd=omega_ka}
V = {distribution=logNormal, typical=V_pop, covariate=lw70, coefficient=beta_V_lw70, sd=omega_V}
Cl = {distribution=logNormal, typical=Cl_pop, covariate=lw70, coefficient=beta_Cl_lw70, sd=omega_Cl}
ke0 = {distribution=logNormal, typical=ke0_pop, sd=omega_ke0}
alpha = {distribution=normal, typical=alpha_pop, sd=omega_alpha}
beta = {distribution=normal, typical=beta_pop, no-variability}
gamma = {distribution=logNormal, typical=gamma_pop, no-variability}
[LONGITUDINAL]
input = {Tlag, ka, V, Cl, ke0, alpha, beta, gamma, a, b}
EQUATION:
{Cc,Ce} = pkmodel(Tlag,ka,V,Cl,ke0)
lp1 = alpha + beta*Ce
lp2 = lp1+ gamma ; gamma >= 0
DEFINITION:
Level = {type = categorical, categories={1,2,3}, logit(P(Level<=1)) = lp1, logit(P(Level<=2)) = lp2}
Conc = {distribution=normal, prediction=Cc, errorModel=combined1(a, b)}
OUTPUT:
output = {Cc, Conc, Level}
Two simulation groups are defined: multiple and single dose.
See Categorical data models for more details about categorical data models.
Joint model for continuous PK and count PD data
7.3.count/PKcount.smlx
In this demo, we observe how the number of seizures per week decreases when two different dosing regimens of a drug are given. The number of seizures per week is described using a Poisson distribution, assuming that the Poisson parameter is function of the predicted concentration. For any individual i, we have
where is the predicted concentration for individual i at time t and
The joint model is implemented in the model file, along with a statistical model with random effect on the PK parameters and :
[INDIVIDUAL]
input = {V_pop, omega_V, k_pop, omega_k, ke0_pop, lambda0_pop, omega_lambda0, IC50_pop}
DEFINITION:
V= {distribution=logNormal, typical=V_pop, sd=omega_V}
k = {distribution=logNormal, typical=k_pop, sd=omega_k}
ke0 = {distribution=logNormal, typical=ke0_pop, no-variability}
lambda0 = {distribution=logNormal, typical=lambda0_pop, sd=omega_lambda0}
IC50 = {distribution=logNormal, typical=IC50_pop, no-variability}
[LONGITUDINAL]
input = {V, k, ke0, lambda0, IC50}
PK:
{Cc,Ce} = pkmodel(V, k, ke0)
EQUATION:
; time evolution
lambda = lambda0 * (1 - Ce/(Ce+IC50))
DEFINITION:
CountNumber = {type=count, log(P(CountNumber=k)) = k*log(lambda) - lambda - factln(k)}
OUTPUT:
output = CountNumber
See Count data models for more details about count data models.
Joint model for continuous PK and time-to-event data
7.1.tte/PKrtte.smlx
In this demo, a joint PK-TTE model is used to capture Hemorrhaging adverse events induced by drug concentration following multiple doses.
We use a Weibull model for the events count data, assuming that the baseline is function of the predicted concentration. For any individual i, we define the hazard function as
where is the predicted concentration for individual i at time t. The joint model is implemented in the model file, that includes also a statistical model with random effects on the PK parameters and a proportional error model for the simulated PK:
[INDIVIDUAL]
input = {ka_pop, omega_ka, V_pop, omega_V, Cl_pop, omega_Cl, gamma_pop, beta_pop}
DEFINITION:
ka = {distribution=logNormal, typical=ka_pop, sd=omega_ka}
V = {distribution=logNormal, typical=V_pop, sd=omega_V}
Cl = {distribution=logNormal, typical=Cl_pop, sd=omega_Cl}
gamma = {distribution=logNormal, typical=gamma_pop, no-variability}
beta = {distribution=logNormal, typical=beta_pop, no-variability}
[LONGITUDINAL]
input = {b}
DESCRIPTION: PK + repeated event
input = {ka, V, Cl, gamma, beta}
EQUATION:
Cc = pkmodel(ka, V, Cl)
if t<0.1
h = 0
else
h = gamma*Cc*(t^(beta-1))
end
DEFINITION:
Hemorrhaging = {type=event, hazard=h}
OUTPUT:
output = {Cc, Hemorrhaging}
DEFINITION:
y = {distribution=normal, prediction=Cc, errorModel=proportional(b)}
See Time-to-event data models for more details about time-to-event data models.