Évaluation (qualification) d’un modèle
VALIDATION EXTERNE
L’objectif est de vérifier si un modèle identifié à partir d’une base de données est utilisable pour une nouvelle base de données. Cela revient à vérifier si le modèle prédit adéquatement les concentrations des patients de cette nouvelle base de données.
Nous pouvons imaginer plusieurs scénarios:
- un modèle identifié dans une publication que nous voulons utiliser pour une nouvelle étude réalisée sur un population identique (véritable validation externe),
- un modèle identifié sur des sujets sains que nous voulons utiliser chez des patients (les populations sont différentes),
- un modèle identifié sur une population et que nous voulons utiliser pour des patients présentant des caractéristiques différentes.
Plusieurs calculs sont possibles pour mesurer le biais et la précision. Il faut suivre les étapes suivantes:
- Utiliser le modèle avec ses paramètres estimées (theta, omega, sigma) pour prédire des concentrations correspondantes au design de la nouvelle étude. Le control stream doit avoir dans les blocs $THETA, $OMEGA et $SIGMA les valeurs finales estimées. Il doit pointer vers la nouvelle base de donnéees ($DATA). Le bloc $ESTIMATION doit contenir l’option MAXEVAL=0. De cette manière, le run va créer une $TABLE contenant pour chaque DV (observation), la prédiction (CPRED) correspondante.
- Calculer la différence (PREDICTION ERROR) entre les concentrations observées et prédictes:
PEj = CPREDj – DVj
CPREDj est la jth valeur prédite et DVj la jth valeur observée de N observations - Obtenir la moyenne des erreurs de prédiction (MEAN PREDICTION ERROR)
mesure du BIAIS
MPE = 1/N Σ (PEj)
Si MPE > 0 : tendance du modèle à sur-prédire les concentrations
Si MPE < 0 : tendance du modèle à sous-prédire les concentrations - Estimer la PRECISION du modèle. Il faut supprimer le signe de PE.
Soit en prenant la valeur absolue
APEj = |PEj|
et en calculant la moyenne MAPE
MAPE = 1/N Σ (APEj)Soit en prenant le carré
PEj2
et en calculant la moyenne MSE (mean square error) et RMSE
MSE = 1/N Σ (PEj2)
RMSE = racine(MSE)
Il est possible de calculer un pourcentage mais dans ce cas, il faut préciser s’il est exprimé relativement aux observations (PEj/DVj) ou aux prédictions (PEj/CPREDj) car les deux cas se retrouvent dans la littérature (Owen J.S. and Fiedler-Kelly J. Introduction to Population PK/PD. 2014; 212-31).
Il n’y a pas de valeur de cut-off indiscutable, à titre d’exemple, on peut proposer :
< + ou – 10% pour MPE
< 25% pour MAPE
La valeur qui a été pré-définie dans le plan d’analyse des données est celle qui sera utilisée…
VALIDATION INTERNE
Plusieurs techniques sont disponibles dont aucune ne saurait prétendre à répondre à toutes les exigences d’une validation.
– bootstrap
– visual predictive check (vpc)
– normalized predictive distribution error (npde)
– data spliting
– goodness of fit plots
bootstrap
Comment faire un bootstrap:
Le plus simple est de disposer d’un script permettant de lancer des runs en boucle (ex. 1000). Ce type de script est gratuitement téléchargeable sur le site de wings (http://wfn.sourceforge.net/).
Principe du bootstrap:
Le script va réaliser 4 choses différentes:
1- si la base de données contient n patients, il va créer X base de données contenant chacune n patients. Pour obtenir ces bases de données, le script procède par tirage au sort dans une urne virtuelle contenant les n patients. Il va donc prendre aléatoirement n patients mais avec remise, c’est-à-dire que le tirage permet de retrouver plusieurs fois le même patient dans la base de données.
ex: avec une base de données A de 10 patients numérotés de 1 à 10, le script va par exemple créer entre autres les 2 bases de données suivantes:
B(1,3,3,4,5,8,8,8,9,9), C(2,2,2,3,4,4,5,5,8,10)
2- analyser chacune de ces bases de données avec le modèle final (temps d’analyse peut être assez long)
3- récupérer les estimations de chaque paramètre pour chacune des 1000 analyses,
4- créer un tableau résumant l’information obtenue, qu’il faut confronter aux résultats.
Si les paramètres sont prédits avec précision, leur valeur est contenue dans l’intervalle choisi (95 de 0.025 à 0.975) et ne comprend pas la valeur 0.
Exemple:
Résultats
CL 12.1
Vc 38.7
D1 0.539
eta_CL 0.360
eta_VC 0.361
err_P 0.328
Booststrap
Quantiles 0.01 0.025 0.25 0.5 0.75 0.975 0.99
CL 10.2 10.5 11.4 11.9 12.4 13.6 13.9
Vc 31.7 32.4 35.9 37.8 39.8 45.1 46.5
D1 0.01 0.01 0.507 0.536 0.565 0.623 0.646
eta_CL 0.247 0.275 0.324 0.351 0.382 0.436 0.443
eta_VC 0.168 0.195 0.300 0.349 0.397 0.512 0.532
err_P 0.245 0.259 0.301 0.327 0.348 0.403 0.418
– visual predictive check (vpc)
Comment les obtenir:
Très simplement, en utilisant votre base de données le control stream final auquel vous aurez fait les modifications suivantes:
– remplacer les valeurs initiales des THETAs $OMEGA et $SIGMA, par les valeurs finales obtenues,
– remplacer le $ESTIM par un $SIMULATION
ex: $SIM (21264) ONLYSIM SUB=1000
– supprimer le $COV
– garder une seule création de tabeau pour ne pas surcharger inutilement
$TABLE ID TIME DV MDV GR ONEHEADER NOPRINT FILE=final_sim.fit
Dans cet exemple, GR est une covariable qui permet de diviser les graphiques en fonction du groupe dans lequel se trouve les patients
Le fichier obtenu contiendra donc 1000 simulations de vos patients avec les mêmes schéma de posologie. Si le modèle prédit correctement vos données, alors les concentrations simulées devront être équivalentes à celles observées.
Un moyen efficace de le voir est de créer un graphique comprenant les concentrations observées et les bornes sup et inf de l’intervalle à 90-95% des concentrations simulées.
Si le modèle n’est pas biaisé, 90% ( ou 95%) des concentrations observées seront dans l’intervalle et seulement 10% (5%) des points seront en dehors des limites.