Re: NONMEM code for Mixture Model
Dear Huali,
I am cutting out the unhappy portion of our discussion of this week-end,
and come back to your fundamental question as I understand it: You have
patients of different disease states and you suspect that the patients are
divided into groups (with different Vm point estimates but also with
different between-patient variances of Vm) on the basis of their disease
state. You seem to have a way to subdivide your patients into, let's say
two groups, on the basis of their disease and by NOT employing modeling.
Now, you want to include that knowledge into your NONMEM model, but you do
not exactly know how to do this and whether you are justified to do this.
From our previous exchange you have learned the HOW. Therefore, we are now
left with the question,whether you are justified.
I propose that you build your MIXTURE model as we discussed it and you
record in the output table for each patient the membership in population 1
or population 2 (this is the EST variable in my code). Then you compare
these memberships with your prior knowledge of different disease states
(let's say "without" and "with") with a standard statistical test. If that
test tells you that population membership determined by NONMEM and disease
state defined outside NONMEM are correlated, then you seem to be justified
to define two different between-patient variables (ETAs) on the basis of
disease state for one and the same structural model parameter (in your
case Vm), and use the unusual code you put up for discussion:
VM = THETA(1)*TYPE*EXP(ETA(1))+THETA(2)*(1-TYPE)*EXP(ETA(2))
Where, TYPE =0 for patients without this disease and TYPE=1 for patients
with this disease.
You still have the option to compare this model with one where
ETA(1)=ETA(2), and ask the question whether the two different ETAs are
justified (watch out you cannot use the log(likelihood) test and must use
goodness-of-fit and/or predictive performance criteria instead).
I hope my proposals are useful to you,
please, tell us about your findings,
Joachim
__________________________________________
Joachim GREVEL, Ph.D.
Merck Serono S.A. - Genve
Human Pharmacology
1202 Geneva
Tel: +41.22.414.4751
Fax: +41.22.414.3059
Email: joachim.grevel
Joachim.Grevel
Sent by: owner-nmusers
03/13/2009 08:23 AM
To
nmusers
cc
Subject
Re: [NMusers] NONMEM code for Mixture Model
Dear Huali,
you also need some code which specifies what is different between the
populations. The differences could be ETAs (but do not have to be!) or
certain factors which allow a PK parameter to have a different typical
value in one population.
EST=MIXEST
IF(MIXNUM.EQ.2)THEN
V1=TVV1*EXP(ETA(3))
VM=THETA(x)*TVVM*EXP(ETA(4))
ELSE
V1=TVV1*EXP(ETA(1))
VM=TVVM*EXP(ETA(2))
ENDIF
The for the $OMEGA block you have two options:
either:
$OMEGA BLOCK(2) 0.1 ;ETA1 for V1 for population 1
0.01 0.1 ;ETA2 for VM for population 1
$OMEGA BLOCK(2) SAME ;ETA3 ETA4 for population 2
or:
$OMEGA BLOCK(2) 0.1 ;ETA1 for V1 for population 1
0.01 0.1 ;ETA2 for VM for population 1
$OMEGA BLOCK(2) 0.1 ;ETA3 for V1 for population 2
0.01 0.1 ;ETA4 for VM for population 2
But you still face a more fundamental question: Why do you want to define
two populations when you already know that "patients in different disease
states seems have different distribution of clearance". I use the Mixture
models solely when the source of variability is still unknown and when it
is clear that a normal distribution will not be adequate (ETABAR message
with p<0.05). In you case I would build the knowledge about the influence
of the disease states directly into the code which specifies only one
population.
Good luck,
Joachim
__________________________________________
Joachim GREVEL, Ph.D.
Merck Serono S.A. - Genve
Human Pharmacology
1202 Geneva
Tel: +41.22.414.4751
Fax: +41.22.414.3059
Email: joachim.grevel
nidal.alhuniti
Sent by: owner-nmusers
03/12/2009 08:44 PM
To
Huali Wu <hualiw
cc
nmusers
Subject
Re: [NMusers] NONMEM code for Mixture Model
Hi Huali,
You could use $MIX. Please see the NM help files for $MIX. You have to
specify the number of populations (in your case 2) so
$MIX
NSPOP=2
P(1)=THETA(4)
P(2)=1.-THETA(4)
Then use
EST= MIXEST
Hopefully this helps.
Best,
Nidal
Nidal AL-Huniti, PhD
Associate Director, Modeling and Simulations
ICON Development Solutions SM
On 3/12/09, Huali Wu <hualiw
Dear NMusers:
I am working on dataset with high variability on clearance and patients in
different disease states seems have different distribution of clearance.
So I want to try the mixture model but I don't know how to do the coding.
I listed the code of my base model as below:
$PROB 1hr IV INFUSION SINGLE DOSE WITHOUT COVARIATES
$DATA data01.CSV IGNORE=C
$INPUT ID TIME DV AMT RATE MDV
$SUBROUTINES ADVAN9 TRANS1 TOL=5
$MODEL NPAR=3, NCOMP=1, COMP=(CENTRAL,DEFOBS)
$PK
V1 = THETA(1)*EXP(ETA(1))
VM = THETA(2)*EXP(ETA(2))
KM = THETA(3)
S1 = V1
$ERROR
Y=F+F*EPS(1)+EPS(2)
IPRED=F
IRES=DV-IPRED
IF(AMT.NE.0)W=1
IF(AMT.EQ.0)W=F
IWRES=IRES/W
$DES
C1 = A(1)/V1
DADT(1) = - C1*VM/(KM+C1)
$THETA (0, 4.47) (0, 155) (0, 1380)
$OMEGA BLOCK (2)
0.5
0.3 0.9
$SIGMA (0.01) (0.1)
$EST POSTHOC METHOD=1 MAXEVAL90 PRINT=5
$COV
$TABLE ID TIME DV AMT RATE V1 VM KM IWRES IPRED NOPRINT FILE=TAB4
ONEHEADER
$SCAT (RES WRES) VS TIME BY ID
Any suggestion will be highly appreciated!
Best regards,
Huali
This message and any attachment are confidential and may be privileged or
otherwise protected from disclosure. If you are not the intended
recipient, you must not copy this message or attachment or disclose the
contents to any other person. If you have received this transmission in
error, please notify the sender immediately and delete the message and any
attachment from your system. Merck KGaA, Darmstadt, Germany and any of its
subsidiaries do not accept liability for any omissions or errors in this
message which may arise as a result of E-Mail-transmission or for damages
resulting from any unauthorized changes of the content of this message and
any attachment thereto. Merck KGaA, Darmstadt, Germany and any of its
subsidiaries do not guarantee that this message is free of viruses and
does not accept liability for any damages caused by any virus transmitted
therewith.
Click http://disclaimer.merck.de to access the German, French, Spanish and
Portuguese versions of this disclaimer.