我试图将michaelis menten方程拟合到数据集以确定消失率以及数据允许时的IC50(Km)。除了浓度为0的第一个点,我正在变得合适,但是,我得到Km的负值,这是不正确的。我使用以下代码。
x <- c(0, 2.5, 5.0, 10.0, 25.0)
y <- c(4.91, 1.32, 1.18, 1.12, 1.09)
#########################Fit General Michaelis Menten Equation########################################################
model.mm <- nls(y ~ (Vmax*x/(Km+x)), data = data.frame(x,y),
start = list(Km=max(y)/2, Vmax = max(y)))
print(summary(model.mm))
#plot it
plot(y~x, type="p", lwd=2,
xlab="Lopinavir Concentrations (uM)", ylab="Efflux Ratio")
title("Lopinavir Transport in MDCK-MDR1 Cells")
lines(fitted(model.mm)~x, col="red")
非常感谢任何改进拟合和参数估计的建议。
感谢, Krina
答案 0 :(得分:0)
xlab的Michealis Menten双曲线=基质浓度和ylab =速度通常看起来像一个上升的双曲线到最大值。随着基板浓度的增加,您测量的参数看起来像指数衰减。我不确定Michealis Menten方程在这里运作得如此之好。你也不应该使用lines函数。它没有给你一个曲线。你应该使用曲线函数。
x < - c(0,2.5,5.0,10.0,25.0) y&lt; -c(4.91,1.32,1.18,1.12,1.09) mm&lt; - data.frame(x,y)
我认为你应该在将数据帧调用到函数之前制作数据帧。
model.mm&lt; - nls(y~Vmax * x /(Km + x),data = mm,start = list(Km = max(mm $ y)/ 2,Vmax = max(mm $ y) ))
图(y~x,type =“p”,lwd = 2,xlab =“Lopinavir浓度(uM)”,ylab =“流出比”,pch = 16,main =“Lopinavir在MDCK-MDR1细胞中的转运“)
摘要(model.mm)
公式:y~Vmax * x /(Km + x)
参数: 估计标准。误差t值Pr(&gt; | t |) Km -0.4772 6.6246 -0.072 0.947 Vmax 1.0678 2.1382 0.499 0.652
剩余标准误差:3自由度为2.835
收敛的迭代次数:4 实现收敛容差:6.634e-06
现在我认为曲线函数非常自我解释:
?曲线
曲线(x * 1.0678 /(x + -0.4772),col =“red”,lwd = 2,add = TRUE)
fx&lt; - function(x){x * 1.0678 /(x + -0.4772)}
范围(x)的 1 0 25
我们可以整合这个Michealis-Menten FUnction并计算曲线下的面积:
需要(pracma)
整合(fx,lower = 0,upper = 25) 积分错误(fx,lower = 0,upper = 25): 积分可能是不同的
这种分歧是因为你的情节看起来很像y =(1 / x),这是不同的。
如果你将x推离零点,y趋于无穷大,我们可以得到有限的答案。
整合(fx,lower = 0.5,upper = 25) 29.71809绝对错误&lt; 0.00069
但由于分歧原因,这种积分是值得怀疑的。
您可以使用梯形近似来估计散点图下的面积:
trapz(mm $ x,mm $ y) 1 33.2375
注意:我尝试将指数函数拟合到您的绘图中,但这不起作用。缺少大部分点时曲线下降太快。
我想我弄清楚了你的功能有什么问题。
类型:y =(x * v)/(x + K)
进入https://www.desmos.com/calculator
看看当你做K为负和K为正时会发生什么,当你做K和v为负时等等。
答案 1 :(得分:0)
感谢您的帮助,非常感谢。
我能够通过使用山脉方程来解决这个问题。
fo <- y ~ (Vmax*x^hill/((VC50^hill) + (x^hill)))
st <- c(Vmax=0.5, hill=1, VC50=0.3)
model.hill <- nls(fo, data = data.frame(x,y), start = st)
print(summary(model.hill))
co <- coef(model.hill)
plot(y~x, type="p", lwd=2,
xlab="Lopinavir Concentrations (uM)", ylab="Efflux Ratio")
title("Lopinavir Transport in MDCK-MDR1 Cells")
lines(fitted(model.hill)~x, col="red")