The [POPULATION] section is used to define a distribution for the population parameters.


The [POPULATION] section is used in Mlxtran models for simulation with Simulx. It allows to take into account variability or uncertainty in population parameters. Mlxtran models for Monolix or Mlxplore do not need this section: in Monolix, population parameters are estimated, and in Mlxplore they must be given a single value.


The inputs for the [POPULATION] section are the parameters that are declared in the input = { } list of the [POPULATION] section. These parameters are the typical values and standard deviations for the distribution of the population parameters. When the distribution represents the uncertainty of the population parameters, the typical value is the estimated value and the standard deviation the standard errors estimated by Monolix.


There is no explicit output list. Every population parameter that has been defined in the [POPULATION] section can be an output. Outputs from the [POPULATION] section are inputs for the [LONGITUDINAL], [COVARIATE] or [INDIVIDUAL] sections. Output to input matching is made by matching the names of the random variables defined in the [POPULATION] section with the parameters appearing in the inputs = { } list of other sections.


The definition of a probability distribution for a population parameter is done with the EQUATION: and DEFINITION: blocks. The EQUATION: block contains mathematical equations (to do transformations for instance) and the DEFINITION: block is used to definite probability distributions. The following syntax applies to define a probability distribution for the random variable X:

X = {distribution= distributionType, parameter1 = Val1, parameter2 = Val2}

The arguments to the probability distribution definition are

  • distributionType: is one of the following reserved keywords: normal, lognormal, logitnormal or probitnormal
  • parameter1: is one of the following reserved keywords: mean or typical
  • parameter2: is one of the following reserved keywords: sd or var
  • Val1: is a double number or a parameter
  • Val2: is a double number or a parameter

The reserved keywords meanings are

  • normal: normal distribution: h(X)=X
  • lognormal: log-normal distribution: h(X)=\log(X)
  • logitnormal: logit-normal distribution:  h(X)=\frac{1}{1+e^{-X}}
  • probitnormal: probit-normal distribution: h(X)=\Psi^{-1}(X), where \Psi is the cumulative distribution function of the  {\cal N}(0, 1) distribution.
  • mean: is the mean of the associated normal distribution
  • typical: is the transformed mean
  • sd: is the standard deviation of the associated normal distribution. If no variability is required, the user can set sd=”no-variability”.
  • var: is the variance of the associated normal distribution

These probability distribution are all Gaussian probability distributions that are defined through the existence of a monotonic transformation h such that h(X) is normally distributed. Notice that the mean, standard deviation, and variance arguments refer to the normal distributed variable. In pharmacometrics it is more common to use the typical value of the distribution. This is achieved by using the keyword typical instead of mean in the definition of the random variable. The relationship between the mean value and the typical value is the following:

\phantom{abc} X_{pop} = \{ \textrm{distribution}=\textrm{lognormal}, \textrm{typical}=\text{Xmean}, \textrm{sd}=\sigma\} \\ \Leftrightarrow X = \{ \textrm{distribution}=\textrm{lognormal}, \textrm{mean}=\text{lXmean}, \textrm{sd}=\sigma\} \\ \Leftrightarrow \log(X) \sim {\cal N}(\text{lXmean},\sigma^2)

where \text{lXmean}=\log(\text{Xmean}) . Thus, typical is in the variable referential, while mean is in the transformed referential.

Example: model taking into account population parameter uncertainty

The following model takes into account uncertainty on all population parameters. Each population parameter is defined in [POPULATION] as a log-normal distribution, except the parameters of the error model which are defined with normal distributions.

To simulate this model with Simulx, values for all the inputs of the [POPULATION] section need to be provided. An example of simulation with a similar model is available here.

input = {ka, V, Cl, a}

; PK model definition
Cc = pkmodel(ka, V, Cl)

Concentration = {distribution=normal, prediction=Cc, errorModel=constant(a)}

input = {ka_pop, V_pop, Cl_pop, omega_ka, omega_V, omega_Cl}

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}

input = {mean_V, sd_V, mean_ka, sd_ka, mean_Cl, sd_Cl, mean_omega_V, sd_omega_V, 
mean_omega_ka, sd_omega_ka, mean_omega_Cl, sd_omega_Cl, mean_a, sd_a}

mean_log_V = log(mean_V)
mean_log_ka = log(mean_ka)
mean_log_Cl = log(mean_Cl)
mean_log_omega_V = log(mean_omega_V)
mean_log_omega_ka = log(mean_omega_ka)
mean_log_omega_Cl = log(mean_omega_Cl)
sd_log_V = sqrt(log(1+(sd_V/mean_V)^2))
sd_log_ka = sqrt(log(1+(sd_ka/mean_ka)^2))
sd_log_Cl = sqrt(log(1+(sd_Cl/mean_Cl)^2))
sd_log_omega_V = sqrt(log(1+(sd_omega_V/mean_omega_V)^2))
sd_log_omega_ka = sqrt(log(1+(sd_omega_ka/mean_omega_ka)^2))
sd_log_omega_Cl = sqrt(log(1+(sd_omega_Cl/mean_omega_Cl)^2))

V_pop = {distribution = lognormal, mean = mean_log_V, sd = sd_log_V}
ka_pop = {distribution = lognormal, mean = mean_log_ka, sd = sd_log_ka}
Cl_pop = {distribution = lognormal, mean = mean_log_Cl, sd = lsd_log_Cl}
omega_V = {distribution = lognormal, mean = mean_log_omega_V, sd = sd_log_omega_V}
omega_ka = {distribution = lognormal, mean = mean_log_omega_ka, sd = sd_log_omega_ka}
omega_Cl = {distribution = lognormal, mean = mean_log_omega_Cl, sd = sd_log_omega_Cl}
a = {distribution = normal, mean = mean_a, sd = sd_a}


The distribution for each parameter is defined with the mean and standard deviation of the associated normal variable. For example, \(V_{pop}\) depends on two variables called here mean_log_V and sd_log_V, which are the mean and the standard deviation of the log-transformation of V:

\(\log(V_{pop}) \sim \mathcal{N}(\text{mean_log_V},\text{sd_log_V}^2)\)

mean_log_V and sd_log_V can be replaced in the inputs by the mean and standard deviation of \(V_{pop}\), called here mean_V and sd_V. Values for mean_V and sd_V can come for example from the estimated value and estimated standard error found for \(V_{pop}\) by Monolix. The following transformations are then defined in the block EQUATION:

\(\text{mean_log_V} = \log(\text{mean_V}) \\ \text{sd_log_V} = \sqrt{\log(1+(\frac{\text{sd_V}}{\text{mean_V}})^2)} \)

Alternatively, the transformation of mean_V into mean_log_V could be skipped and the distribution of \(V_{pop}\) in the block DEFINITION: could be written with typical instead of mean:

V_pop = {distribution = lognormal, typical = mean_V, sd = sd_log_V}