Sam,
I just noticed that the names I chose for some of the parameters didn't
really match the way they were used in the code. A better way of writing
the code is shown below. I also forgot to mention in my last email that
if you use parameter names in the comment text then there is no need to
also write numbers in the comment text to remind you of the array
indices. When there are many parameters (as in your example) I run out
of fingers and toes to do the counting so its much easier to let WFN do
the work (computers are good at counting)!
$PROB POPPK MODEL
$INPUT C ID TIME AMT DV CMT EVID AGE SEX RACE SJC TJC WBC ALB
MTX ICRP IWGT RATE MDV IRP TSLD PTIM SMOK ETOH DIAB DROP
$DATA pktest.csv IGNORE=C
$SUBROUTINES ADVAN3 TRANS4
$PK
STDY=12
IF (ID.GT.14000.AND.ID.LT.15000) STDY=14
IF (ID.GT.15000) STDY=31
WHT=0
IF (RACE.EQ.1) WHT=1
BLK=0
IF (RACE.EQ.2) BLK=0
ASN=0
IF (RACE.EQ.3) ASN=1
OTH=0
IF (RACE.EQ.4.OR.RACE.EQ.2) OTH=1
TVV1 = POP_V*(IWGT/70)**IWGT_V
V1 = TVV1*EXP(PPV_V)
TVCL = POP_CL
TVCL = TVCL*(IWGT/70)**IWGT_CL*(AGE/35)**FAGE*(1+FSEX*SEX)
TVCL = TVCL*(1+FBLK*BLK)*(1+FASN*ASN)*(1+FOTH*OTH)
TVCL = TVCL*(ICRP)**FICRP*(1+FIRP*IRP)*(1+FMTX*MTX)
TVCL = TVCL*(ALB/4.2)**FALB*((SJC+1)/14)**FSJC*(TJC/23)**FTJC
TVCL = TVCL*(1+DIAB*FDIAB)*(1+SMOK*FSMOK)*(WBC/7.5)**FWBC
CL = TVCL*EXP(PPV_CL)
K = CL/V1
TVQ = POP_Q*(IWGT/70)**IWGT_Q
Q = TVQ*EXP(PPV_Q)
K12 = TVQ/TVV1
TVV2 = POP_V2*(IWGT/70)**IWGT_V3
V2 = TVV2*EXP(PPV_V2)
K21 = TVQ/TVV2
S1 = V1 ; Dose = mg, Conc = ug/mL, Volume = L
$ERROR
W=SQRT(RUV_PROP**2*F**2+RUV_ADD**2)
IF (STDY.EQ.12) LOQ=0.2
IF (STDY.GT.12) LOQ=0.039
IF (F.GT.0) THEN
Y=F+W*EPS1
IPRED=F
IRES=DV-IPRED
IWRES=IRES/W
ELSE
Y=0
IPRED=0
IRES=0
IWRES=0
ENDIF
$THETA
(0, 3.99) ;POP_V KEEP 1 : V
(0, 0.623) ;POP_CL KEEP 2 : CL
(0, 0.229) ;POP_Q KEEP 3 : Q
(0, 2.52) ;POP_V2 KEEP 4 : V2
(0.312) ;RUV_PROP KEEP 5 : PROP ERR
(0 FIX) ;RUV_ADD KEEP 6 : ADDITIVE ERR
(0 FIX) ;POP_K23 KEEP 7 : K23
(0 FIX) ;POP_K32 KEEP 8 : K32
(0.513) ;IWGT_V KEEP 9 : IWGT ON V
(0.512) ;IWGT_CL KEEP 10 : IWGT ON CL
(-0.188) ;FAGE 11 : AGE
(-1,0.114) ;FSEX 12 : SEX
(0 FIX) ;FBLK 13 : BLK
(-1, 0.0699) ;FASN 14 : ASN
(-1, 0.0193) ;FOTH 15 : OTH
(0.0105) ;FICRP 16 : ICRP
(-1, 0.333) ;FIRP 17 : IRP
(-1, -0.0869) ;FMTX 18 : MTX
(-0.769) ;FALB 19 : ALB
(0.0126) ;FSJC 20 : SJC
(0 FIX) ;FTJC 21 : TJC
(-1, 0.106) ;FDIAB 22 : DIAB
(-1, 0.0319) ;FSMOK 23 : SMOK
(0.037) ;FWBC 24 : WBC
(0.555) ;IWGT_Q KEEP 25 : IWGT ON Q
(0.528) ;IWGT_V3 KEEP 26 : IWGT ON V3
$OMEGA BLOCK(2)
0.131 ; PPV_V
0.0666 0.163; PPV_CL
$OMEGA (0 FIX) ; PPV_Q 3: IIV - K12
$OMEGA (0.105) ; PPV_V2 4: IIV - K21
$SIGMA
1 FIX ; EPS1
$ESTIMATION MAXEVAL=0 PRINT=10 METHOD=1 INT NOABORT
;$COV PRINT=E MATRIX=S
$TABLE ID TIME DV WRES IRES CWRES IWRES IPRED ETA1 ETA2 ETA3 ETA4 EVID
NOPRINT ONEHEADER FILE=fit4.tab
$TABLE ID STDY ETA1 ETA2 ETA3 ETA4
CL V1 Q V2 TIME EVID NOPRINT NOAPPEND
ONEHEADER FILE=patab4
--
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
tel:+64(9)923-6730 fax:+64(9)373-7090 mobile:+64(21)46 23 53
email: n.holf...@auckland.ac.nz
http://www.fmhs.auckland.ac.nz/sms/pharmacology/holford