Re: Transit Absorption Model in NONMEM
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