From: Luann Phillips <*Luann.Phillips*>

Date: Thu, 29 Apr 2010 14:58:11 -0400

Xiao Hu,

Please see comments inserted within your code examples below.

Regards,

Luann Phillips

Xiao Hu wrote:

*>
*

*> Dear NMusers,
*

*>
*

*> I'm seeking inputs/advice on some M3 related questions. Any comments
*

*> and suggestions would be appreciated.
*

*>
*

*> I have some Phase 1 data on a drug, which I want to model with a M3
*

*> method. The LLQ is 10 and peak level is about 80 (it's a cytokine and
*

*> can't ask assay people to do a better job).
*

*>
*

*> I'm using NONMEM 7, therefore, can use PHI function directly.
*

*>
*

*> Below you can see my initial code (Code 1). I first modeled SIG as a
*

*> separate THETA(5). The estimated THETA(5) turned out to be 1.14E6.
*

*> Therefore, all the PREDs=0.5 with TYPE==2. I had to admire NONMEM
*

*> because it makes (LOQ-IPRE)/SIG close to zero and give me a politically
*

*> golden answer (Prob=0.5) on my LLQ data.
*

*>
*

*> Since SIG represents the variance of F, in my second try, I set
*

*> SIG=SD*SD and modeled log-tranformed data, because I'm using exponential
*

*> model on the ERROR. The code is following the initial code (Code 2).
*

*>
*

*> Here's my questions.
*

*>
*

*> 1. Is code 2 a theoretically correct approach? How is SIG generally
*

*> modeled based on your experience?
*

*> 2. Currently, I only included one BLQ post Tmax. The rest were ignored
*

*> (MDV=1). If I include one BLQ timepoint before Tmax, the model won't
*

*> run. If I include every BLQ time points after Tmax, the model won't
*

*> run. Is this acceptable? What's the general practice?
*

*> 3. What are the diagnostic tools for BLQ from the M3 method?
*

*> 4. If I model SIG using all the data, and fix it in the subsequent runs,
*

*> which use the same code as Code 1 with SIG fixed, will this be acceptable?
*

*>
*

*> Code 1:
*

*> $SUBROUTINES ADVAN2
*

*> $PK
*

*> MU_1=THETA(1)
*

*> MU_2=THETA(2)
*

*> MU_3=THETA(3)
*

*> MU_4=THETA(4)
*

*> SD=MU_4
*

*> KA=EXP(MU_1+ETA(1))
*

*> V=EXP(MU_2+ETA(2))
*

*> CL=EXP(MU_3+ETA(3))
*

*> K=CL/V
*

*> S2=V/1000
*

*> $ERROR
*

*******SIG = SD of variance which is defined as SD=MU_4 above

******* so I think you should have SIG=MU_4 or SIG=SD

******* instead of THETA(5)

******* Your code was using a separate estimate of variance for the

LOQ concentrations than for the > LOQ concentrations.

References show using the same variance for both types.

*> SIG=THETA(5)
*

*> LOQ=10
*

*> IPRE=F
*

*> IF(SIG==0) EXIT
*

*****I would move the calculations for DUM and CUMD inside the

IF statement for TYPE.EQ.2 to prevent unnecessary calculations.

****DUM = (LOQ-IPRE) / SQRT(Variance)

Since you are using a exponential error model which is equivalent

to the constant CV error model (Y=F+F*ERR) in NM, the SQRT(variance)

would be F*SIG so DUM=(LOQ-IPRE)/(F*SIG)

*> DUM=(LOQ-IPRE)/SIG
*

*> CUMD=PHI(DUM)
*

*> IF(TYPE.EQ.1) THEN
*

*> F_FLAG=0
*

*> Y= F*EXP(SD*ERR(1))
*

*> ENDIF
*

*> IF(TYPE.EQ.2) THEN
*

*> F_FLAG=1
*

*> Y=CUMD
*

*> ENDIF
*

*> $THETA
*

*> -1.868;[KA]
*

*> 11.9 ;[V]
*

*> 10;[CL]
*

*> 0.523;[SD]
*

*> 0.2
*

*> $OMEGA
*

*> 0.258
*

*> 0.177
*

*> 0.227
*

*> $SIGMA
*

*> 1 FIX
*

*> $EST METHOD=COND LAP INTERACTION MAXEVAL=9999 PRINT=5 FILE=PK.M3.COND.ext
*

*>
*

*> Code 2
*

*> $SUBROUTINES ADVAN2
*

*> $PK
*

*> MU_1=THETA(1)
*

*> MU_2=THETA(2)
*

*> MU_3=THETA(3)
*

*> MU_4=THETA(4)
*

*> SD=MU_4
*

*> SIG=SD*SD
*

*> KA=EXP(MU_1+ETA(1))
*

*> V=EXP(MU_2+ETA(2))
*

*> CL=EXP(MU_3+ETA(3))
*

*> K=CL/V
*

*> S2=V/1000; DOSE IN 1000 U, CONC in U, VOLUME IN mL
*

*> $ERROR
*

*> LOQ=LOG(10)
*

*****IF F=0 then LOG(F)= -Infinity so you probably don't want

to change IPRE=LOG(0) to 0. LOG(F)=0 corresponds to F=1.

You may want to try IPRE= -10 or -20 instead.

*> IF(F==0) THEN
*

*> IPRE=0
*

*> ELSE
*

*> IPRE=LOG(F)
*

*> ENDIF
*

*> IF(SIG==0) EXIT
*

*****In this case because the error model becomes additive,

DUM=(LOQ-IPRE)/SIG is correct.

*> DUM=(LOQ-IPRE)/SIG
*

*> CUMD=PHI(DUM)
*

*> IF(TYPE.EQ.1) THEN
*

*> F_FLAG=0
*

*> Y= LOG(F)+SD*ERR(1)
*

*> ENDIF
*

*> IF(TYPE.EQ.2) THEN
*

*> F_FLAG=1
*

*> Y=CUMD
*

*> ENDIF
*

*> $THETA
*

*> -1.868;[KA]
*

*> 11.9 ;[V]
*

*> 10;[CL]
*

*> 0.523;[SD]
*

*> $OMEGA
*

*> 0.258
*

*> 0.177
*

*> 0.227
*

*> $SIGMA
*

*> 1 FIX
*

*> $EST METHOD=COND LAP INTERACTION MAXEVAL=9999 PRINT=5 FILE=PK.LOG.COND.ext
*

*>
*

*> Sample Data for code 1:
*

*> Sample Data for code 2:
*

*>
*

*> Best regards,
*

*>
*

*> Xiao Hu (Shelley), Ph.D.
*

*> Scientist,
*

*> Development Pharmacokinetics & Disposition
*

*> Biogen Idec, Inc.
*

*> 14 Cambridge Center
*

*> Cambridge, MA 02142
*

*> Phone: 617-679-3586
*

*> Fax: 617-679-3463*

Received on Thu Apr 29 2010 - 14:58:11 EDT

Date: Thu, 29 Apr 2010 14:58:11 -0400

Xiao Hu,

Please see comments inserted within your code examples below.

Regards,

Luann Phillips

Xiao Hu wrote:

*******SIG = SD of variance which is defined as SD=MU_4 above

******* so I think you should have SIG=MU_4 or SIG=SD

******* instead of THETA(5)

******* Your code was using a separate estimate of variance for the

LOQ concentrations than for the > LOQ concentrations.

References show using the same variance for both types.

*****I would move the calculations for DUM and CUMD inside the

IF statement for TYPE.EQ.2 to prevent unnecessary calculations.

****DUM = (LOQ-IPRE) / SQRT(Variance)

Since you are using a exponential error model which is equivalent

to the constant CV error model (Y=F+F*ERR) in NM, the SQRT(variance)

would be F*SIG so DUM=(LOQ-IPRE)/(F*SIG)

*****IF F=0 then LOG(F)= -Infinity so you probably don't want

to change IPRE=LOG(0) to 0. LOG(F)=0 corresponds to F=1.

You may want to try IPRE= -10 or -20 instead.

*****In this case because the error model becomes additive,

DUM=(LOQ-IPRE)/SIG is correct.

Received on Thu Apr 29 2010 - 14:58:11 EDT