Problem of STS in NONMEM

7 messages 6 people Latest: Dec 22, 2015

Problem of STS in NONMEM

From: Anyue Yin Date: December 22, 2015 technical
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

Re: Problem of STS in NONMEM

From: Jeroen Elassaiss-Schaap Date: December 22, 2015 technical
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

RE: Problem of STS in NONMEM

From: Mats Karlsson Date: December 22, 2015 technical
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]

RE: Problem of STS in NONMEM

From: Joseph Standing Date: December 22, 2015 technical
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]

RE: Problem of STS in NONMEM

From: Joseph Standing Date: December 22, 2015 technical
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]]

Re: Problem of STS in NONMEM

From: Leonid Gibiansky Date: December 22, 2015 technical
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> >> >> >> >>