Dear Ruben, Thank you for your advice.
I would also like to know how NONMEM does. Do you have any idea? Warm regards, Tingjie From: Ruben Faelens <fael...@kth.se> Date: Friday, 5 May 2017 at 16:48 To: "Guo, Tingjie" <t....@vumc.nl>, nmusers <nmusers@globomaxnm.com> 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....@vumc.nl<mailto:t....@vumc.nl>> wrote: 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. Thanks! Warm regards, Tingjie