Description
The [INDIVIDUAL] section is used to define a probability distribution for model parameters, in order to model inter-individual and inter-occasion variability.
Scope
The [INDIVIDUAL] section is used in mlxtran models for simulation with Simulx. This section is optional and only needed for models that have parameters with inter-individual variability. Mlxtran models for Monolix do not need this section because the parameter distributions are defined via the graphical user interface.
Inputs
The inputs for the [INDIVIDUAL] section are the parameters that are declared in the input = { } list of the [INDIVIDUAL] section. They typically include the population parameters which describe the parameter distributions and the (possibly transformed) covariates. These inputs are obtained from the [COVARIATE] section or considered as global model input defined in the Simulx graphical user interface.
In addition, for categorical covariates, the type and the categories must be listed using the syntax below. The categories can be strings or integers.
covName = {type=categorical, categories = {..., ..., ...}}
Parameters that appear in the input of the [INDIVIDUAL] section and do not appear as input or output of the [COVARIATE] section will be recognized as population parameters and appear in the population parameter element of Simulx. Parameters that do appear in the [COVARIATE] section will be recognized as covariates.
Example:
[INDIVIDUAL] input = {V_pop, omega_V, Cl_pop, omega_Cl, WT, SEX} SEX = {type=categorical, categories = {Male, Female}}
Outputs
All parameters that has been defined in the [INDIVIDUAL] section are considered as an output of this section. There is no explicit OUTPUT block. Outputs from the [INDIVIDUAL] section are used as input for the [LONGITUDINAL] section. [INDIVIDUAL] output to [LONGITUDINAL] input matching is made by matching parameter names in the [INDIVIDUAL] section with parameters in the inputs = { } list of the [LONGITUDINAL] section.
Usage
The definition of probability distribution for a model parameter is done with the EQUATION: and DEFINITION: blocks. The EQUATION: block contains mathematical equations, for instance if parameter transformations are needed. The DEFINITION: block is used to define the probability distributions, correlations between random effects, covariate effects and inter-occasion variability. We will define these three aspects one-by-one.
- parameter distribution
- correlations between random effects
- covariate effects
- inter-occasion variability
Probability distribution
The main four distributions possible for the parameters are the normal, lognormal, logitnormal and probitnormal distributions. Additional distributions available in Simulx are described here. The lognormal, logitnormal and probitnormal distributions are transformations of the normal distribution and therefore convenient to handle:
- If \(X\) follows a lognormal distribution with \(X \in ]0,+\inf[ \), then \(\log(X)\) follows a normal distribution.
- If \(X\) follows a logitnormal distribution with \(X \in ]0,1[ \), then \(\log(\frac{X}{1-X})\) follows a normal distribution. The logitnormal distribution can also be defined on an interval \(X \in ]a,b[ \), in this case the transformation is \(\log(\frac{X-a}{b-X})\).
- If \(X\) follows a probitnormal distribution with \(X \in ]0,1[ \), then \(\Phi^{-1}(X)\) follows a normal distribution, with \(\Phi \) the cumulative distribution function of the standard normal distribution.
These distributions are defined by two parameters, indicating the location and the width of the distribution. It is common to separate this information into two terms, by writing, for a normal distribution: \(X = X_{pop} + \eta_{X}\) with \(X_{pop}\) the typical value (location) and \(\eta_X\) the random effects following a normal distribution \({\cal N}(0,\sigma_X^2)\), i.e with mean 0 and standard deviation \(\sigma_X\) (width). Note that in this case \(X \sim {\cal N}(X_{pop},\sigma_X^2)\) with \(X_{pop}\) the mean of the normal distribution and \(\sigma_X\) its standard deviation.
Similarly for lognormal parameters, we can write:
$$\log(X) = \log(X_{pop}) + \eta_{X} \iff X = X_{pop} e^{\eta_X}$$
\(X_{pop}\) represent the typical value, \(\log(X_{pop})\) the mean of the associated normal distribution and \(\sigma_X\) the standard deviation of both the associated normal distribution \({\cal N}(\log(X_{pop}),\sigma_X^2)\) and of the random effects \(\eta_X\). The logic is the same for logitnormal and probitnormal distributions.
The following syntax applies to define a probability distribution for the random variable X (i.e the individual parameter):
DEFINITION: X = {distribution= ..., typical = ..., sd = ..., min= ..., max=...}
The arguments to the probability distribution definition are:
- distribution: indicates the type of the distribution. On the right-hand side, the user must indicate one of the following reserved keywords:
normal
,lognormal
,logitnormal
, orprobitnormal
. For use in Simulx, additional distributions are also accepted, but they cannot be combined with covariates and correlations. The full list of distributions is available here. - typical: typical value of the distribution (see above for more). Alternatively, the mean of the corresponding normal distribution can also be indicated, using the argument
mean
. On the right-hand side, the user can give a double value or a parameter given as input or defined in the EQUATION block. When the [INDIVIDUAL] block is generated by Monolix, the typical parameter is noted with_pop
, but this is not mandatory (parameter names are freely chosen by the user). - sd: standard deviation of the corresponding normal distribution. Alternatively, the variance can also be indicated, using the argument
var
. On the right-hand side, the user can give a double value or a parameter given as input or defined in the EQUATION block. In case of a parameter without variability,sd=...
can be replaced byno-variability
. When the [INDIVIDUAL] block is generated by Monolix, the standard deviation parameter is noted withomega_
, but this is not mandatory (parameter names are freely chosen by the user). - min and max: indicate a lower and upper bound for logitnormal distributions only. On the right-hand side, a double value is indicated. Default values are 0 and 1, if not indicated.
Example:
In this example, F has a logitnormal distribution with bounds ]0,1[. As these are the default values, they could also be omitted. ka has no variability. From a mathematical point of view, a parameter without variability does not require a distribution indication, but for consistency with Monolix where this information is used to define the bounds of the possible range of values, it must be indicated. V and Cl have lognormal distributions with variability.
[INDIVIDUAL] input = {F_pop, omega_F, ka_pop, V_pop, omega_V, Cl_pop, omega_Cl} DEFINITION: F = {distribution=logitnormal, typical=F_pop, sd=omega_F, min=0, max=1} ka = {distribution=lognormal, typical=ka_pop, no-variability} V = {distribution=lognormal, typical=V_pop, sd=omega_V } Cl = {distribution=lognormal, typical=Cl_pop, sd=omega_Cl}
In the second example, Emax is sampled from a uniform distribution and IC50 from a lognormal distribution.
[INDIVIDUAL] input = {Emax_min, Emax_max, IC50_pop, omega_IC50} DEFINITION: Emax = {distribution=uniform, min=Emax_min, max=Emax_max} IC50 = {distribution=lognormal, typical=IC50_pop, sd=omega_IC50}
Correlations between random effects
Correlations between random effects can also be specified. The correlation between one or several pairs of parameters can be indicated. Correlations which are not listed are assumed to be zero. The syntax is the following, with corr_p1_p2
and corr_p1_p3
population parameters appearing in the input list and param1
, param2
and param3
individual parameters defined via a distribution with inter-individual variability.
correlation = {r(param1, param2)=corr_p1_p2, r(param1,param3)=corr_p1_3}
Within a correlation group, all correlations must be defined. For instance if there is correlation (ka, V) and (V, Cl), then ka, V, and Cl form a group and it is also necessary to define the correlation between (V, ka). There can be one or several correlation groups. A parameter can only belong to one group. The corresponding variance-covariance matrix is thus a block diagonal matrix with each block representing one group.
Variance-covariance matrices estimated in another software (omega matrix in Nonmem for instance) can be converted to a correlation matrix using the following equation:
$$\text{corr}(\theta_i,\theta_j)=\frac{\text{covar}(\theta_i,\theta_j)}{\sqrt{\text{var}(\theta_i)}\sqrt{\text{var}(\theta_j)}}$$
Example:
In this example, we have two correlation groups (ka,V,Cl) and (Emax,EC50). The parameter Tlag is not correlated with any other and don’t appear in any group.
[INDIVIDUAL] input = {ka_pop, omega_ka, V_pop, omega_V, Cl_pop, omega_Cl, EC50_pop, omega_EC50, Emax_pop, omega_Emax, Tlag_pop, omega_Tlag, corr_ka_V, corr_V_Cl, corr_ka_Cl, corr_Emax_EC50} 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, sd=omega_V} Cl = {distribution=logNormal, typical=Cl_pop, sd=omega_Cl} EC50 = {distribution=logNormal, typical=EC50_pop, sd=omega_EC50} Emax = {distribution=logNormal, typical=Emax_pop, sd=omega_Emax} correlation = {r(Emax, EC50)=corr_Emax_EC50, r(V, Cl)=corr_V_Cl, r(ka, Cl)=corr_ka_Cl, r(ka, V)=corr_ka_V}
Covariates
Covariates effects can be defined directly in the distribution definition. In this case the covariates (or their transformations) are added linearly on the transformed normally-distributed parameter, as in Monolix. In Simulx, it is also possible to define the covariate in a more flexible way, by defining the typical value including the covariates in the EQUATION block and then using the typical value in the typical
argument of the distribution definition. It is possible to use the “Monolix style” for some parameter-covariate relationships and the “flexible style” for others.
In both cases, covariates are considered constant over time for each individual (or each occasion of each individual). For time-varying covariates, see regressors.
Monolix style
When defining a covariate model in Monolix, the covariates are always added linearly on the transformed normally-distributed parameter (e.g log(X) if X has a lognormal distribution). Using covariate transformations defined in the EQUATION block, different parameter-covariate relationships can be obtained, such as exponential or power law. For instance:
$$\log(V) = \log(V_{pop}) + \beta \times WT + \eta_{V} \iff V = V_{pop} \ e^{\beta \times WT} \ e^{\eta_V}$$
$$\log(V) = \log(V_{pop}) + \beta \times tWT + \eta_{V} \quad \textrm{with} \quad tWT=\log\left(\frac{WT}{70}\right) \iff V = V_{pop} \ \left(\frac{WT}{70}\right)^{\beta} \ e^{\eta_V}$$
Categorical covariates have a reference category, which corresponds to the typical value \(X_{pop}\), and the other categories are defined via beta parameters, which indicate the change with respect to the reference category in the linear space. For instance, when adding the covariate RACE with categories “White” (set as reference), “Asian” and “Black” on V which has a lognormal distribution:
$$\log(V) = \log(V_{pop}) + \beta_a \textrm{[if RACE=”Asian”]} + \beta_b \textrm{[if RACE=”Black”]} + \eta_{V} \iff \left\lbrace \begin{array}{ccll} V & = & V_{pop}\ e^{\eta_V} & \textrm{if RACE=”White”} \\ V & = & V_{pop} \ e^{\beta_a} \ e^{\eta_V}& \textrm{if RACE=”Asian”} \\V & = & V_{pop} \ e^{\beta_b} \ e^{\eta_V}& \textrm{if RACE=”Black”} \end{array}\right.$$
To define these relationships in Mlxtran, we add additional arguments covariate
and coefficient
in the distribution definition:
DEFINITION: X = {distribution= ..., typical = ..., covariate = ..., coefficient=..., sd = ...}
- covariate: indicates the covariates influencing the parameter value. On the right-hand side, the comma-separated list of covariates is indicated, surrounded by curly brackets. Covariates must appear in the input list or be defined in the EQUATION block. For categorical covariates, the categories must be indicated below the input list (see above). All covariates are included linearly on the transformed normally-distributed parameter.
- coefficient: indicates the beta coefficients defining the covariate impact. On the right-hand side, the comma-separated list of betas is indicated, surrounded by curly brackets. Betas corresponding to the categories of the same categorical covariate are also surrounded by curly brackets. The betas must be in the same order as the covariates listed in the
covariate
argument and in the same order as the categories listed below the input. For the reference category, a zero is usually indicated. The betas must appear in the input list. The coefficients must be parameters (which can be defined in the EQUATION block or in the input), they cannot be directly numbers.
Example:
In this example, we have two continuous covariates (Age and Weight) and two categorical covariates (Sex and Race). In the [COVARIATE] section, all covariates are listed in the input, categorical covariate categories are listed and continuous covariates are transformed into logtAge
and logtWeight
.
In the [INDIVIDUAL] section, the input lists the population parameters (typical values _pop
, standard deviations omega_
and all betas
) and the (possibly transformed) covariates. The order of the categories for categorical covariates is indicated just below. In the DEFINITION bloc, we define the distribution for:
- ka: covariate Race
- V: covariate logtWeight
- Cl: covariates RACE, Sex, logtWeight and logtAge
[COVARIATE] input = {Age, Weight, Race, Sex} Race = {type=categorical, categories={Caucasian, Black, Latin}} Sex = {type=categorical, categories={M, F}} EQUATION: logtAge = log(Age/65) logtWeight = log(Weight/70) [INDIVIDUAL] input = {V_pop, omega_V, ka_pop, omega_ka, Cl_pop, omega_Cl, logtAge, Race, Sex, logtWeight, beta_Cl_Race_Caucasian, beta_Cl_Race_Latin, beta_Cl_Smoke_yes, beta_Cl_logtAge, beta_V_logtWeight, beta_Cl_logtWeight, beta_ka_Race_Caucasian, beta_ka_Race_Latin} Race = {type=categorical, categories={Caucasian, Black, Latin}} Sex = {type=categorical, categories={M, F}} DEFINITION: V = {distribution=logNormal, typical=V_pop, covariate=logtWeight, coefficient=beta_V_logtWeight, sd=omega_V} ka = {distribution=logNormal, typical=ka_pop, covariate=Race, coefficient={0, beta_ka_Race_Black, beta_ka_Race_Latin}, sd=omega_ka} Cl = {distribution=logNormal, typical=Cl_pop, covariate={Race, Smoke, logtAge, logtWeight}, coefficient={{0, beta_Cl_Race_Black, beta_Cl_Race_Latin}, {0, beta_Cl_Sex_F}, beta_Cl_logtAge, beta_Cl_logtWeight}, sd=omega_Cl}
Flexible style
Simulx allows more flexibility in the definition of the covariate model than Monolix. It can for instance be complex non-linear relations between the parameters and the covariates. The most convenient way is to define the typical value including the covariate effects (often prefixed with TV in Nonmem) in the DEFINITION block and then use this variable in the DEFINITION block where the random effects are defined.
In this case, the untransformed covariates are given directly as input to the [INDIVIDUAL] section. To be recognized as covariates and not population parameters, it is important to have a [COVARIATE] section which lists the covariates in the input, and the categorical covariate categories.
The typical value can be defined using mathematical expressions and if/else statements. If/else statements can use conditions based on continuous and categorical covariates. A given if/else statement can combined several continuous covariate or several categorical covariates but not a mix of continuous and categorical covariates in the same if/else statement. When categories contain spaces or symbols (not recommended), they must be surrounded by single quotes. Even when categorical covariates categories are integers, they cannot be used in mathematical expression (e.g (1-SEX) is forbidden).
Example:
In this example, two covariates are used: Age and Race. They are listed in the [INDIVIDUAL] input list, but also the [COVARIATE] section, in order to be recognized as covariates, while the other parameters listed in the [INDIVIDUAL] input are recognized as population parameters. Race has 5 different categories and has an impact on ka. Using if/else statement, Japanese and Chinese are grouped together. All covariate effects are defined in the EQUATION block and the typical value with covariates effects in then used in the definition of the distribution.
[COVARIATE] input = {Age, Race} Race = {type=categorical, categories={White, Black, Japanese, Chinese, Latin}} [INDIVIDUAL] input = {V_pop, omega_V, ka_pop_White, ka_pop_Asian, ka_pop_Other, omega_ka, Cl_pop, betaAgeCl, betaAgeV, omega_Cl, Age, Race} Race = {type=categorical, categories={White, Black, Japanese, Chinese, Latin}} EQUATION: if Race == White ka_typ = ka_pop_White elseif Race == Japanese | Race == Chinese ka_typ = ka_pop_Asian else ka_typ = ka_pop_Other end V_typ = V_pop * (Age/45)^betaAgeV Cl_typ = Cl_pop * (Age/45)^betaAgeCl DEFINITION: V = {distribution=logNormal, typical=V_typ, sd=omega_V} ka = {distribution=logNormal, typical=ka_typ, sd=omega_ka} Cl = {distribution=logNormal, typical=Cl_typ, sd=omega_Cl}
Categorical covariates categories can also be integers, as in the example below:
[COVARIATE] input = {Sex} Sex = {type=categorical, categories={0,1}} [INDIVIDUAL] input = {V_pop, omega_V, Cl_pop0, Cl_pop1, omega_Cl, Sex} Sex = {type=categorical, categories={0,1}} EQUATION: if Sex == 1 Cl_typ = Cl_pop1 else Cl_typ = Cl_pop0 end
In the third example, we define a parameter-covariate relationship which requires two parameters. Cl depends on the post-conceptional age (PCA) with a Hill-shaped relationship. The duration of the study is short enough to consider PCA constant over time.
[COVARIATE] input = {PCA} [INDIVIDUAL] input = {V_pop, omega_V, Cl_pop, omega_Cl, PCA50, n, PCA} EQUATION: TVCL = Cl_pop * PCA^n/(PCA50^n+PCA^n) DEFINITION: V = {distribution=logNormal, typical=V_pop, sd=omega_V} Cl = {distribution=logNormal, typical=TVCL , sd=omega_Cl}
Inter-occasion variability
In addition to inter-individual variability, it is possible to define one or several additional levels of variability, called occasions. The occasion structure is defined in the Simulx GUI. Although the terms and keyword refer to inter-individual and inter-occasion variability, it is possible to use them with a different meaning, for instance inter-study variability and inter-arm variability.
Importantly, for inter-occasion variability to be taken into account, there must be an occasion element defined in Simulx, and this occasion element must have more than one occasion. If this is not the case, the random effect at IOV level will be skipped and parameters with IOV but no IOV will have no variability.
Inter-occasion variability is taken into account by a separate random effect term \(\eta_{ik}^{IOV}\), which varies from occasion to occasion (index \(k\)), while the inter-individual random effect term \(\eta_{i}^{IIV}\) varies from individual to individual only (index \(i\)). The index \(i\) for the IOV random effect indicates that the sampled random effect for id1, occ1 is different than that from id2, occ1. Below we give an example for the definition of the lognormal clearance Cl for individual \(i\) and occasion \(k\):
$$\log(Cl_{ik}) = \log(Cl_{pop}) + \eta_{i}^{IIV} + \eta_{ik}^{IOV}$$
The random effects at the IOV level are characterized by their standard deviation. The syntax is the following:
DEFINITION: X = {distribution = ..., typical = ..., varlevel = {...,...} sd = {...,...}}
- varlevel: indicates the levels at which variability is present. The reserved keywords are
id
(for inter-individual variability),id*occ
for the first level of inter-occasion variability,id*occ*occ
for the second level, etc. The syntaxid*occ
stresses that the random effects are IOV level vary from occasion to occasion but also from individual to individual. A parameter can have only IIV, only IOV or both. - sd: the
sd
argument lists as many standard deviations as variability levels defined invarlevel
.
Of course, covariates
can also be included as explained above, as well as the min
and max
arguments for logitnormal distributions.
Correlations between random effects can be defined at each level, using one line per level and the additional level
argument with value id
, id*occ
, id*occ*occ
, etc. Correlations can only be defined among parameter which have correlations at this level.
correlation = {level = id, r(param1, param2)=corr_p1_p2, r(param1,param3)=corr_p1_3, ...} correlation = {level = id*occ, r(param4, param5)=corr_p4_p5, ...}
Example:
In this example, Tlag has IOV, ka and Cl have IIV and IOV and V has only IIV. The random effects at the IIV level are correlated for V and Cl. The random effects at IOV level are correlated for ka and Tlag.
[INDIVIDUAL] input = {ka_pop, omega_ka, Cl_pop, omega_Cl, Tlag_pop, V_pop, omega_V, gamma_Tlag, gamma_ka, gamma_Cl, corr1_V_Cl, corr2_ka_Tlag} DEFINITION: Tlag = {distribution=logNormal, typical=Tlag_pop, varlevel=id*occ, sd=gamma_Tlag} ka = {distribution=logNormal, typical=ka_pop, varlevel={id, id*occ}, sd={omega_ka, gamma_ka}} Cl = {distribution=logNormal, typical=Cl_pop, varlevel={id, id*occ}, sd={omega_Cl, gamma_Cl}} V = {distribution=logNormal, typical=V_pop, sd=omega_V} correlation = {level=id, r(V, Cl)=corr1_V_Cl} correlation = {level=id*occ, r(ka, Tlag)=corr2_ka_Tlag}