米氏方程 Km 与 Vmax 计算(非线性拟合 + 三种线性化对照)
求 Km 和 Vmax 的在线工具几乎都只做一件事:Lineweaver-Burk 双倒数作图。 而在四种常见算法里,它恰恰是最不该用来算参数的那一种。
双倒数把误差结构搞坏了
米氏方程 v = Vmax·[S] / (Km + [S]) 取倒数变成直线:
1/v = (Km/Vmax)·(1/[S]) + 1/Vmax
好处是能用尺子量斜率和截距——这是 1934 年没有计算机时的权宜之计。 代价是误差被重新分配了,而且分配得正好相反:
- 低 [S] 的点测得最不准(速率小、信噪比差),取倒数后 1/[S] 很大, 被推到图的最右端。回归直线的斜率主要由最右端的点决定—— 于是最不可靠的数据获得了最大的话语权,而且它的误差还被倒数放大了。
- 高 [S] 的点测得最准,取倒数后全都挤在靠近原点的一小团里, 几乎不影响拟合结果。
结论是明确的:能做非线性拟合就不要用任何线性化去算参数。 线性化今天仍然有用,但用途是看图判断偏离(比如是不是竞争性抑制), 不是读数。
四种算法并排看
| 方法 | 变换 | 问题 |
|---|---|---|
| 非线性拟合 | 不变换,直接对原始 (S, v) 最小二乘 | 没有。本工具的推荐值 |
| Hanes-Woolf | [S]/v 对 [S] |
线性化里最稳的一种 |
| Eadie-Hofstee | v 对 v/[S] |
v 出现在两个轴上,误差进了两边 |
| Lineweaver-Burk | 1/v 对 1/[S] |
低 [S] 误差被放大且权重最大 |
数据完全没有噪声时,四种方法给出的答案完全一样。 它们分歧的大小, 本身就是「这组数据经不经得起线性化」的一个读数——本工具会把四个 Km 的离散程度直接算出来。分歧大就说明:别报线性化的结果,报非线性拟合的。
报告时必须写清用了哪种
同一组带噪声的数据,四种方法算出的 Km 相差百分之几十是常事。 所以只写「Km = 0.34 mM」是不完整的,得写清是怎么得到的: 非线性拟合还是某种线性化、几个浓度点、重复几次。 换个方法就对不上,而看论文的人无从判断差异是生物学的还是算法的。
浓度范围不覆盖 Km,就别指望能定出 Km
这是比选算法更前置的问题。经验上 [S] 要跨越 Km 上下、大致落在 0.2 × Km 到 5 × Km 之间,至少五个点。原因从方程本身就能看出来:
- 只在 [S] ≪ Km 测:方程退化成
v ≈ (Vmax/Km)·[S],是条直线。 你能定出的只有 Vmax/Km 这个比值,两个参数各自都定不出来。 - 只在 [S] ≫ Km 测:
v ≈ Vmax,曲线已经平了。 你能定出 Vmax,但 Km 完全没有信息。
本工具会拿拟合出的 Km 回头检查你的浓度范围,不覆盖就直说。
相关工具
线性回归与由标准曲线反算未知样本见 标准曲线计算; 配底物母液与工作液见 稀释计算器; 把 % 与 mol/L 换来换去见 百分比浓度换算; 酶促反应体系的配液见 摩尔浓度换算。
常见问题
为什么不推荐用 Lineweaver-Burk 双倒数算 Km?
因为取倒数把误差结构搞坏了。低底物浓度的点本来测得最不准(速率小、信噪比差),取倒数后 1/[S] 很大、被推到图的最右端,而回归直线的斜率主要由最右端的点决定——最不可靠的数据获得了最大权重,误差还被倒数放大了。反过来,高浓度那些测得最准的点全挤在靠近原点的一小团里,几乎不影响结果。双倒数图今天仍然有用,但用途是看图判断偏离(比如区分抑制类型),不是读参数。
那该用哪种方法?
能做非线性拟合就用非线性拟合——直接对原始的 (浓度, 速率) 做最小二乘,不做任何变换,误差结构原样保留。这也是本工具给出的推荐值。如果一定要用线性化,Hanes-Woolf([S]/v 对 [S])是三种里最稳的;Eadie-Hofstee 的问题是 v 同时出现在两个轴上,测量误差进了两边。
四种方法算出来的 Km 不一样,哪个是对的?
数据完全没有噪声时四者完全一致——本工具的默认示例就是这样的精确数据,你可以看到四行结果一模一样。一旦有噪声它们就分开,**分歧的大小本身就是「这组数据经不经得起线性化」的读数**。分歧超过 10% 时应该报非线性拟合的值,并且在方法部分写清楚用的是哪种算法。
报告 Km 时要写哪些信息?
只写「Km = 0.34 mM」是不完整的。同一组带噪声的数据,四种算法算出的 Km 相差百分之几十是常事,所以必须写清:用的哪种拟合方法、几个浓度点、浓度范围是多少、重复了几次。否则别人拿你的数字和自己的比,无从判断差异是生物学的还是算法造成的。
底物浓度该怎么选?
要跨越 Km 上下,经验范围是 0.2 × Km 到 5 × Km,至少五个点。原因从方程本身就能看出来:只在 [S] 远小于 Km 的区间测,方程退化成一条直线 v ≈ (Vmax/Km)·[S],你只能定出 Vmax/Km 这个比值,两个参数各自都定不出来;只在 [S] 远大于 Km 测,曲线已经平了,能定 Vmax 但 Km 完全没有信息。本工具会拿拟合出的 Km 回头检查你的范围。
我还不知道 Km,怎么可能按 Km 选浓度?
先做一次粗测:浓度按 10 倍梯度铺开跨越三四个数量级,看速率在哪一段开始明显弯曲,那一段附近就是 Km 的量级。然后在那个量级上下重新设计密一些的梯度做正式实验。本工具对粗测数据同样能用——它会告诉你范围没覆盖 Km,那正是你需要的信息。
速率单位、浓度单位有要求吗?
没有,工具不做单位换算,只要求你自己前后一致。Km 的单位跟底物浓度走,Vmax 的单位跟速率走,输出会原样带上你填的单位。需要在 % 与 mol/L 之间换算底物浓度时用百分比浓度换算器。