# [R] Michaelis-menten equation

joerg van den hoff j.van_den_hoff at fz-rossendorf.de
Tue Jul 19 12:51:36 CEST 2005

```Chun-Ying Lee wrote:
> 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.
>
> #-----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!!
>
>
>

it is not clear to me what you are trying to do:
you seem to have a time-concentration-curve in PKindex and you seem to
set up a derivative of this time dependency according
to some model in dCpdt. AFAIKS this scenario is  not directly related to
the situation described by the Michaelis-Menten-Equation which relates
some "input" concentration with some "product" concentration. If Vm and
Km are meant to be the canonical symbols,
what is Vd, a volume of distribution? it is impossible to see (at least
for me) what exactly you want to achieve.

(and in any case, I would prefer "nls" for a least squares fit instead
of 'optim').

joerg
> ------------------------------------------------------------------------
>
> ______________________________________________
> 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

```