RE: Question about PK-PD models

From: Erik Olofsen Date: August 10, 2012 technical Source: mail-archive.com
Dear Alison, The loop you showed reminded me of Newton-Raphson, where X = X + TERM where TERM = -F(X) / G(X) and G(X) is the derivative of F(X) obtained in some way. Would this be such an example where TERM must be modified in the loop, and F(X) might be some (random, nonlinear PD) function? Best regards, Erik
Quoted reply history
________________________________________ From: [email protected] [[email protected]] on behalf of Alison Boeckmann [[email protected]] Sent: Thursday, August 09, 2012 10:53 PM To: [email protected]; ajbf Subject: [NMusers] Question about PK-PD models I have a question for PK-PD modellers. At present, DOWHIILE may be used in abbreviated code in simulation, initialization-finalization, data average, expectation blocks. These have ICALL\=2 and the eta derivatives are not needed. With nm73, NMTRAN will have a new feature: Use of DOWHILE in data-analytic (ICALL=2) blocks. I have found it helpful for obtaining the eta derivatives to make two restrictions: 639 VARIABLE MODIFIED IN DOWHILE MAY NOT ALREADY BE A RANDOM VARIABLE 640 VARIABLE MODIFIED IN DOWHILE MAY NOT BE MODIFIED MORE THAN ONCE. These restrictions make impossible a loop such as this one: TERM=THETA(1)*EXP(ETA(1)) SUM=0 I=1 DOWHILE (condition) SUM=SUM+TERM TERM=function(TERM) I=I+1 ENDDO You will note that TERM is being modified within DOWHILE, *and* it is random. In every example that I know of, TERM appears linearly, that is, it is multiplied by a non-random variable, and only this multiplier need be changed. My question is: Can anyone think of an example of this sort of loop that might be used in PK/PD modelling, and TERM itself *must* be changed? Possibly a TERM that is a function of two random variables? A few comments: All the elementary functions can be computed with Taylor series, and I think any Taylor series can be computed with DOWHILE with the restrictions. So it needs to be something more complicated. ----------- For example, here are two fragments of code that work correctly. Example 1: EXP function (an exercise using Taylor series) ; Taylor series (actually, Mclaurin series) for exp(F)=SUM of F**I/I! ; FI=F**I ; FACTORIAL=I! FI=1 FACTORIAL=1 TERM=1 SUM=1 I=1 DOWHILE (I<999.and.TERM>.000000000000001) FACTORIAL=FACTORIAL*I FI=FI*F TERM=FI/FACTORIAL SUM=SUM+TERM I=I+1 ENDDO Example 2: Steady state dose into Transit compartment. Past implied doses are summed until their contributions are negligible. DOSE, DOSETIME, IIVAL are set in $PK from AMT, TIME, II on the SS dose record. NN and KTR are set in $PK and are random variables. $DES INPT=0 ABI=1 ; set ABI to satisfy first DOWHILE condition I=1 DOWHILE (I<999 .and. ABI>.000000001) DELTAT=T-dosetime+(I-1)*IIVAL IPT=DOSE*deltat**NN*EXP(-KTR*deltat) INPT=INPT+IPT ABI=ABS(IPT) I=I+1 ENDDO DADT(1)=KINPT*INPT-KTR*A(1) .... -- Alison Boeckmann [email protected]
Aug 09, 2012 Alison Boeckmann Question about PK-PD models
Aug 10, 2012 Erik Olofsen RE: Question about PK-PD models