[R] Michaelis-menten equation

Peter Dalgaard p.dalgaard at biostat.ku.dk
Tue Jul 19 20:08:40 CEST 2005


Peter Dalgaard <p.dalgaard at biostat.ku.dk> writes:

> "Chun-Ying Lee" <u9370004 at cc.kmu.edu.tw> writes:
> 
> > Dear R users:
> >    I encountered difficulties in michaelis-menten equation. I found 
> > that when I use right model definiens, I got wrong Km vlaue, 
> > and I got right Km value when i use wrong model definiens. 
> > The value of Vd and Vmax are correct in these two models. 
> 
> How do you know what the correct value is? Are you sure that the other
> values are right?
> 
> I'm a bit rusty on MM, but are you sure your "right" model is right?
> Try doing a dimensional analysis on the ODE. I kind of suspect that
> Vd is entering in the wrong way. Since you're dealing in
> concentrations, should it enter at all (except via the conc. at time
> 0, of course)?
> 
> Not knowing the context, I can't be quite sure, but generally, I'd
> expect Vm*Km/(Km+y) to be the reaction rate, so that Vm is the maximum
> rate, attained when y is zero and Km is the conc. at half-maximum
> rate. This doesn't look quit like what you have. 

Hmm, sorry, no. I'm talking through a hole in my head there.

Vm*y/(Km+y) makes OK sense. Vm is what you get for large y - passing
from 1st order to 0th order kinetics. However, looking at the data

 plot(PKindex)
 abline(lm(conc~time,data=PKindex))

shows that they are pretty much on a straight line, i.e. you are 
in the domain of 0-order kinetics. So why are you expecting the rate
of decrease to have changed by roughly 3/4 (from 2/3*Vm/Vd at y=2*Km
to 1/2*Vm/Vd at y=Km when you reach 4.67)??
  
> > #-----right model definiens--------
> > PKindex<-data.frame(time=c(0,1,2,4,6,8,10,12,16,20,24),
> >        conc=c(8.57,8.30,8.01,7.44,6.88,6.32,5.76,5.20,4.08,2.98,1.89))
> > mm.model <- function(time, y, parms) { 
> >        dCpdt <- -(parms["Vm"]/parms["Vd"])*y[1]/(parms["Km"]+y[1]) 
> >        list(dCpdt)}
> > Dose<-300
> > modfun <- function(time,Vm,Km,Vd) { 
> >        out <- lsoda(Dose/Vd,time,mm.model,parms=c(Vm=Vm,Km=Km,Vd=Vd),
> >               rtol=1e-8,atol=1e-8)
> >           out[,2] } 
> > objfun <- function(par) { 
> >    out <- modfun(PKindex$time,par[1],par[2],par[3]) 
> >    sum((PKindex$conc-out)^2) } 
> > fit <- optim(c(10,1,80),objfun, method="Nelder-Mead)
> > print(fit$par)
> > [1] 10.0390733  0.1341544 34.9891829  #--Km=0.1341544,wrong value--
> > 
> > 
> > #-----wrong model definiens--------
> > #-----Km should not divided by Vd--
> > PKindex<-data.frame(time=c(0,1,2,4,6,8,10,12,16,20,24),
> >        conc=c(8.57,8.30,8.01,7.44,6.88,6.32,5.76,5.20,4.08,2.98,1.89))
> > mm.model <- function(time, y, parms) { 
> >    dCpdt <- -(parms["Vm"]/parms["Vd"])*y[1]/(parms["Km"]/parms["Vd"]+y[1]) 
> >    list(dCpdt)}
> > Dose<-300
> > modfun <- function(time,Vm,Km,Vd) { 
> > out <- lsoda(Dose/Vd,time,mm.model,parms=c(Vm=Vm,Km=Km,Vd=Vd),
> >             rtol=1e-8,atol=1e-8)
> >        out[,2] 
> > } 
> > objfun <- function(par) { 
> >     out <- modfun(PKindex$time,par[1],par[2],par[3]) 
> >     sum((PKindex$conc-out)^2)} 
> > fit <- optim(c(10,1,80),objfun, method="Nelder-Mead)
> > print(fit$par)
> > [1] 10.038821  4.690267 34.989239  #--Km=4.690267,right value--
> > 
> > What did I do wrong, and how to fix it?
> > Any suggestions would be greatly appreciated.
> > Thanks in advance!!
> > 
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 
> -- 
>    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
>   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
>  (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907




More information about the R-help mailing list