[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