Contraindre un THETA

Paramètres contraints
Dans certaines situations nous avons besoin de contraindre un paramètre à être compris dans un intervalle de valeur.
Exemple:
un Emax doit être compris entre 0 et 100%

Une implémentation permet cette contrainte en prenant en compte la variabilité interindividuelle

si
LOGIT = THETA(1) + THETA(2)*WT + ETA(1)
ou si
LOGIT = THETA(1) + ETA(1)
IF (LOGIT.GT.100) LOGIT = 100.00
EMAX = EXP(LOGIT) / (1 + EXP(LOGIT))

Avec ce code, EMAX sera toujours entre 0 et 1 quelque soit la valeur d’ETA
Il n’est pas nécessaire de donner des limites à THETA

En revanche, il peut être utile de transformer THETA pour pouvoir l’interpréter:
THETA_1 = EXP(THETA(1)) / (1 + EXP(THETA(1)))
ou ce qui est équivalent
THETA_1 = 1 / (1 + EXP(-THETA(1)))

Autre exemple avec F1:
TVF = THETA(x)
RATIO = TVF/(1-TVF)
AA = EXP(LOG(RATIO)+ETA(x))
F1 = AA / (1 + AA)
[karlsson MO et al. J Pharmacokinet biopharm 1998]

MU_x referencing:
Pour contraindre entre 0 et 1

MU_1 = THETA(1)
EXPP = MU_1 + ETA(1)
IF (EXPP<-100.0) EXPP= -100.0; protect againts floating overflow IF (EXPP>100.0) EXPP= 100.0; protect againts floating overflow
EXPW = EXP(-EXPP)
F1 = 1 / (1.0 + EXPW)

theta peut être retransformé pour être plus interprétable:
Thetap = 1 / (1 + EXP(-THETA(1)))