← Tous les chapitres Parcours et exercices

Chapitre 04

Monolix — le modèle d'erreur résiduelle et la censure

Racym Berrah, PharmD PMx Explain Relecture scientifique par l'auteur : ORCID

Le bloc DEFINITION : errorModel constant, proportional, combined1 et combined2, le rôle de distribution, la censure BLQ native et la lecture des IWRES.

1 activités guidées

01 · Pourquoi ce chapitre

Le modèle d'erreur résiduelle tient en un mot-clé au bout d'une ligne de DEFINITION:. On le choisit souvent en dernier, par habitude, en se disant que ce n'est « que du bruit ».

C'est une erreur de lecture. Chaque observation entre dans la vraisemblance divisée par son écart-type résiduel. Ce mot-clé ne décrit donc pas du bruit : il distribue les poids de l'estimation. Il décide quels points le SAEM doit absolument respecter et lesquels il a le droit de rater. Changer constant en proportional, c'est changer la question à laquelle le SAEM répond — et il y répondra parfaitement, en silence, sans jamais vous prévenir qu'il optimise autre chose que ce que vous vouliez.

Monolix ajoute deux choses que NONMEM ne propose pas sous cette forme : un deuxième modèle combiné (combined1 et combined2 ne sont pas deux écritures du même modèle), et une gestion native de la censure — le BLQ se déclare dans le jeu de données, pas dans le code.

02 · Intuition

Le modèle d'erreur répond à une seule question : à quelle distance de sa prédiction une observation devient-elle surprenante ?

Un dosage réel a deux régimes de bruit, et ils n'ont rien à voir l'un avec l'autre :

  • un plancher, en mg/L, indifférent à la concentration — bruit de fond, ligne de base, tout ce qui subsiste quand il n'y a presque plus rien à mesurer. C'est constant(a) ;
  • un pourcentage, qui grandit avec la concentration — dilutions, pipetage, calibration. C'est proportional(b).

Un jeu de données de PK couvre couramment deux ou trois ordres de grandeur, du pic au dernier creux. Il traverse donc les deux régimes. Aucun modèle à un seul terme n'est juste sur toute la gamme : c'est très exactement pourquoi les modèles combinés existent, et pourquoi ils sont un candidat fréquent.

03 · La formule décortiquée

Monolix écrit toutes ses observations sous une seule forme :

h(yij)=h(fij)+g(fij)⋅εij,εij∼N(0,1)h(y_{ij}) = h(f_{ij}) + g(f_{ij}) \cdot \varepsilon_{ij}, \qquad \varepsilon_{ij} \sim \mathcal{N}(0,1)

Une ligne de DEFINITION: ne fait que remplir les deux trous de cette formule :

  • distribution= choisit hh, la transformation de l'observation ;
  • errorModel= choisit gg, la fonction d'écart-type.

Ce sont deux réglages indépendants, et la moitié des malentendus vient de les confondre.

Les quatre errorModel.

errorModel g(f)g(f) ce que ça dit
constant(a) aa plancher seul, en mg/L
proportional(b) b⋅fb \cdot f pourcentage seul
combined1(a, b) a+b⋅fa + b \cdot f somme des écarts-types
combined2(a, b) a2+(b⋅f)2\sqrt{a^2 + (b \cdot f)^2}
c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120
c340,-704.7,510.7,-1060.3,512,-1067
l0 -0
c4.7,-7.3,11,-11,19,-11
H40000v40H1012.3
s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232
c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1
s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26
c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z
M1001 80h400000v40h-400000z"/>​ somme des variances
DEFINITION:
y1 = {distribution=normal, prediction=Cc, errorModel=constant(a)}
y1 = {distribution=normal, prediction=Cc, errorModel=proportional(b)}
y1 = {distribution=normal, prediction=Cc, errorModel=combined1(a, b)}
y1 = {distribution=normal, prediction=Cc, errorModel=combined2(a, b)}

combined1 contre combined2. Ce n'est pas une question de goût. combined2 est le modèle que l'on obtient en supposant deux sources de bruit indépendantes — un plancher d'écart-type aa et un terme proportionnel d'écart-type bfb f. Indépendance, donc les variances s'additionnent : g2=a2+(bf)2g^2 = a^2 + (bf)^2. C'est la forme qui a une justification statistique. combined1 additionne les écarts-types : aucune paire de sources indépendantes ne produit cela, c'est une paramétrisation linéaire commode de l'écart-type, rien de plus.

Leur écart se calcule exactement. En posant r=bf/ar = bf/a le rapport des deux régimes :

gcombined1gcombined2=1+r1+r2\frac{g_{\text{combined1}}}{g_{\text{combined2}}} = \frac{1+r}{\sqrt{1+r^2}}

Ce rapport vaut 1 aux deux extrémités (r→0r \to 0 : les deux valent aa ; r→∞r \to \infty : les deux valent bfbf) et il est maximal en r=1r = 1, c'est-à-dire exactement à la concentration f=a/bf = a/b où les deux régimes s'équilibrent. Il y vaut 2\sqrt{2}. Donc : combined1 n'est jamais plus étroit que combined2, et il est au plus 41 % plus large, dans une bande étroite de concentrations au milieu de la gamme.

Deux conséquences pratiques, opposées :

  1. Les deux modèles ajustent presque pareil. Leur différence est confinée au milieu de la gamme. Les départager sur un Δ\DeltaOFV de 2 points, c'est départager du bruit.
  2. Leurs paramètres ne sont pas interchangeables. Un aa et un bb estimés sous combined1 ne décrivent pas la même erreur une fois recopiés dans combined2.

distribution : normal contre logNormal.

  • normal : hh = identité, donc y=f+gεy = f + g\varepsilon. Le support est R\mathbb{R} tout entier : le modèle accorde une probabilité non nulle à des concentrations négatives. Anodin tant que f≫gf \gg g, absurde dès que ff approche la LOQ — et cela se voit, la bande basse de la VPC passe sous zéro.
  • logNormal : h=log⁡h = \log, donc log⁡(y)=log⁡(f)+gε\log(y) = \log(f) + g\varepsilon, soit y=f⋅egεy = f \cdot e^{g\varepsilon}. Support strictement positif, distribution asymétrique à droite.

Avec logNormal et constant(a), on retrouve exactement le modèle d'erreur exponentiel : y=f⋅eaεy = f \cdot e^{a\varepsilon}. Comme eaε≈1+aεe^{a\varepsilon} \approx 1 + a\varepsilon pour aa petit, l'écart-type sur l'échelle naturelle vaut environ a⋅fa \cdot f : le modèle se comporte comme un proportionnel, mais sans jamais rendre de valeur négative.

Corollaire : sous logNormal, constant(a) produit déjà une erreur proportionnelle à la prédiction. Empiler un proportional(b) par-dessus compte deux fois le même effet. La combinaison est légale syntaxiquement ; elle est rarement ce que vous vouliez dire.

La censure (BLQ). Une observation « < LOQ » n'est ni une valeur manquante, ni un nombre : c'est une inégalité. Elle affirme que la vraie concentration est quelque part dans (0,LOQ)(0, LOQ) — et c'est une information réelle, souvent la seule dont vous disposiez sur la phase terminale.

Monolix la prend au mot, et le fait dans le jeu de données, pas dans le modèle. Vous déclarez une colonne de type censored (usuellement cens) : cens = 1 marque un point censuré à gauche, et la colonne d'observation porte alors la LOQ elle-même, pas une valeur imputée. Une colonne limit facultative fournit l'autre borne de l'intervalle.

Ce qui change dans la vraisemblance tient en un mot. Une observation ordinaire contribue par une densité :

1gij φ ⁣(yij−fijgij)\frac{1}{g_{ij}}\,\varphi\!\left(\frac{y_{ij} - f_{ij}}{g_{ij}}\right)

une observation censurée contribue par une probabilité :

P(yij<LOQ)=Φ ⁣(LOQ−fijgij)P(y_{ij} < LOQ) = \Phi\!\left(\frac{LOQ - f_{ij}}{g_{ij}}\right)

C'est la méthode M3 de Beal, et c'est tout : vous cochez un type de colonne, Monolix écrit la vraisemblance. Là où NONMEM demande un F_FLAG, un PHI à la main et un LAPLACIAN, la censure est ici un attribut de la donnée. Ce n'est pas un détail de confort : le coût d'entrée de M3 étant nul, il n'y a plus aucune excuse pour un LOQ/2.

Notez que gg apparaît aussi dans la contribution censurée. Le modèle d'erreur et la censure ne sont pas deux choix indépendants : c'est le terme additif aa qui gouverne la vitesse à laquelle Φ((LOQ−f)/g)\Phi((LOQ-f)/g) sature quand ff passe sous la LOQ.

04 · Exemple concret

Un médicament oral, profils riches sur 24 h, concentrations de 4 mg/L au pic jusqu'à la LOQ à 0,05 mg/L — près de deux ordres de grandeur. Le SAEM tourne en combined2 et rend a=0,02a = 0{,}02 mg/L et b=0,12b = 0{,}12.

Les deux régimes, en chiffres. Le basculement se situe en f=a/b=0,167f = a/b = 0{,}167 mg/L :

prédiction ff gg sous combined2 gg sous combined1 écart
0,05 (la LOQ) 0,021 0,026 +24 %
0,167 (=a/b=a/b) 0,028 0,040 +41 %
1,0 0,122 0,140 +15 %
4,0 (le pic) 0,480 0,500 +4 %

On lit directement le résultat de la section précédente : l'écart culmine à 2\sqrt{2} au point de bascule et s'efface aux deux bouts.

Pourquoi le plancher existe. Prenons un creux tardif : observation y=0,09y = 0{,}09 mg/L, prédiction individuelle f=0,06f = 0{,}06 mg/L. L'écart est de 0,03 mg/L — 30 ng/mL, soit à peu près le bruit du dosage à ce niveau. Un point sans histoire.

  • Sous combined2(0,02 ; 0,12) : g=0,022+0,00722=0,0213g = \sqrt{0{,}02^2 + 0{,}0072^2} = 0{,}0213, donc IWRES=0,03/0,0213=1,41\text{IWRES} = 0{,}03/0{,}0213 = 1{,}41. Rien à signaler, et c'est correct.
  • Sous proportional(0,12) seul : g=0,12×0,06=0,0072g = 0{,}12 \times 0{,}06 = 0{,}0072 mg/L, soit 7,2 ng/mL. Le modèle vient d'affirmer qu'il résout cette concentration à 7 ng/mL près — sept fois mieux que la LOQ du dosage. IWRES=0,03/0,0072=4,17\text{IWRES} = 0{,}03/0{,}0072 = 4{,}17. Un aberrant à 4 sigma, entièrement fabriqué par le modèle d'erreur.

Ce n'est pas cosmétique. À elle seule, cette observation pèse environ 13 unités de −2LL-2LL de plus sous proportional que sous combined2. Le SAEM fait ce qu'on lui demande : il déformera ClCl et VV sur toute la population pour aller chercher ce creux. Le terme additif n'est pas un paramètre de nuisance — c'est l'affirmation que le dosage a un plancher de bruit, et c'est lui qui empêche la vraisemblance de prendre au sérieux des prédictions proches de zéro.

Comment on le voit. L'IWRES est le résidu divisé par l'écart-type que le modèle d'erreur revendique :

IWRESij=yij−fi(tij)g(fi(tij))\text{IWRES}_{ij} = \frac{y_{ij} - f_i(t_{ij})}{g(f_i(t_{ij}))}

Cette division est tout l'intérêt du diagnostic : si gg est juste, les IWRES forment un nuage normal centré sur 0, d'écart-type 1, et de même largeur partout. D'où le graphique qui juge le modèle d'erreur — les IWRES contre les prédictions, pas contre le temps — et la règle de lecture : on lit la largeur, pas le centre.

  • Nuage qui s'ouvre vers la droite (étroit en bas, large en haut) : gg est trop petit aux fortes concentrations. Vous êtes en constant, il manque le pourcentage.
  • Nuage qui se resserre vers la droite (large en bas, étroit en haut) : gg est trop petit aux faibles concentrations. Vous êtes en proportional, il manque le plancher — c'est le creux à 4 sigma ci-dessus, répété sur tous les sujets.
  • Nuage courbé, ou décentré de 0 : cela ne parle plus du modèle d'erreur. Un U contre le temps accuse le modèle structural. Aucun modèle d'erreur ne répare une faute de forme : il ne fait qu'élargir la bande jusqu'à ce que le défaut cesse d'être signalé.

05 · Piège fréquent

L'erreur évidente — laisser constant sur un jeu qui couvre deux ordres de grandeur — est bruyante : le nuage des IWRES s'ouvre en trompette, et vous le voyez en trois secondes. Bruyante, donc bon marché.

Deux réflexes en découlent.

Lisez SD(IWRES)\mathrm{SD}(\text{IWRES}) avant la forme du nuage. C'est une ligne sur les résidus exportés par Monolix. Loin de 1, le graphique n'a plus de puissance de détection, et la platitude du nuage ne prouve rien sur gg. La séquence est : d'abord le chiffre, ensuite seulement la forme.

Puis changez de diagnostic. L'ε\varepsilon-shrinkage frappe tout ce qui conditionne aux paramètres individuels. Passez aux diagnostics par simulation — VPC, NPDE : ils sont construits en simulant depuis le modèle de population, donc ils voient le modèle d'erreur que vous avez réellement déclaré, et non celui qui survit une fois chaque sujet ajusté à ses propres points.

06 · À retenir

  • Le modèle d'erreur ne décrit pas du bruit : g(f)g(f) est le poids de chaque point dans la vraisemblance. Il arbitre quelle partie du profil le SAEM a le droit de rater.
  • Une ligne de DEFINITION: remplit deux trous indépendants de h(y)=h(f)+gεh(y) = h(f) + g\varepsilon : distribution= choisit hh, errorModel= choisit gg.
  • Les quatre gg : constant(a) =a= a ; proportional(b) =bf= bf ; combined1(a,b) =a+bf= a+bf ; combined2(a,b) =a2+(bf)2= \sqrt{a^2+(bf)^2}.
  • combined2 additionne les variances (deux sources indépendantes) et c'est l'équivalent du Y = F + F*EPS(1) + EPS(2) de NONMEM ; combined1 additionne les écarts-types. combined1 n'est jamais plus étroit, au plus 2\sqrt{2} fois plus large, exactement en f=a/bf = a/b. Les (a,b)(a, b) ne se transposent pas de l'un à l'autre.
  • logNormal + constant(a) = erreur exponentielle y=feaεy = f e^{a\varepsilon} : support positif, et a sur l'échelle log — un CV, pas des mg/L.
  • BLQ : colonne de type censored, la LOQ dans la colonne d'observation. Le point contribue par Φ((LOQ−f)/g)\Phi((LOQ-f)/g) — le M3 de Beal, natif, sans code, et donc plus aucune raison d'imputer LOQ/2.
  • Jugez gg sur les IWRES contre prédictions, en lisant la largeur : nuage qui s'ouvre = pourcentage manquant ; qui se resserre = plancher manquant ; courbé = structural, pas résiduel.
  • SD(IWRES)\mathrm{SD}(\text{IWRES}) avant la forme. ε-shrinkage=1−SD(IWRES)\varepsilon\text{-shrinkage} = 1 - \mathrm{SD}(\text{IWRES}) : quand il est élevé, un beau nuage d'IWRES ne prouve rien — passez à la VPC et aux NPDE.

Point de contrôle

Vérifiez votre compréhension

Q1. Vous passez un modèle de `combined1(a, b)` à `combined2(a, b)` en gardant les mêmes valeurs de a et de b. L'écart-type résiduel change le plus...

Q2. Dans `DEFINITION:`, vous écrivez `{distribution=logNormal, prediction=Cc, errorModel=constant(a)}` et le SAEM rend a = 0,15. Cela signifie que...

Q3. Une ligne du jeu de données porte cens = 1 dans une colonne déclarée de type censored, et la LOQ dans la colonne d'observation. Monolix fait entrer ce point dans la vraisemblance...

Q4. Sur le graphique des IWRES contre les prédictions, le nuage est large aux faibles prédictions et se resserre nettement aux fortes. Le plus probable est que...

Exercices d'entraînement

Activités guidées

Cas en plusieurs étapes combinant calcul, interprétation et raisonnement.

Activité guidée · 10 min · Niveau 2

Monolix : coder 20 % d’erreur

Calcul · Interprétation · Lecture de codeÀ commencer

Citer cette page

Berrah R. Monolix — le modèle d'erreur résiduelle et la censure. PMx Explain, 2026. https://rberrah.github.io/pharmacometrie/chapitres/monolix-erreur-residuelle/

@misc{berrah2026monolixerreurresiduelle,
  author       = {Berrah, Racym},
  title        = {{Monolix — le modèle d'erreur résiduelle et la censure}},
  howpublished = {PMx Explain},
  year         = {2026},
  url          = {https://rberrah.github.io/pharmacometrie/chapitres/monolix-erreur-residuelle/},
  note         = {Texte actuel sous licence CC BY-NC-SA 4.0}
}
Contenu pédagogique uniquement. Pas de conseil médical. Pas d'ajustement posologique patient-spécifique.