Re: [NMusers] Cross-validation script in NM

From: Ron Keizer <ron.keizer_at_ucsf.edu>
Date: Fri, 5 Dec 2014 12:21:03 +0100

hi Pieter,

It is not exactly clear from the NONMEM manuals what information is
included in the MSFO file, or the exact mechanism that is used to
re-implement the model, so it's hard to say if this should really work the
way you expect it to. To my knowledge (and the manual), model specification
files are intended for restarting the estimation process, and not really
for analyses where you use a different dataset in the second estimation (or
simulation) step. For an analysis such as yours, or in fact any simulation
or re-estimation analysis, I would always do the data mangling outside of
NONMEM, e.g. in R or Perl. That way you will have full control over what is
going on, and you'll use NONMEM only for what it is good at (i.e.
estimation).

hope this helps,
Ron

----------------------------------------------
Ron Keizer, PharmD PhD
Dept. of Bioengineering & Therapeutic Sciences
University of California San Francisco (UCSF)
----------------------------------------------


On Fri, Dec 5, 2014 at 11:03 AM, Pieter Colin <Pieter.Colin_at_ugent.be> wrote=
:

> Dear Kajsa and Dennis
>
>
>
> Thank you for your thoughts on this.
>
> I know of (and have used several times in the past) the mentioned
> functionalities in PsN and PLT-tools.
>
> However, due to the specific nature of my problem, I’m afraid the=
se will
> not work for me.
>
>
>
> Allow me to further clarify my problem. (For clarity, I’ve includ=
ed a
> piece of my control stream at the bottom of this message.)
>
> As Dennis pointed out, I’m fitting a training group and use the f=
inal
> parameter estimates in a subsequent run to predict the plasmaconcentratio=
ns
> of the validation group.
>
> I failed to clarify this in my previous message, but I’m predicti=
ng the
> plasmaconcentrations for the validation group according to a TDM setting.
>
> This means that for the validation group MAXEVAL=0 and only the first
> through sample per ID is included in the dataset as an observation
> event(EVID=0 and MDV=0).
>
> It goes without saying that the objective is to accurately predict the
> other plasmaconcentrations (EVID=2 and MDV=1) for the IDs in the vali=
dation
> group.
>
>
>
> Now to get to the problem. I tried this approach with two separate contro=
l
> streams and it works.
>
> I.e. plasmaconcentrations are predicted for the validation group based on
> the post-hoc corrected final parameter estimates of the training group.
>
>
>
> However, when I combine these in a single control stream (as shown below)
> the time-varying covariates are not taken into account for the validation
> group.
>
> More specifically, the following statement (under $PK) is not evaluated
> for the IDs in the validation group (statement used to switch on/off an
> additional CL due to hemodialysis).
>
>
>
> CL_DIA = 0
>
> IF(DIALYSIS.EQ.1) CL_DIA = THETA(6)
>
>
>
> IND=0
>
> IF(IND_DIA.EQ.1) IND=1
>
>
>
> This causes the hemodialysis moments to be ignored by NM in the validatio=
n
> group when using the control stream as shown below.
>
> Since it worked for me using separate control streams, it seems that the
> problem is associated with the use of MSFO=… and $MSFI in the t=
raining and
> validation set, respectively.
>
> Do any of you have a specific solution for this problem or could shed som=
e
> light on specific behavior of the $MSFI option in NM which might be causi=
ng
> this?
>
>
>
> Kind regards,
>
>
>
> Pieter Colin
>
>
>
>
>
> $PROBLEM No covariates
>
> ;; 1. Based on:
>
> ;; COMMENT:
>
>
>
>
> ;------------------------------------------------------------------------=
---------
>
> ;----------------------- FIT XVAL
> --------------------------------------------
>
>
> ;------------------------------------------------------------------------=
---------
>
>
>
> $INPUT ID TIME DV CMT AMT RATE EVID MDV UVOL EXTRA IND_DIA OCC
>
> DIALYSIS ANALYSIS BV MISSING AGE WGT HGT BMI BSA SOFA M1F2 GF=
R
> XVAL
>
>
>
> $DATA RawdataCFP_cov_ext.csv
>
> IGNORE=_at_ IGNORE(MISSING.EQ.1) ;Exclude missing
> values
>
> IGNORE(CMT.GT.3) ;Exclude CSF sample
>
> IGNORE(XVAL.EQ.1) REWIND
>
>
>
> $SUBROUTINE ADVAN13 TOL=12
>
>
>
> $MODEL COMP(CENTRAL,DEFOBS,DEFDOSE) COMP(PERIPH)
>
> COMP(URINE,INITIALOFF)
>
>
>
> $PK
>
> ;------------- Calculation of Time After Dose ------------
>
>
>
> IF (EVID.EQ.1.OR.EVID.EQ.4) THEN
>
> TDOS=TIME
>
> TAD=0.0
>
> ENDIF
>
> IF (EVID.NE.1.AND.EVID.NE.4) TAD=TIME-TDOS
>
>
>
> TVCLOTHER =THETA(1)
>
> CLOTHER =TVCLOTHER*EXP(ETA(4))
>
>
>
> TVCL = THETA(2)
>
> CL = TVCL*EXP(ETA(1))
>
>
>
> TVV1 = THETA(3)
>
> V1 =TVV1*EXP(ETA(2))
>
>
>
> TVV2 =THETA(4)
>
> V2 =TVV2*EXP(ETA(3))
>
>
>
> TVQ =THETA(5)
>
> Q =TVQ
>
>
>
> ;------------- Dialysis submodel ------------------------
>
> CL_DIA = 0
>
> IF(DIALYSIS.EQ.1) CL_DIA = THETA(6)
>
>
>
> IND=0
>
> IF(IND_DIA.EQ.1) IND=1
>
>
>
> S1=V1
>
> S3=UVOL
>
>
>
> K10=CLOTHER/V1
>
> K12=Q/V1
>
> K21=Q/V2
>
> K13=CL/V1
>
> K11=CL_DIA/V1
>
>
>
> $DES
>
> DADT(1)=-K12*A(1)+K21*A(2)-K10*A(1)-K13*A(1)-K11*A(1)*IND
>
> DADT(2)=K12*A(1)-K21*A(2)
>
> DADT(3)=K13*A(1)
>
>
>
> $ERROR
>
> IPRED = 1E-3
>
> IF(F.GT.0) IPRED=F
>
>
>
> Y = IPRED*(1+EPS(1))
>
> IRES = DV-IPRED
>
> IWRES = IRES/(IPRED*SQRT(SIGMA(1,1)))
>
>
>
> IF(CMT.EQ.3) THEN
>
> Y = IPRED*(1+EPS(2))
>
> IRES = DV-IPRED
>
> IWRES = IRES/SQRT(IPRED*IPRED*SIGMA(2,2))
>
> ENDIF
>
>
>
> $THETA
>
> (1E-9,1.097450) ; CLOTHER; L/h
>
> (1E-9,2.124530) ; CL; L/h
>
> (1E-9,8.640870) ; V1; L
>
> (1E-9,18.58180) ; V2; L
>
> (1E-9,34.13580) ; Q; L/h
>
> (1E-9,4.046690) ; CL_DIA; L/h
>
>
>
> $OMEGA
>
> 1.265890 ; IIV_CL
>
> 0.387112 ; IIV_V1
>
> 0.186287 ; IIV_V2
>
> 0.371892 ; IIV_CLOTHER
>
>
>
> $SIGMA
>
> 0.090199 ; Proportional plasma
>
> 0.106711 ; Proportional urine
>
>
>
> $ESTIMATION SIG=2 MAX=9999 METHOD=1 SORT INTERACTION POSTHOC PRINT=
=1
>
> MSFO=run61.msf
>
>
>
>
> ;------------------------------------------------------------------------=
---------
>
> ;----------------------- POST HOC
> --------------------------------------------
>
>
> ;------------------------------------------------------------------------=
---------
>
>
>
> $PROBLEM PREDICT XVAL1
>
>
>
> $INPUT ID TIME DV CP CMT AMT RATE EVID MDV UVOL EXTRA IND_DIA OCC
>
> DIALYSIS ANALYSIS BV MISSING AGE WGT HGT BMI BSA SOFA M1F2 GF=
R
> TDM XVAL
>
>
>
> $DATA RawdataCFP_xval_ext.csv
>
> IGNORE=_at_
>
> IGNORE(MISSING.EQ.1) ;Exclude missing
> values
>
> IGNORE(CMT.GT.3) ;Exclude CSF sample
>
> IGNORE(XVAL.NE.1) REWIND
>
>
>
> $MSFI run61.msf
>
>
>
> $ESTIMATION SIG=2 MAX=0 METHOD=1 SORT INTERACTION POSTHOC PRINT=1
>
>
>
> …
>
>
>

Received on Fri Dec 05 2014 - 06:21:03 EST

This archive was generated by hypermail 2.3.0 : Fri Sep 27 2019 - 16:42:24 EDT