Transit Absorption Model in NONMEM

6 messages 5 people Latest: Dec 12, 2013

Transit Absorption Model in NONMEM

From: Xinting Wang Date: December 10, 2013 technical
Dear all, I have some naive questions to ask you about the implementation of transit absorption model in nonmem. Below is a demo code from Prof. Holford in which some part of it I can not understand quite well. $PROB Transit delay $DATA sd.csv $INPUT ID TIME AMT WT DV $SIM (20050830 NEW) NSUB=1 $EST MAX=9990 SIG=6 ;PRINT=1 METHOD=CONDITIONAL INTERACTION $THETA (0,3) ; pop_cl (1,10) ; pop_v (0.1,1) ; pop_ka h-1 (0.1,1) ; pop_mtt h (1,5) ; pop_nt $OMEGA 0.09 ; ppv_cl 0.09 ; ppv_v 0.09 ; ppv_ka 0.09 ; ppv_mtt $THETA (0.001,0.1) ; RUV_CV (0.001,1) ; RUV_SD $SIGMA 1 FIX ; EPS1 $SIGMA 1 FIX ; EPS2 $SUBR ADVAN6 TOL=3 $MODEL COMP (TRANSIT) COMP (CENTRAL) $PK IF (NEWIND.LE.1) THEN DOSE=0 TDOSE=0 TLAST=0 ENDIF IF (AMT.GT.0) THEN DOSE=AMT TDOSE=TIME ENDIF CL=POP_CL*EXP(PPV_CL) V=POP_V*EXP(PPV_V) KA=POP_KA*EXP(PPV_KA) MTT=POP_MTT*EXP(PPV_MTT) NT=POP_NT KTR=(NT+1)/MTT NFAC= SQRT(2*3.1415)*NT**(NT+0.5)*EXP(-NT) ;Very important! F1=0 $DES DCP=A(2)/V RATEIN=KA*A(1) GUT=DOSE*EXP(-KTR*(T-TLAST)) DADT(1)=GUT*KTR*(KTR*(T-TLAST))**NT/NFAC - RATEIN DADT(2)=RATEIN - CL*DCP *$ERRORCP=A(2)/VY=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2IF (ICALL.EQ.4) THEN NEPS=0 DOWHILE(Y.LE.0.AND.NEPS.LT.100) CALL SIMEPS(EPS) Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 NEPS=NEPS+1 ENDDOENDIFTLAST=TDOSE* $TABLE ID TIME CL V KA MTT CP Y ONEHEADER NOPRINT FILE=transit.fit *My questions are in the $ERROR part of this code.* 1. I noticed that EPS1 and EPS2 is fixed, and the error is simulated using RUV_CV and RUV_SD as thetas. What is the difference if I use below equation: Y=CP*EPS1+EPS2, and let the program to estimate EPS1 and EPS2? 2. What's the purpose of SIMEPS(EPS) here? From my understanding is that if ICALL equals 4, then conduct a limited number of Y=CP*(1+RUV_CV*EPS1)+RUV_SD*EPS2. Thanks to you all for your kind support. -- Xinting

Re: Transit Absorption Model in NONMEM

From: Nick Holford Date: December 10, 2013 technical
Xinting, The use of THETA with SIGMA 1 FIX is just a matter of style. It should make no real difference to the results if you do it this way or with SIGMA to describe the residual error. Others may wish to debate that fine point. The DOWHILE loop with SIMEPS is used to enforce a simulation constraint that the simulated measured value is always positive. The NEPS is there to avoid getting stuck in the DOWHILE loop. I don't think I would bother with this DOWHILE loop today. It is quite possible to have negative measured values when you use an additive residual error component. I think its a more honest simulation of the residual error to allow negative simulated measurements. Best wishes, Nick
Quoted reply history
On 10/12/2013 6:13 p.m., Xinting Wang wrote: > Dear all, > > I have some naive questions to ask you about the implementation of transit absorption model in nonmem. Below is a demo code from Prof. Holford in which some part of it I can not understand quite well. > > $PROB Transit delay > $DATA sd.csv > $INPUT ID TIME AMT WT DV > $SIM (20050830 NEW) NSUB=1 > $EST MAX=9990 SIG=6 ;PRINT=1 > METHOD=CONDITIONAL INTERACTION > > $THETA > (0,3) ; pop_cl > (1,10) ; pop_v > (0.1,1) ; pop_ka h-1 > (0.1,1) ; pop_mtt h > (1,5) ; pop_nt > $OMEGA > 0.09 ; ppv_cl > 0.09 ; ppv_v > 0.09 ; ppv_ka > 0.09 ; ppv_mtt > > $THETA > (0.001,0.1) ; RUV_CV > (0.001,1) ; RUV_SD > $SIGMA 1 FIX ; EPS1 > $SIGMA 1 FIX ; EPS2 > > $SUBR ADVAN6 TOL=3 > $MODEL > COMP (TRANSIT) > COMP (CENTRAL) > > $PK > IF (NEWIND.LE.1) THEN > DOSE=0 > TDOSE=0 > TLAST=0 > ENDIF > IF (AMT.GT.0) THEN > DOSE=AMT > TDOSE=TIME > ENDIF > CL=POP_CL*EXP(PPV_CL) > V=POP_V*EXP(PPV_V) > KA=POP_KA*EXP(PPV_KA) > MTT=POP_MTT*EXP(PPV_MTT) > NT=POP_NT > KTR=(NT+1)/MTT > NFAC= SQRT(2*3.1415)*NT**(NT+0.5)*EXP(-NT) > > ;Very important! > F1=0 > > $DES > DCP=A(2)/V > RATEIN=KA*A(1) > GUT=DOSE*EXP(-KTR*(T-TLAST)) > DADT(1)=GUT*KTR*(KTR*(T-TLAST))**NT/NFAC - RATEIN > DADT(2)=RATEIN - CL*DCP > > *$ERROR > CP=A(2)/V > Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 > IF (ICALL.EQ.4) THEN > NEPS=0 > DOWHILE(Y.LE.0.AND.NEPS.LT.100) > CALL SIMEPS(EPS) > Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 > NEPS=NEPS+1 > ENDDO > ENDIF > TLAST=TDOSE > * > $TABLE ID TIME > CL V KA MTT > CP Y > ONEHEADER NOPRINT FILE=transit.fit > > /My questions are in the $ERROR part of this code./ > > 1. I noticed that EPS1 and EPS2 is fixed, and the error is simulated using RUV_CV and RUV_SD as thetas. What is the difference if I use below equation: > > Y=CP*EPS1+EPS2, and let the program to estimate EPS1 and EPS2? > > 2. What's the purpose of SIMEPS(EPS) here? From my understanding is that if ICALL equals 4, then conduct a limited number of Y=CP*(1+RUV_CV*EPS1)+RUV_SD*EPS2. > > Thanks to you all for your kind support. > > -- > Xinting -- Nick Holford, Professor Clinical Pharmacology Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand office:+64(9)923-6730 mobile:NZ +64(21)46 23 53 email: [email protected] http://holford.fmhs.auckland.ac.nz/ Holford NHG. Disease progression and neuroscience. Journal of Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 http://link.springer.com/article/10.1007/s10928-013-9316-2 Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and adults. J Pharm Sci. 2013: http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html Holford NHG. Clinical pharmacology = disease progression + drug action. British Journal of Clinical Pharmacology. 2013: http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract

Re: Transit Absorption Model in NONMEM

From: Siwei Dai Date: December 10, 2013 technical
Hi, Nick: Have been enjoying learning from you. A follow up question: you mentioned in your last message that model misspecification can result in large negative simulated predictions. Can you be more specific on this issue? In which situation it would happen? Any type of model misspecification, or certain type of model misspecification? I run into some situations where the diagnosis plots and VPC look alright, but large negative predictions existed. I used exponential error model to avoid the negative values, but have been wondering what was going wrong. I appreciate your comments. Thanks! Siwei
Quoted reply history
On Tue, Dec 10, 2013 at 1:22 PM, Nick Holford <[email protected]>wrote: > Xinting, > > You are correct. Negative simulated measurements occur when you have an > additive residual error component which is normally distributed with mean > zero. This means that half of the additive residual errors will be > negative. When the simulated prediction is similar in size to the standard > deviation of the additive error distribution then adding a negative > residual error to the non-negative prediction can make the simulated > measurement negative. This is what happens in reality when the true > concentration approaches the baseline noise of the measurement method. > > If the estimated additive residual error standard deviation is similar to > the estimated baseline noise standard deviation then it would be reasonable > to accept non-positive simulated measurements. On the other hand if the > estimated additive residual error is much larger e.g. due to model > misspecification, then it might be more sensible to use DOWHILE to reject > the non-positive simulated values. > > Best wishes, > > Nick > > On 10/12/2013 10:21 p.m., Xinting Wang wrote: > > Dear Nick, > > Thanks very much for your comment. I want to follow up with you on the > negative simulated measurements. From my experience, I also noticed that > simulation could result in negative simulated results. This usually happens > in the terminal elimination phase of the PK profile. I am just not very > familiar with the origin of these values. Is it because we have the > additive error in the model, so that some results might be negative? > > Thank you. > > > On 10 December 2013 13:38, Nick Holford <[email protected]> wrote: > >> Xinting, >> >> The use of THETA with SIGMA 1 FIX is just a matter of style. It should >> make no real difference to the results if you do it this way or with SIGMA >> to describe the residual error. Others may wish to debate that fine >> point. >> >> The DOWHILE loop with SIMEPS is used to enforce a simulation constraint >> that the simulated measured value is always positive. The NEPS is there to >> avoid getting stuck in the DOWHILE loop. >> >> I don't think I would bother with this DOWHILE loop today. It is quite >> possible to have negative measured values when you use an additive residual >> error component. I think its a more honest simulation of the residual error >> to allow negative simulated measurements. >> >> Best wishes, >> >> Nick >> >> On 10/12/2013 6:13 p.m., Xinting Wang wrote: >> >> Dear all, >> >> I have some naive questions to ask you about the implementation of >> transit absorption model in nonmem. Below is a demo code from Prof. Holford >> in which some part of it I can not understand quite well. >> >> $PROB Transit delay >> $DATA sd.csv >> $INPUT ID TIME AMT WT DV >> $SIM (20050830 NEW) NSUB=1 >> $EST MAX=9990 SIG=6 ;PRINT=1 >> METHOD=CONDITIONAL INTERACTION >> >> $THETA >> (0,3) ; pop_cl >> (1,10) ; pop_v >> (0.1,1) ; pop_ka h-1 >> (0.1,1) ; pop_mtt h >> (1,5) ; pop_nt >> $OMEGA >> 0.09 ; ppv_cl >> 0.09 ; ppv_v >> 0.09 ; ppv_ka >> 0.09 ; ppv_mtt >> >> $THETA >> (0.001,0.1) ; RUV_CV >> (0.001,1) ; RUV_SD >> $SIGMA 1 FIX ; EPS1 >> $SIGMA 1 FIX ; EPS2 >> >> $SUBR ADVAN6 TOL=3 >> $MODEL >> COMP (TRANSIT) >> COMP (CENTRAL) >> >> $PK >> IF (NEWIND.LE.1) THEN >> DOSE=0 >> TDOSE=0 >> TLAST=0 >> ENDIF >> IF (AMT.GT.0) THEN >> DOSE=AMT >> TDOSE=TIME >> ENDIF >> CL=POP_CL*EXP(PPV_CL) >> V=POP_V*EXP(PPV_V) >> KA=POP_KA*EXP(PPV_KA) >> MTT=POP_MTT*EXP(PPV_MTT) >> NT=POP_NT >> KTR=(NT+1)/MTT >> NFAC= SQRT(2*3.1415)*NT**(NT+0.5)*EXP(-NT) >> >> ;Very important! >> F1=0 >> >> $DES >> DCP=A(2)/V >> RATEIN=KA*A(1) >> GUT=DOSE*EXP(-KTR*(T-TLAST)) >> DADT(1)=GUT*KTR*(KTR*(T-TLAST))**NT/NFAC - RATEIN >> DADT(2)=RATEIN - CL*DCP >> >> >> >> >> >> >> >> >> >> >> >> >> >> *$ERRORCP=A(2)/VY=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2IF (ICALL.EQ.4) THEN >> NEPS=0 DOWHILE(Y.LE.0.AND.NEPS.LT.100) CALL SIMEPS(EPS) >> Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 NEPS=NEPS+1 ENDDOENDIFTLAST=TDOSE* >> $TABLE ID TIME >> CL V KA MTT >> CP Y >> ONEHEADER NOPRINT FILE=transit.fit >> >> >> *My questions are in the $ERROR part of this code.* >> >> 1. I noticed that EPS1 and EPS2 is fixed, and the error is simulated >> using RUV_CV and RUV_SD as thetas. What is the difference if I use below >> equation: >> Y=CP*EPS1+EPS2, and let the program to estimate EPS1 and EPS2? >> >> 2. What's the purpose of SIMEPS(EPS) here? From my understanding is that >> if ICALL equals 4, then conduct a limited number of >> Y=CP*(1+RUV_CV*EPS1)+RUV_SD*EPS2. >> >> Thanks to you all for your kind support. >> >> -- >> Xinting >> >> >> -- >> Nick Holford, Professor Clinical Pharmacology >> Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A >> University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand >> office:+64(9)923-6730 mobile:NZ +64(21)46 23 53 >> email: [email protected] http://holford.fmhs.auckland.ac.nz/ >> >> Holford NHG. Disease progression and neuroscience. Journal of >> Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 >> http://link.springer.com/article/10.1007/s10928-013-9316-2 >> Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and >> adults. J Pharm Sci. 2013: >> http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract >> Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: >> http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html >> Holford NHG. Clinical pharmacology = disease progression + drug action. >> British Journal of Clinical Pharmacology. 2013: >> http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract >> >> > > > -- > Xinting > > > -- > Nick Holford, Professor Clinical Pharmacology > Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A > University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand > office:+64(9)923-6730 mobile:NZ +64(21)46 23 53 > email: [email protected] http://holford.fmhs.auckland.ac.nz/ > > Holford NHG. Disease progression and neuroscience. Journal of > Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 > http://link.springer.com/article/10.1007/s10928-013-9316-2 > Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and > adults. J Pharm Sci. 2013: > http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract > Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: > http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html > Holford NHG. Clinical pharmacology = disease progression + drug action. > British Journal of Clinical Pharmacology. 2013: > http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract > >

Re: Transit Absorption Model in NONMEM

From: Xinting Wang Date: December 12, 2013 technical
Dear all, Thanks very much for your answers and communications. It really helps. Now I have a further question regarding the transit absorption model. Apart from the code I used in a previous email, in a paper from R. Savic (Journal of Pharmacokinetics and Pharmacodynamics, 2007: 711-726) it was mentioned that using log transformed code could be helpful. This would be better-off if the number of transits is large. Actually Prof. Holford also used this log-tranformed code in one of his demo codes (see below). *$PKIF (NEWIND.LE.1) THEN DOSE=0 TDOSE=0 TLAST=0 TINY=0.00001ENDIFIF (AMT.GT.0) THEN DOSE=AMT TDOSE=TIMEENDIFCL=POP_CL*EXP(PPV_CL)V=POP_V*EXP(PPV_V)KA=POP_KA*EXP(PPV_KA)MTT=POP_MTT*EXP(PPV_MTT)NT=POP_NTKTR=(NT+1)/MTTLNFAC= LOG(2.5066)+(NT+.5)*LOG(NT)-NTLNDK=LOG(DOSE+TINY)+LOG(KTR);Very important!F1=0$DESDCP=A(2)/VRATEIN=KA*A(1)X=KTR*(T-TLAST)DADT(1)=EXP(LNDK+NT*LOG(X+TINY)-X-LNFAC)-RATEINDADT(2)=RATEIN - CL*DCP* I tried the code without log transformation and get an estimation of NT of around 62. Then I used the log-transformed code as demonstrated by Prof. Holford and Prof. Savic, but the mathematical solution is much harder to get. The errors range from ERROR=134 to ERROR=136, even though I tried the initial values from the previous estimation. I want to ask if anyone has any experience on the comparison of these two-different mathematical solutions. From my limited experience with these different kinds of model, the log-transformation did not help much in this case. I am wondering if this is because my NT is not large enough, so that log-transformation did not work out in my case? Thanks a lot. Best Regards
Quoted reply history
On 11 December 2013 04:06, Nick Holford <[email protected]> wrote: > Siwei, > > Any kind of model misspecification will lead to inflation of the residual > error. The residual error is by definition trying to describe what has not > already been explained by the rest of the model. If the rest of the model > is mis-specified (i.e. wrong) then the residual error must become larger. > > Nick > > On 11/12/2013 8:18 a.m., siwei Dai wrote: > > Hi, Nick: > > Have been enjoying learning from you. > > A follow up question: you mentioned in your last message that model > misspecification can result in large negative simulated predictions. Can > you be more specific on this issue? In which situation it would happen? Any > type of model misspecification, or certain type of model misspecification? > I run into some situations where the diagnosis plots and VPC look alright, > but large negative predictions existed. I used exponential error > model to avoid the negative values, but have been wondering what was going > wrong. > > I appreciate your comments. > > Thanks! > > Siwei > > > > > On Tue, Dec 10, 2013 at 1:22 PM, Nick Holford <[email protected]>wrote: > >> Xinting, >> >> You are correct. Negative simulated measurements occur when you have an >> additive residual error component which is normally distributed with mean >> zero. This means that half of the additive residual errors will be >> negative. When the simulated prediction is similar in size to the standard >> deviation of the additive error distribution then adding a negative >> residual error to the non-negative prediction can make the simulated >> measurement negative. This is what happens in reality when the true >> concentration approaches the baseline noise of the measurement method. >> >> If the estimated additive residual error standard deviation is similar to >> the estimated baseline noise standard deviation then it would be reasonable >> to accept non-positive simulated measurements. On the other hand if the >> estimated additive residual error is much larger e.g. due to model >> misspecification, then it might be more sensible to use DOWHILE to reject >> the non-positive simulated values. >> >> Best wishes, >> >> Nick >> >> On 10/12/2013 10:21 p.m., Xinting Wang wrote: >> >> Dear Nick, >> >> Thanks very much for your comment. I want to follow up with you on the >> negative simulated measurements. From my experience, I also noticed that >> simulation could result in negative simulated results. This usually happens >> in the terminal elimination phase of the PK profile. I am just not very >> familiar with the origin of these values. Is it because we have the >> additive error in the model, so that some results might be negative? >> >> Thank you. >> >> >> On 10 December 2013 13:38, Nick Holford <[email protected]> wrote: >> >>> Xinting, >>> >>> The use of THETA with SIGMA 1 FIX is just a matter of style. It should >>> make no real difference to the results if you do it this way or with SIGMA >>> to describe the residual error. Others may wish to debate that fine >>> point. >>> >>> The DOWHILE loop with SIMEPS is used to enforce a simulation constraint >>> that the simulated measured value is always positive. The NEPS is there to >>> avoid getting stuck in the DOWHILE loop. >>> >>> I don't think I would bother with this DOWHILE loop today. It is quite >>> possible to have negative measured values when you use an additive residual >>> error component. I think its a more honest simulation of the residual error >>> to allow negative simulated measurements. >>> >>> Best wishes, >>> >>> Nick >>> >>> On 10/12/2013 6:13 p.m., Xinting Wang wrote: >>> >>> Dear all, >>> >>> I have some naive questions to ask you about the implementation of >>> transit absorption model in nonmem. Below is a demo code from Prof. Holford >>> in which some part of it I can not understand quite well. >>> >>> $PROB Transit delay >>> $DATA sd.csv >>> $INPUT ID TIME AMT WT DV >>> $SIM (20050830 NEW) NSUB=1 >>> $EST MAX=9990 SIG=6 ;PRINT=1 >>> METHOD=CONDITIONAL INTERACTION >>> >>> $THETA >>> (0,3) ; pop_cl >>> (1,10) ; pop_v >>> (0.1,1) ; pop_ka h-1 >>> (0.1,1) ; pop_mtt h >>> (1,5) ; pop_nt >>> $OMEGA >>> 0.09 ; ppv_cl >>> 0.09 ; ppv_v >>> 0.09 ; ppv_ka >>> 0.09 ; ppv_mtt >>> >>> $THETA >>> (0.001,0.1) ; RUV_CV >>> (0.001,1) ; RUV_SD >>> $SIGMA 1 FIX ; EPS1 >>> $SIGMA 1 FIX ; EPS2 >>> >>> $SUBR ADVAN6 TOL=3 >>> $MODEL >>> COMP (TRANSIT) >>> COMP (CENTRAL) >>> >>> $PK >>> IF (NEWIND.LE.1) THEN >>> DOSE=0 >>> TDOSE=0 >>> TLAST=0 >>> ENDIF >>> IF (AMT.GT.0) THEN >>> DOSE=AMT >>> TDOSE=TIME >>> ENDIF >>> CL=POP_CL*EXP(PPV_CL) >>> V=POP_V*EXP(PPV_V) >>> KA=POP_KA*EXP(PPV_KA) >>> MTT=POP_MTT*EXP(PPV_MTT) >>> NT=POP_NT >>> KTR=(NT+1)/MTT >>> NFAC= SQRT(2*3.1415)*NT**(NT+0.5)*EXP(-NT) >>> >>> ;Very important! >>> F1=0 >>> >>> $DES >>> DCP=A(2)/V >>> RATEIN=KA*A(1) >>> GUT=DOSE*EXP(-KTR*(T-TLAST)) >>> DADT(1)=GUT*KTR*(KTR*(T-TLAST))**NT/NFAC - RATEIN >>> DADT(2)=RATEIN - CL*DCP >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> *$ERROR CP=A(2)/V Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 IF (ICALL.EQ.4) >>> THEN NEPS=0 DOWHILE(Y.LE.0.AND.NEPS.LT.100) CALL SIMEPS(EPS) >>> Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 NEPS=NEPS+1 ENDDO ENDIF >>> TLAST=TDOSE * >>> $TABLE ID TIME >>> CL V KA MTT >>> CP Y >>> ONEHEADER NOPRINT FILE=transit.fit >>> >>> >>> *My questions are in the $ERROR part of this code.* >>> >>> 1. I noticed that EPS1 and EPS2 is fixed, and the error is simulated >>> using RUV_CV and RUV_SD as thetas. What is the difference if I use below >>> equation: >>> Y=CP*EPS1+EPS2, and let the program to estimate EPS1 and EPS2? >>> >>> 2. What's the purpose of SIMEPS(EPS) here? From my understanding is >>> that if ICALL equals 4, then conduct a limited number of >>> Y=CP*(1+RUV_CV*EPS1)+RUV_SD*EPS2. >>> >>> Thanks to you all for your kind support. >>> >>> -- >>> Xinting >>> >>> >>> -- >>> Nick Holford, Professor Clinical Pharmacology >>> Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A >>> University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand >>> office:+64(9)923-6730 mobile:NZ +64(21)46 23 53 >>> email: [email protected] http://holford.fmhs.auckland.ac.nz/ >>> >>> Holford NHG. Disease progression and neuroscience. Journal of >>> Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 >>> http://link.springer.com/article/10.1007/s10928-013-9316-2 >>> Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and >>> adults. J Pharm Sci. 2013: >>> http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract >>> Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. >>> 2013;2: http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html >>> Holford NHG. Clinical pharmacology = disease progression + drug action. >>> British Journal of Clinical Pharmacology. 2013: >>> http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract >>> >>> >> >> >> -- >> Xinting >> >> >> -- >> Nick Holford, Professor Clinical Pharmacology >> Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A >> University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand >> office:+64(9)923-6730 mobile:NZ +64(21)46 23 53 >> email: [email protected] http://holford.fmhs.auckland.ac.nz/ >> >> Holford NHG. Disease progression and neuroscience. Journal of >> Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 >> http://link.springer.com/article/10.1007/s10928-013-9316-2 >> Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and >> adults. J Pharm Sci. 2013: >> http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract >> Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: >> http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html >> Holford NHG. Clinical pharmacology = disease progression + drug action. >> British Journal of Clinical Pharmacology. 2013: >> http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract >> >> > > -- > Nick Holford, Professor Clinical Pharmacology > Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A > University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand > office:+64(9)923-6730 mobile:NZ +64(21)46 23 53 > email: [email protected] http://holford.fmhs.auckland.ac.nz/ > > Holford NHG. Disease progression and neuroscience. Journal of > Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 > http://link.springer.com/article/10.1007/s10928-013-9316-2 > Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and > adults. J Pharm Sci. 2013: > http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract > Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: > http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html > Holford NHG. Clinical pharmacology = disease progression + drug action. > British Journal of Clinical Pharmacology. 2013: > http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract > > -- Xinting

RE: Transit Absorption Model in NONMEM

From: Rob ter Heine Date: December 12, 2013 technical
Hi Xinting , You might want to check out the PDF of the presentation of Justin Wilkins at the PAGE in 2005: http://www.page-meeting.org/?abstract=769 By the way, in my experience this model does not really outperform a little more simple method with a chain of transition/absorption compartments where you manually check different numbers of transit compartments and estimate a mean absorption time with an IIV/IOV, see Kappelhoff et al (Clin Pharmacokinet. 2005;44(8):849-61). If you're really into variable drug absorption, you might also want to check the work done by Freijer et al (Bull Math Biol. 2007 Jan;69(1):181-95) or the work by Higaki et al (Higaki et al - J Pharmacokinet Pharmacodyn. 2001 Apr;28(2):109-28.) Sincerely, Rob ter Heine
Quoted reply history
Van: [email protected] [mailto:[email protected]] Namens Xinting Wang Verzonden: donderdag 12 december 2013 10:53 Aan: Nick Holford CC: nmusers Onderwerp: Re: [NMusers] Transit Absorption Model in NONMEM Dear all, Thanks very much for your answers and communications. It really helps. Now I have a further question regarding the transit absorption model. Apart from the code I used in a previous email, in a paper from R. Savic (Journal of Pharmacokinetics and Pharmacodynamics, 2007: 711-726) it was mentioned that using log transformed code could be helpful. This would be better-off if the number of transits is large. Actually Prof. Holford also used this log-tranformed code in one of his demo codes (see below). $PK IF (NEWIND.LE.1) THEN DOSE=0 TDOSE=0 TLAST=0 TINY=0.00001 ENDIF IF (AMT.GT.0) THEN DOSE=AMT TDOSE=TIME ENDIF CL=POP_CL*EXP(PPV_CL) V=POP_V*EXP(PPV_V) KA=POP_KA*EXP(PPV_KA) MTT=POP_MTT*EXP(PPV_MTT) NT=POP_NT KTR=(NT+1)/MTT LNFAC= LOG(2.5066)+(NT+.5)*LOG(NT)-NT LNDK=LOG(DOSE+TINY)+LOG(KTR) ;Very important! F1=0 $DES DCP=A(2)/V RATEIN=KA*A(1) X=KTR*(T-TLAST) DADT(1)=EXP(LNDK+NT*LOG(X+TINY)-X-LNFAC)-RATEIN DADT(2)=RATEIN - CL*DCP I tried the code without log transformation and get an estimation of NT of around 62. Then I used the log-transformed code as demonstrated by Prof. Holford and Prof. Savic, but the mathematical solution is much harder to get. The errors range from ERROR=134 to ERROR=136, even though I tried the initial values from the previous estimation. I want to ask if anyone has any experience on the comparison of these two-different mathematical solutions. From my limited experience with these different kinds of model, the log-transformation did not help much in this case. I am wondering if this is because my NT is not large enough, so that log-transformation did not work out in my case? Thanks a lot. Best Regards On 11 December 2013 04:06, Nick Holford <[email protected]<mailto:[email protected]>> wrote: Siwei, Any kind of model misspecification will lead to inflation of the residual error. The residual error is by definition trying to describe what has not already been explained by the rest of the model. If the rest of the model is mis-specified (i.e. wrong) then the residual error must become larger. Nick On 11/12/2013 8:18 a.m., siwei Dai wrote: Hi, Nick: Have been enjoying learning from you. A follow up question: you mentioned in your last message that model misspecification can result in large negative simulated predictions. Can you be more specific on this issue? In which situation it would happen? Any type of model misspecification, or certain type of model misspecification? I run into some situations where the diagnosis plots and VPC look alright, but large negative predictions existed. I used exponential error model to avoid the negative values, but have been wondering what was going wrong. I appreciate your comments. Thanks! Siwei On Tue, Dec 10, 2013 at 1:22 PM, Nick Holford <[email protected]<mailto:[email protected]>> wrote: Xinting, You are correct. Negative simulated measurements occur when you have an additive residual error component which is normally distributed with mean zero. This means that half of the additive residual errors will be negative. When the simulated prediction is similar in size to the standard deviation of the additive error distribution then adding a negative residual error to the non-negative prediction can make the simulated measurement negative. This is what happens in reality when the true concentration approaches the baseline noise of the measurement method. If the estimated additive residual error standard deviation is similar to the estimated baseline noise standard deviation then it would be reasonable to accept non-positive simulated measurements. On the other hand if the estimated additive residual error is much larger e.g. due to model misspecification, then it might be more sensible to use DOWHILE to reject the non-positive simulated values. Best wishes, Nick On 10/12/2013 10:21 p.m., Xinting Wang wrote: Dear Nick, Thanks very much for your comment. I want to follow up with you on the negative simulated measurements. From my experience, I also noticed that simulation could result in negative simulated results. This usually happens in the terminal elimination phase of the PK profile. I am just not very familiar with the origin of these values. Is it because we have the additive error in the model, so that some results might be negative? Thank you. On 10 December 2013 13:38, Nick Holford <[email protected]<mailto:[email protected]>> wrote: Xinting, The use of THETA with SIGMA 1 FIX is just a matter of style. It should make no real difference to the results if you do it this way or with SIGMA to describe the residual error. Others may wish to debate that fine point. The DOWHILE loop with SIMEPS is used to enforce a simulation constraint that the simulated measured value is always positive. The NEPS is there to avoid getting stuck in the DOWHILE loop. I don't think I would bother with this DOWHILE loop today. It is quite possible to have negative measured values when you use an additive residual error component. I think its a more honest simulation of the residual error to allow negative simulated measurements. Best wishes, Nick On 10/12/2013 6:13 p.m., Xinting Wang wrote: Dear all, I have some naive questions to ask you about the implementation of transit absorption model in nonmem. Below is a demo code from Prof. Holford in which some part of it I can not understand quite well. $PROB Transit delay $DATA sd.csv $INPUT ID TIME AMT WT DV $SIM (20050830 NEW) NSUB=1 $EST MAX=9990 SIG=6 ;PRINT=1 METHOD=CONDITIONAL INTERACTION $THETA (0,3) ; pop_cl (1,10) ; pop_v (0.1,1) ; pop_ka h-1 (0.1,1) ; pop_mtt h (1,5) ; pop_nt $OMEGA 0.09 ; ppv_cl 0.09 ; ppv_v 0.09 ; ppv_ka 0.09 ; ppv_mtt $THETA (0.001,0.1) ; RUV_CV (0.001,1) ; RUV_SD $SIGMA 1 FIX ; EPS1 $SIGMA 1 FIX ; EPS2 $SUBR ADVAN6 TOL=3 $MODEL COMP (TRANSIT) COMP (CENTRAL) $PK IF (NEWIND.LE.1) THEN DOSE=0 TDOSE=0 TLAST=0 ENDIF IF (AMT.GT.0) THEN DOSE=AMT TDOSE=TIME ENDIF CL=POP_CL*EXP(PPV_CL) V=POP_V*EXP(PPV_V) KA=POP_KA*EXP(PPV_KA) MTT=POP_MTT*EXP(PPV_MTT) NT=POP_NT KTR=(NT+1)/MTT NFAC= SQRT(2*3.1415)*NT**(NT+0.5)*EXP(-NT) ;Very important! F1=0 $DES DCP=A(2)/V RATEIN=KA*A(1) GUT=DOSE*EXP(-KTR*(T-TLAST)) DADT(1)=GUT*KTR*(KTR*(T-TLAST))**NT/NFAC - RATEIN DADT(2)=RATEIN - CL*DCP $ERROR CP=A(2)/V Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 IF (ICALL.EQ.4) THEN NEPS=0 DOWHILE(Y.LE.0.AND.NEPS.LT.100) CALL SIMEPS(EPS) Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 NEPS=NEPS+1 ENDDO ENDIF TLAST=TDOSE $TABLE ID TIME CL V KA MTT CP Y ONEHEADER NOPRINT FILE=transit.fit My questions are in the $ERROR part of this code. 1. I noticed that EPS1 and EPS2 is fixed, and the error is simulated using RUV_CV and RUV_SD as thetas. What is the difference if I use below equation: Y=CP*EPS1+EPS2, and let the program to estimate EPS1 and EPS2? 2. What's the purpose of SIMEPS(EPS) here? From my understanding is that if ICALL equals 4, then conduct a limited number of Y=CP*(1+RUV_CV*EPS1)+RUV_SD*EPS2. Thanks to you all for your kind support. -- Xinting -- Nick Holford, Professor Clinical Pharmacology Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand office:+64(9)923-6730<tel:%2B64%289%29923-6730> mobile:NZ +64(21)46 23 53<tel:%2B64%2821%2946%2023%2053> email: [email protected]<mailto:[email protected]> http://holford.fmhs.auckland.ac.nz/ Holford NHG. Disease progression and neuroscience. Journal of Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 http://link.springer.com/article/10.1007/s10928-013-9316-2 Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and adults. J Pharm Sci. 2013: http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html Holford NHG. Clinical pharmacology = disease progression + drug action. British Journal of Clinical Pharmacology. 2013: http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract -- Xinting -- Nick Holford, Professor Clinical Pharmacology Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand office:+64(9)923-6730<tel:%2B64%289%29923-6730> mobile:NZ +64(21)46 23 53<tel:%2B64%2821%2946%2023%2053> email: [email protected]<mailto:[email protected]> http://holford.fmhs.auckland.ac.nz/ Holford NHG. Disease progression and neuroscience. Journal of Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 http://link.springer.com/article/10.1007/s10928-013-9316-2 Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and adults. J Pharm Sci. 2013: http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html Holford NHG. Clinical pharmacology = disease progression + drug action. British Journal of Clinical Pharmacology. 2013: http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract -- Nick Holford, Professor Clinical Pharmacology Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand office:+64(9)923-6730<tel:%2B64%289%29923-6730> mobile:NZ +64(21)46 23 53<tel:%2B64%2821%2946%2023%2053> email: [email protected]<mailto:[email protected]> http://holford.fmhs.auckland.ac.nz/ Holford NHG. Disease progression and neuroscience. Journal of Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 http://link.springer.com/article/10.1007/s10928-013-9316-2 Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and adults. J Pharm Sci. 2013: http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html Holford NHG. Clinical pharmacology = disease progression + drug action. British Journal of Clinical Pharmacology. 2013: http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract -- Xinting ***************************DISCLAIMER**************************** De informatie in dit e-mail bericht is uitsluitend bestemd voor de geadresseerde. Verstrekking aan en gebruik door anderen is niet toegestaan. Door de elektronische verzending van het bericht kunnen er geen rechten worden ontleend aan de informatie.

Re: Transit Absorption Model in NONMEM

From: Alison Boeckmann Date: December 12, 2013 technical
The control stream in the original email is for Nick's Wings for NONMEM. It is possible with NONMEM 7.3 to easily convert it to an ordinary control stream using a new feature, the REPLACE option of the $ABBR record. The following code can be placed after the $PROBLEM record: $abbr replace pop_cl=theta(1), ppv_cl=eta(1) $abbr replace pop_v=theta(2), ppv_v=eta(2) $abbr replace pop_ka=theta(3), ppv_ka=eta(3) $abbr replace pop_mtt=theta(4), ppv_mtt=eta(4) $abbr replace pop_nt=theta(5) $abbr replace ruv_cv=theta(6) $abbr replace ruv_sd=theta(7) $abbr replace eps1=eps(1) $abbr replace eps2=eps(2) I realize that WFN provides other features, but this is a good opportunity to point out the REPLACE option of 7.3.
Quoted reply history
On Mon, Dec 9, 2013, at 09:13 PM, Xinting Wang wrote: Dear all, I have some naive questions to ask you about the implementation of transit absorption model in nonmem. Below is a demo code from Prof. Holford in which some part of it I can not understand quite well. $PROB Transit delay $DATA sd.csv $INPUT ID TIME AMT WT DV $SIM (20050830 NEW) NSUB=1 $EST MAX=9990 SIG=6 ;PRINT=1 METHOD=CONDITIONAL INTERACTION $THETA (0,3) ; pop_cl (1,10) ; pop_v (0.1,1) ; pop_ka h-1 (0.1,1) ; pop_mtt h (1,5) ; pop_nt $OMEGA 0.09 ; ppv_cl 0.09 ; ppv_v 0.09 ; ppv_ka 0.09 ; ppv_mtt $THETA (0.001,0.1) ; RUV_CV (0.001,1) ; RUV_SD $SIGMA 1 FIX ; EPS1 $SIGMA 1 FIX ; EPS2 $SUBR ADVAN6 TOL=3 $MODEL COMP (TRANSIT) COMP (CENTRAL) $PK IF (NEWIND.LE.1) THEN DOSE=0 TDOSE=0 TLAST=0 ENDIF IF (AMT.GT.0) THEN DOSE=AMT TDOSE=TIME ENDIF CL=POP_CL*EXP(PPV_CL) V=POP_V*EXP(PPV_V) KA=POP_KA*EXP(PPV_KA) MTT=POP_MTT*EXP(PPV_MTT) NT=POP_NT KTR=(NT+1)/MTT NFAC= SQRT(2*3.1415)*NT**(NT+0.5)*EXP(-NT) ;Very important! F1=0 $DES DCP=A(2)/V RATEIN=KA*A(1) GUT=DOSE*EXP(-KTR*(T-TLAST)) DADT(1)=GUT*KTR*(KTR*(T-TLAST))**NT/NFAC - RATEIN DADT(2)=RATEIN - CL*DCP $ERROR CP=A(2)/V Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 IF (ICALL.EQ.4) THEN NEPS=0 DOWHILE(Y.LE.0.AND.NEPS.LT.100) CALL SIMEPS(EPS) Y=CP*(1+RUV_CV*EPS1) + RUV_SD*EPS2 NEPS=NEPS+1 ENDDO ENDIF TLAST=TDOSE $TABLE ID TIME CL V KA MTT CP Y ONEHEADER NOPRINT FILE=transit.fit My questions are in the $ERROR part of this code. 1. I noticed that EPS1 and EPS2 is fixed, and the error is simulated using RUV_CV and RUV_SD as thetas. What is the difference if I use below equation: Y=CP*EPS1+EPS2, and let the program to estimate EPS1 and EPS2? 2. What's the purpose of SIMEPS(EPS) here? From my understanding is that if ICALL equals 4, then conduct a limited number of Y=CP*(1+RUV_CV*EPS1)+RUV_SD*EPS2. Thanks to you all for your kind support. -- Xinting -- Alison Boeckmann [email protected]