Dear all,
I got a problem when using NONMEM with STS method. My aim is to get
individual parameter estimates. I would like to let NONMEM estimate
individual parameter one subject by one subject. My control stream is
partially listed below, which is edited according to this thread
http://www.cognigencorp.com/nonmem/nmo/topic035.html
*$SUBROUTINES ADVAN1 TRANS2*
*$PK*
*CL = THETA(1) * EXP(ETA(1))*
*V = THETA(2) * EXP(ETA(2))*
*S1 = V*
*$ERROR*
*IPRED = F*
* W = F*
* Y = IPRED*(1+EXP(ETA(3))*EPS(1))*
* IRES = DV-IPRED*
*IWRES = IRES/W*
*$THETA*
*(10,20,30) ; CL*
*(10,80,100) ; V*
*$OMEGA*
*100 ; IIV CL*
*100 ; IIV V*
*100 ; IIV SIGMA*
*$SIGMA*
*1 FIXED ; PRO*
*$EST METHOD=1 INTER MAXEVAL=0 NOABORT SIG=3 PRINT=1 POSTHOC*
*$COV*
*$TABLE ID TIME AMT CMT DV PRED IPRED IWRES CL V ETA(1) ETA(2) ETA(3)
ONEHEADER NOPRINT FILE=sdtab101.tab*
The model can run successfully, and I got individual parameter estimates
from output file. I found that for each subject the individual parameter
estimate changed if I change the initial value of THETA. It seems that
NONMEM regarded the initial value fixed (just like a fixed typical value).
But I expected NONMEM to estimate individual parameters based on individual
data rather than the initial value. Is there anything wrong with the code?
Thanks in advance.
Anyue
Problem of STS in NONMEM
7 messages
6 people
Latest: Dec 22, 2015
Hi Anyue,
You need to amend MAXEVAL=0 in $EST (I suggest MAXEVAL=9999) in order to allow
estimation.
Kind regards,
Richard
Richard Mills PhD
Senior Scientist, PKPDM&S
[ http://emailsignature/stationary/Icon_Development_Solutions.gif]
Dear Anyue,
It has been a long time since I used this method. Nowadays NONMEM has
much added functionality, such as the non-parameteric step and the
possibility to repeat problems over individuals in your dataset. My
advise would actually be to use those. The latter especially gives you a
much cleaner implementation of extended least squares if that is what
you are looking for.
Anyway, your code seems fine. Your entries into $THETA and $SIGMA
however do matter. I would suggest to run this once, and than take the
median of parameters and input that into $THETA. Also take the variance
of residuals and put that number into $SIGMA. Now run it again, and the
result should be unbiased. I do not have a reference for this recipe,
please use this at your own discretion.
Hope this helps,
Jeroen
http://pd-value.com
[email protected]
@PD_value
+31 6 23118438
-- More value out of your data!
Quoted reply history
On 12/22/2015 07:36 AM, Anyue Yin wrote:
> Dear all,
>
> I got a problem when using NONMEM with STS method. My aim is to get
> individual parameter estimates. I would like to let NONMEM estimate
> individual parameter one subject by one subject. My control stream is
> partially listed below, which is edited according to this thread
> http://www.cognigencorp.com/nonmem/nmo/topic035.html
>
> /$SUBROUTINES ADVAN1 TRANS2/
> /
> /
> /$PK/
> /CL = THETA(1) * EXP(ETA(1))/
> /V = THETA(2) * EXP(ETA(2))/
> /S1 = V/
> /
> /
> /$ERROR/
> /IPRED = F/
> / W = F/
> / Y = IPRED*(1+EXP(ETA(3))*EPS(1))/
> / IRES = DV-IPRED/
> /IWRES = IRES/W/
> /
> /
> /$THETA/
> /(10,20,30) ; CL/
> /(10,80,100) ; V/
> /
> /
> /$OMEGA/
> /100 ; IIV CL/
> /100 ; IIV V/
> /100 ; IIV SIGMA/
> /
> /
> /$SIGMA/
> /1 FIXED ; PRO/
> /$EST METHOD=1 INTER MAXEVAL=0 NOABORT SIG=3 PRINT=1 POSTHOC/
> /$COV/
> /$TABLE ID TIME AMT CMT DV PRED IPRED IWRES CL V ETA(1) ETA(2) ETA(3)
> ONEHEADER NOPRINT FILE=sdtab101.tab/
>
> The model can run successfully, and I got individual parameter
> estimates from output file. I found that for each subject the
> individual parameter estimate changed if I change the initial value
> of THETA. It seems that NONMEM regarded the initial value fixed (just
> like a fixed typical value). But I expected NONMEM to estimate
> individual parameters based on individual data rather than the initial
> value. Is there anything wrong with the code? Thanks in advance.
>
> Anyue
Dear Anyue,
I don’t know what you mean by “the individual parameter estimate changed if I
change the initial value of THETA”
If you mean that individual ETA estimates change, that is expected when you
change THETA. For CL and V to be the same, ETA need to change when THETA
change. It may be that you are at local minima for EBEs. You may want to add
MCETA=1000 on the $EST line in order to test more initial estimates. I would
use MAXEVAL=0, not MAXEVAL=9999. Possibly I would use MAXEVAL=9999 after having
fixed $OMEGA parameters to the high values you use now.
Best regards,
Mats
Mats Karlsson, PhD
Professor of Pharmacometrics
Dept of Pharmaceutical Biosciences
Faculty of Pharmacy
Uppsala University
Box 591
75124 Uppsala
Phone: +46 18 4714105
Fax + 46 18 4714003
http://www.farmbio.uu.se/research/researchgroups/pharmacometrics/
Quoted reply history
From: [email protected] [mailto:[email protected]] On
Behalf Of Mills, Richard
Sent: Tuesday, December 22, 2015 8:54 AM
To: Anyue Yin; [email protected]
Subject: RE: [NMusers] Problem of STS in NONMEM
Hi Anyue,
You need to amend MAXEVAL=0 in $EST (I suggest MAXEVAL=9999) in order to allow
estimation.
Kind regards,
Richard
Richard Mills PhD
Senior Scientist, PKPDM&S
[ http://emailsignature/stationary/Icon_Development_Solutions.gif]
Dear Anyue,
I think you are trying to make a short-cut to getting individual parameter estimates in one go. It maybe possible for someone more intelligent than me, but can I suggest just doing it the long way round by fitting the model to each individual in turn. Something like this should work if you use R:
two.st.par <- NULL
for(i in c(1:10)){
all.data <- read.csv("ALLDATA.csv",h=T)
one.data <- all.data[all.data$ID=i,]
write.csv(one.data,"i.data.csv",row.names=F,quote=F) # set $DATA i.data.csv in your control stream
# Summons NONMEM - I think in windows you might use shell rather than system?
system("nmfe73 run1.mod run1.lst",wait=TRUE) # Set $OMEGA 0 FIX in your model file, estimate residual with e.g. $SIGMA 0.1
param.out <- read.table("run1.ext",skip=1,h=T)
param.out <- param.out[param.out$ITERATION=-1000000000,]
param.out <- c(param.out$THETA1,param.out$THETA2)
two.st.par <- rbind(two.st.par,param.out)
}
then two.st.par contains individual parameter ests for each individual.
Best wishes,
Joe
Joseph F Standing
MRC Fellow, UCL Institute of Child Health
Antimicrobial Pharmacist, Great Ormond Street Hospital
Tel: +44(0)207 905 2370
Mobile: +44(0)7970 572435
Quoted reply history
________________________________________
From: owner-nmusers_at_globomaxnm.com [owner-nmusers_at_globomaxnm.com] On Behalf Of Anyue Yin [anyueyin929_at_gmail.com]
Sent: 22 December 2015 10:32
To: Mats Karlsson; Mills, Richard; Jeroen Elassaiss-Schaap (PD-value B.V.); R.terHeine_at_radboudumc.nl
Cc: nmusers_at_globomaxnm.com
Subject: Re: [NMusers] Problem of STS in NONMEM
Dear all,
Thanks for replying me.
I am trying to carry out the first stage of Standard Two Stage estimation method in NONMEM (i.e. estimate individual parameter by ID). For the sake of argument, let's assume that I have a data file which includes 10 subjects (ID from 1 to 10). Now I wish to estimate individual parameter by fitting each individual data, so I will be able to get 10 individual parameter estimates. But I found that these 10 individual parameter estimates were all around the initial value what I assigned to the THETA. For example, if I assign 20 to the initial value of THETA, then these 10 parameter estimates are all around 20. If I assign 30, then all around 30... It looks like NONMEM uses initial value of THETA as prior to estimate individual parameters. What I expect is to estimate individual parameters by ID, as if these 10 subjects are separated into 10 data file and estimate 10 times to get each result. So the key point of my question is individual parameter estimation by the first stage of STS in NONMEM. Thank you very much.
Sincerely,
Anyue
On Tue, Dec 22, 2015 at 5:33 PM, Mats Karlsson <Mats.Karlsson_at_farmbio.uu.se<mailto:Mats.Karlsson_at_farmbio.uu.se>> wrote:
Dear Anyue,
I dont know what you mean by the individual parameter estimate changed if I change the initial value of THETA
If you mean that individual ETA estimates change, that is expected when you change THETA. For CL and V to be the same, ETA need to change when THETA change. It may be that you are at local minima for EBEs. You may want to add MCETA00 on the $EST line in order to test more initial estimates. I would use MAXEVAL=0, not MAXEVAL99. Possibly I would use MAXEVAL99 after having fixed $OMEGA parameters to the high values you use now.
Best regards,
Mats
Mats Karlsson, PhD
Professor of Pharmacometrics
Dept of Pharmaceutical Biosciences
Faculty of Pharmacy
Uppsala University
Box 591
75124 Uppsala
Phone: +46 18 4714105<tel:%2B46%2018%204714105>
Fax + 46 18 4714003<tel:%2B%2046%2018%204714003>
http://www.farmbio.uu.se/research/researchgroups/pharmacometrics/
From: owner-nmusers_at_globomaxnm.com<mailto:owner-nmusers_at_globomaxnm.com> [mailto:owner-nmusers_at_globomaxnm.com<mailto:owner-nmusers_at_globomaxnm.com>] On Behalf Of Mills, Richard
Sent: Tuesday, December 22, 2015 8:54 AM
To: Anyue Yin; nmusers_at_globomaxnm.com<mailto:nmusers_at_globomaxnm.com>
Subject: RE: [NMusers] Problem of STS in NONMEM
Hi Anyue,
You need to amend MAXEVAL=0 in $EST (I suggest MAXEVAL99) in order to allow estimation.
Kind regards,
Richard
Richard Mills PhD
Senior Scientist, PKPDM&S
[cid:image001.jpg_at_01D13CA4.38DCE9C0]
Dear Anyue,
I think you are trying to make a short-cut to getting individual parameter
estimates in one go. It maybe possible for someone more intelligent than me,
but can I suggest just doing it the long way round by fitting the model to each
individual in turn. Something like this should work if you use R:
two.st.par <- NULL
for(i in c(1:10)){
all.data <- read.csv("ALLDATA.csv",h=T)
one.data <- all.data[all.data$ID==i,]
write.csv(one.data,"i.data.csv",row.names=F,quote=F) # set $DATA i.data.csv
in your control stream
# Summons NONMEM - I think in windows you might use shell rather than system?
system("nmfe73 run1.mod run1.lst",wait=TRUE) # Set $OMEGA 0 FIX in your model
file, estimate residual with e.g. $SIGMA 0.1
param.out <- read.table("run1.ext",skip=1,h=T)
param.out <- param.out[param.out$ITERATION==-1000000000,]
param.out <- c(param.out$THETA1,param.out$THETA2)
two.st.par <- rbind(two.st.par,param.out)
}
then two.st.par contains individual parameter ests for each individual.
Best wishes,
Joe
Joseph F Standing
MRC Fellow, UCL Institute of Child Health
Antimicrobial Pharmacist, Great Ormond Street Hospital
Tel: +44(0)207 905 2370
Mobile: +44(0)7970 572435
Quoted reply history
________________________________________
From: [email protected] [[email protected]] On Behalf Of
Anyue Yin [[email protected]]
Sent: 22 December 2015 10:32
To: Mats Karlsson; Mills, Richard; Jeroen Elassaiss-Schaap (PD-value B.V.);
[email protected]
Cc: [email protected]
Subject: Re: [NMusers] Problem of STS in NONMEM
Dear all,
Thanks for replying me.
I am trying to carry out the first stage of Standard Two Stage estimation
method in NONMEM (i.e. estimate individual parameter by ID). For the sake of
argument, let's assume that I have a data file which includes 10 subjects (ID
from 1 to 10). Now I wish to estimate individual parameter by fitting each
individual data, so I will be able to get 10 individual parameter estimates.
But I found that these 10 individual parameter estimates were all around the
initial value what I assigned to the THETA. For example, if I assign 20 to the
initial value of THETA, then these 10 parameter estimates are all around 20. If
I assign 30, then all around 30... It looks like NONMEM uses initial value of
THETA as prior to estimate individual parameters. What I expect is to estimate
individual parameters by ID, as if these 10 subjects are separated into 10 data
file and estimate 10 times to get each result. So the key point of my question
is individual parameter estimation by the first stage of STS in NONMEM. Thank
you very much.
Sincerely,
Anyue
On Tue, Dec 22, 2015 at 5:33 PM, Mats Karlsson
<[email protected]<mailto:[email protected]>> wrote:
Dear Anyue,
I don’t know what you mean by “the individual parameter estimate changed if I
change the initial value of THETA”
If you mean that individual ETA estimates change, that is expected when you
change THETA. For CL and V to be the same, ETA need to change when THETA
change. It may be that you are at local minima for EBEs. You may want to add
MCETA=1000 on the $EST line in order to test more initial estimates. I would
use MAXEVAL=0, not MAXEVAL=9999. Possibly I would use MAXEVAL=9999 after having
fixed $OMEGA parameters to the high values you use now.
Best regards,
Mats
Mats Karlsson, PhD
Professor of Pharmacometrics
Dept of Pharmaceutical Biosciences
Faculty of Pharmacy
Uppsala University
Box 591
75124 Uppsala
Phone: +46 18 4714105<tel:%2B46%2018%204714105>
Fax + 46 18 4714003<tel:%2B%2046%2018%204714003>
http://www.farmbio.uu.se/research/researchgroups/pharmacometrics/
From: [email protected]<mailto:[email protected]>
[mailto:[email protected]<mailto:[email protected]>] On
Behalf Of Mills, Richard
Sent: Tuesday, December 22, 2015 8:54 AM
To: Anyue Yin; [email protected]<mailto:[email protected]>
Subject: RE: [NMusers] Problem of STS in NONMEM
Hi Anyue,
You need to amend MAXEVAL=0 in $EST (I suggest MAXEVAL=9999) in order to allow
estimation.
Kind regards,
Richard
Richard Mills PhD
Senior Scientist, PKPDM&S
[cid:[email protected]]
You may try to remove eta3. As you set it now, you allow very large residual
error, and nonmem returns initial estimates as final
Leonid
Quoted reply history
> On Dec 22, 2015, at 5:32 AM, Anyue Yin <[email protected]> wrote:
>
> Dear all,
>
> Thanks for replying me.
>
> I am trying to carry out the first stage of Standard Two Stage estimation
> method in NONMEM (i.e. estimate individual parameter by ID). For the sake of
> argument, let's assume that I have a data file which includes 10 subjects (ID
> from 1 to 10). Now I wish to estimate individual parameter by fitting each
> individual data, so I will be able to get 10 individual parameter estimates.
> But I found that these 10 individual parameter estimates were all around the
> initial value what I assigned to the THETA. For example, if I assign 20 to
> the initial value of THETA, then these 10 parameter estimates are all around
> 20. If I assign 30, then all around 30... It looks like NONMEM uses initial
> value of THETA as prior to estimate individual parameters. What I expect is
> to estimate individual parameters by ID, as if these 10 subjects are
> separated into 10 data file and estimate 10 times to get each result. So the
> key point of my question is individual parameter estimation by the first
> stage of STS in NONMEM. Thank you very much.
>
> Sincerely,
> Anyue
>
>> On Tue, Dec 22, 2015 at 5:33 PM, Mats Karlsson <[email protected]>
>> wrote:
>> Dear Anyue,
>>
>>
>>
>> I don’t know what you mean by “the individual parameter estimate changed if
>> I change the initial value of THETA”
>>
>>
>>
>> If you mean that individual ETA estimates change, that is expected when you
>> change THETA. For CL and V to be the same, ETA need to change when THETA
>> change. It may be that you are at local minima for EBEs. You may want to add
>> MCETA=1000 on the $EST line in order to test more initial estimates. I would
>> use MAXEVAL=0, not MAXEVAL=9999. Possibly I would use MAXEVAL=9999 after
>> having fixed $OMEGA parameters to the high values you use now.
>>
>>
>>
>> Best regards,
>>
>> Mats
>>
>>
>>
>>
>>
>> Mats Karlsson, PhD
>>
>> Professor of Pharmacometrics
>>
>>
>>
>> Dept of Pharmaceutical Biosciences
>>
>> Faculty of Pharmacy
>>
>> Uppsala University
>>
>> Box 591
>>
>> 75124 Uppsala
>>
>>
>>
>> Phone: +46 18 4714105
>>
>> Fax + 46 18 4714003
>>
>> www.farmbio.uu.se/research/researchgroups/pharmacometrics/
>>
>>
>>
>> From: [email protected] [mailto:[email protected]] On
>> Behalf Of Mills, Richard
>> Sent: Tuesday, December 22, 2015 8:54 AM
>> To: Anyue Yin; [email protected]
>> Subject: RE: [NMusers] Problem of STS in NONMEM
>>
>>
>>
>> Hi Anyue,
>>
>>
>>
>> You need to amend MAXEVAL=0 in $EST (I suggest MAXEVAL=9999) in order to
>> allow estimation.
>>
>>
>>
>> Kind regards,
>>
>> Richard
>>
>> Richard Mills PhD
>> Senior Scientist, PKPDM&S
>>
>> <image001.jpg>
>>
>>
>>
>>