Chapitre 06
Monolix — pour aller plus loin
Racym Berrah, PharmD PMx Explain Relecture scientifique par l'auteur : ORCID
Distributions bornées logit et probit, auto-initialisation, tests automatiques de covariables, MonolixSuite et export NONMEM.
1 activités guidées01 · Pourquoi ce chapitre
Les chapitres précédents vous laissent avec un modèle qui tourne : une structure dans [LONGITUDINAL], des paramètres log-normaux, un SAEM qui converge. C'est le début d'une analyse, pas son terme.
Trois murs arrivent vite. Une biodisponibilité : déclarée log-normale, elle dépassera 1, et Monolix simulera sans broncher des individus qui absorbent 150 % de leur dose. Une liste de covariables à trier, sans lancer trente projets à la main. Et, le jour où le dossier part à l'agence, un control stream NONMEM.
Monolix répond aux trois. À chaque fois, la réponse est plus subtile que le bouton qui la déclenche.
02 · Intuition
Dans le bloc [INDIVIDUAL], le mot-clé distribution= n'est pas une étiquette de présentation : c'est le choix d'une fonction de lien.
Monolix impose une seule chose, la même que NONMEM : l'effet aléatoire est tiré d'une normale centrée. Or une normale vit sur toute la droite réelle, de à . Une clairance, elle, est positive ; une biodisponibilité vit entre 0 et 1 ; une fraction de répondeurs aussi. Il faut donc une fonction qui envoie la droite réelle exactement sur le domaine du paramètre — ni plus large, ni plus étroit.
C'est tout ce que fait distribution=. logNormal choisit l'exponentielle et couvre . logitNormal choisit la logistique et couvre . probitNormal couvre le même intervalle par un autre chemin, la fonction de répartition normale. Le domaine du paramètre commande ; l'habitude, non.
Cette idée a une conséquence que tout le reste du chapitre ne fera que décliner : ce que Monolix vous rapporte sur un paramètre — son , ses coefficients de covariables, sa traduction en NONMEM — vit sur l'échelle de la fonction de lien, jamais sur celle du paramètre.
03 · La formule décortiquée
Un seul modèle gouverne tout le bloc [INDIVIDUAL] :
Le paramètre individuel , une fois passé dans , s'écrit comme une valeur typique plus des effets de covariables plus un effet aléatoire normal. Changer de distribution, c'est changer — rien d'autre :
normal: , domaine ;logNormal: , domaine ;logitNormal: , domaine ;probitNormal: , domaine .
Pour la logit, on revient dans l'intervalle par la réciproque :
Quelle que soit la valeur tirée pour — , — le paramètre reste dans ses bornes. C'est une garantie structurelle, pas une contrainte numérique qu'un optimiseur pourrait violer.
[INDIVIDUAL]
input = {F_pop, omega_F, Cl_pop, omega_Cl, V_pop, omega_V}
DEFINITION:
F = {distribution=logitNormal, typical=F_pop, sd=omega_F} ; borne dans ]0,1[
Cl = {distribution=logNormal, typical=Cl_pop, sd=omega_Cl} ; positif, sans plafond
V = {distribution=logNormal, typical=V_pop, sd=omega_V}
Attention à la lecture : typical=F_pop se déclare et se rapporte sur l'échelle naturelle (Monolix affiche 0,70), tandis que sd=omega_F porte sur l'échelle logit. Les deux nombres de la même ligne ne vivent pas au même endroit.
La logit ne se limite pas à ]0,1[. Avec des bornes explicites, elle s'étend à n'importe quel intervalle — un qui ne peut pas dépasser 100 % d'inhibition, un coefficient de Hill entre 1 et 5 :
Emax = {distribution=logitNormal, min=0, max=100, typical=Emax_pop, sd=omega_E}
La transformation devient alors , qui redonne bien la logit usuelle pour et .
Les covariables passent par la même porte. Elles s'ajoutent sur l'échelle de , pas sur celle du paramètre :
[COVARIATE]
input = {WT}
EQUATION:
lWT = log(WT/70) ; centrage sur 70 kg
[INDIVIDUAL]
input = {Cl_pop, omega_Cl, beta_Cl_lWT, lWT}
DEFINITION:
Cl = {distribution=logNormal, typical=Cl_pop,
covariate=lWT, coefficient=beta_Cl_lWT, sd=omega_Cl}
Ici : est l'exposant allométrique, et l'écrire ainsi le rend directement testable. Mais si la même mécanique s'applique à une logitNormal, alors agit sur — ce n'est pas un effet sur , et il ne s'interprète pas en pourcentage de .
Les tests automatiques. Monolix rapporte, sans run supplémentaire, deux familles de tests. Sur les covariables déjà dans le modèle, un test de Wald sur chaque (). Sur les covariables absentes du modèle, des tests de corrélation entre les effets aléatoires et chaque covariable candidate : corrélation de Pearson pour une covariable continue, analyse de variance pour une catégorielle. Un p petit signale un qui garde une structure que le modèle n'explique pas — donc une covariable qui vaut le coup d'être essayée. La procédure automatique (COSSAC) enchaîne ces tests pour construire le modèle de covariables pas à pas.
04 · Exemple concret
Une biodisponibilité orale, valeur typique 0,70, à décrire chez 40 sujets.
En log-normale, avec . La distribution est . Pour que dépasse 1, il faut , soit . La table normale donne :
Près d'un sujet simulé sur cinq absorbe plus que sa dose. Le 95ᵉ percentile vaut : 153 % de la dose. Le modèle tourne, le SAEM converge, la VPC peut même être acceptable sur la plage observée — et la simulation reste une absurdité physique.
En logit-normale, avec . La valeur typique devient . L'intervalle à 90 % des individus se calcule sur l'échelle logit puis se rabat :
Bornes respectées par construction, pour toute valeur de .
Et en probit, avec ? La valeur typique devient , et le même calcul donne .
Regardez ces deux dernières lignes. en logit et en probit décrivent la même population, à un centième près. Deux nombres qui n'ont rien à voir, une seule biologie. Le rapport est ici voisin de 1,7 — sa valeur exacte dépend du critère qu'on se donne pour dire que deux dispersions se ressemblent, la logistique ayant des queues plus lourdes que la normale. En pratique, logit et probit s'ajustent presque toujours aussi bien l'une que l'autre ; le probit se justifie surtout quand le paramètre est déjà une probabilité issue d'un mécanisme normal latent (un modèle à seuil). Le choix entre les deux compte donc beaucoup moins que le fait d'avoir compris ce que mesure.
Le reste de la suite. Le modèle une fois estimé, la MonolixSuite le réutilise sans le réécrire, parce que tous ses outils lisent le même fichier mlxtran : Datxplore explore le jeu de données avant toute modélisation ; Mlxplore explore le modèle sans données, à coups de curseurs sur les paramètres ; Simulx simule à partir du modèle estimé — nouveaux schémas posologiques, nouvelle population, essai clinique virtuel ; PKanalix couvre la NCA.
Et Mlxplore mérite mieux que sa réputation d'outil pédagogique : c'est souvent le meilleur initialiseur disponible. Bouger un de 0,3 à 3 en regardant la courbe se déformer vous apprend le modèle ; l'auto-initialisation, elle, vous rend un nombre.
05 · Piège fréquent
Monolix affiche les dans une seule colonne, quelle que soit la distribution. C'est là que ça casse.
Le même piège frappe à l'export, sous un autre visage. NONMEM n'a pas de mot-clé logitNormal : la traduction doit écrire la transformation à la main dans $PK.
$PK
LGT = THETA(1) + ETA(1) ; echelle logit
F1 = 1/(1 + EXP(-LGT)) ; retour dans ]0,1[
Deux mises en garde pour finir, dans le même esprit.
L'auto-initialisation ne diagnostique rien. Elle propose un point de départ pour les paramètres de structure ; elle ne sait pas que votre modèle est faux, ni que vos concentrations sont en ng/mL alors que vos doses sont en mg. Elle trouvera consciencieusement les valeurs qui ajustent le mieux un jeu de données faux. Son intérêt réel est ailleurs : quand elle renvoie un de 3 000 L pour un médicament IV, ce n'est pas un mauvais point de départ, c'est un symptôme — lisez-le comme tel. À l'inverse, le SAEM de Monolix est nettement plus robuste aux valeurs initiales que FOCE, grâce au recuit simulé de la phase de chauffe qui maintient les variances larges au début et laisse la chaîne explorer. C'est précisément pourquoi l'auto-init est un confort, pas un sauvetage.
Les tests de covariables sont un crible, pas une décision. Un p à 0,03 sur une corrélation –covariable dit qu'il y a du signal, pas qu'il faut garder la covariable. Enchaîner les inclusions automatiques sur trente candidates fait remonter des effets qui doivent tout au hasard, et surestime systématiquement l'amplitude de ceux qu'on retient — c'est le biais de sélection décrit par Ribbing et Jonsson : le seuil qui laisse passer un effet retient de préférence les jeux de données où il paraît, par chance, plus fort qu'il n'est. Un effet doit survivre à trois questions : est-il plausible cliniquement, tient-il en backward elimination, et change-t-il quelque chose à la dose qu'on recommandera ?
06 · À retenir
distribution=choisit une fonction de lien qui envoie sur le domaine du paramètre. Le modèle est toujours ; seule change.logitNormaletprobitNormalbornent un paramètre dans ]0,1[ — ou dans ]min,max[ avec des bornes explicites — par construction, pour toute valeur de . Une biodisponibilité log-normale, elle, dépasse 1 sans que rien ne le signale.- et vivent sur l'échelle de , pas sur celle du paramètre. « CV » ne vaut que pour la log-normale à faible variabilité : pour une distribution bornée, rapportez un intervalle de prédiction.
- L'auto-initialisation donne un point de départ, pas un diagnostic ; le recuit simulé du SAEM rend de toute façon Monolix peu sensible aux valeurs initiales. Une proposition absurde est un symptôme du modèle ou des unités.
- Les tests automatiques (Wald sur les , corrélations –covariables) trient les candidates sans run supplémentaire, en échantillonnant la distribution conditionnelle pour échapper au rétrécissement. Ils cribleront, ils ne décideront pas : le biais de sélection est réel.
- La MonolixSuite partage un seul fichier mlxtran — Datxplore (données), Mlxplore (modèle), Monolix (estimation), Simulx (simulation), PKanalix (NCA) : le modèle simulé est celui qui a été estimé.
- L'export NONMEM est un brouillon de control stream, pas un clone : algorithme et conventions potentiellement différents, OFV à ne comparer qu'après harmonisation, paramètres bornés réécrits en transformations explicites. On le relance et on le rediagnostique.
Point de contrôle
Vérifiez votre compréhension
Q1. Pour un paramètre déclaré logitNormal, le omega estimé par Monolix représente...
Q2. L'export d'un projet Monolix vers NONMEM produit...
Q3. L'auto-initialisation des paramètres dans Monolix...
Exercices d'entraînement
Cas en plusieurs étapes combinant calcul, interprétation et raisonnement.
Monolix : un bootstrap par patient
Calcul · InterprétationÀ commencer
Monolix : un bootstrap par patient
Calcul · InterprétationÀ commencerCiter cette page
Berrah R. Monolix — pour aller plus loin. PMx Explain, 2026. https://rberrah.github.io/pharmacometrie/chapitres/monolix-avance/
@misc{berrah2026monolixavance,
author = {Berrah, Racym},
title = {{Monolix — pour aller plus loin}},
howpublished = {PMx Explain},
year = {2026},
url = {https://rberrah.github.io/pharmacometrie/chapitres/monolix-avance/},
note = {Texte actuel sous licence CC BY-NC-SA 4.0}
}