NONMEM Users Network Archive

Hosted by Cognigen

Re: Estimation method for ETAs with POSTHOC

From: Guo, Tingjie <t.guo>
Date: Sat, 6 May 2017 18:23:33 +0000

Dear Ruben,

Thank you for your advice.

I would also like to know how NONMEM does. Do you have any idea?

Warm regards,

From: Ruben Faelens <faelens .se>
Date: Friday, 5 May 2017 at 16:48
To: "Guo, Tingjie" <t.guo
Subject: Re: [NMusers] Estimation method for ETAs with POSTHOC

Dear Tingjie,

Your proposed objective function is based on least-squares distance. You could also use the actual probability density:
objFunction = LOG(pnorm(Yobs - Ypred, sigma)) + LOG(pnorm(Para_i-Para_pop, omega))
This allows more flexibility wrt parameter or residual variability distributions.

I have previously implemented the above using the optim() function (with Nelder-Mead method).

In my experience, the tricky part is making the prediction function robust. Almost all optimization methods will evaluate widely varying values for the parameters and expect a continuous OFV.
If you encounter numerical problems, you can always visualize the OFV to gain a better understanding.

Finally, if you use this for dose recommendation, do not forget to evaluate the uncertainty around the individual estimates! If you use an objective function based on the actual log-likelihood, this is easy:
myHessian <- hessian(objFunction, etaEstimates)
FIM <- -1 * myHessian # Officially E(Hessian), but not necessary when using numeric methods
myCovMatrix <- solve(FIM)

Good luck!

Kind regards,
Ruben Faelens

On Fri, May 5, 2017 at 2:17 PM Guo, Tingjie <t.guo
Dear NMusers,

I have two questions about the mathematical details on POSTHOC estimation in NONMEM. How does NONMEM actually do when doing POSTHOC ($EST METHOD=0 MAXEVEL=0) to get ETAs? I assume but not for sure there is an objective function to be minimized, somewhat like:

       Objective function = SUM(Yobs-Ypred)^2/sigma^2 + SUM(Para_i-Para_pop)^2/omega^2

Is there an objective function used in NONMEM when doing POSTHOC? If so, what is that function?

Secondly, if the answer to above is yes, let’s assume the real objective function is the same as what I mentioned above. I wonder how (NONMEM does) to minimize this function? I am currently trying to do similar things in R/Python language. I tried Metropolis-Hasting algorithm and Simulated Annealing algorithm, but with some technical problems. And the result was not comparable with NONMEM as well. Can someone give me a direction for this? The more mathematically detailed the better.


Warm regards,

Received on Sat May 06 2017 - 14:23:33 EDT

The NONMEM Users Network is maintained by ICON plc. Requests to subscribe to the network should be sent to:

Once subscribed, you may contribute to the discussion by emailing: