You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R绘制的剂量反应曲线中获取指定Y值对应的X轴剂量?

降解实验剂量反应曲线:Y=50对应X值的计算问题

我用R绘制降解实验的剂量反应曲线,想要像GraphPad PRISM那样获取底物剩余百分比为50%(Y=50)对应的X轴剂量浓度值。目前用代码预测的拐点EC50和GraphPad结果一致,但GraphPad给出Y=50对应的X值是195.391 nM,而我用drc包的ED()函数得到的还是拐点EC50值(129.998 nM)。所有响应值已基于DMSO归一化到100%,请问哪里操作错了?


使用R计算的代码及输出

library(drc)

df <- data.frame(
  x = c(1,3.2,10,32,100,320,1000,3200,10000113.891531792259),
  y = c(108.505,119.305,98.01,89.275,65.305,39.87,21.95,7.32,8.695))

model <- drm(y~x, data=df, fct=LL.4(names = c("Slope", "Lower Limit", "Upper Limit", "EC50 at IP")))
plot(model, type="all", col = "blue", ylab = "% Remaining", xlab = "Concentration (nM)")
axis(2, at = seq(0, 120, 5), labels = F)
axis(1, at = seq(100, 1000, 100), labels = F)

summary(model)

输出:

Model fitted: Log-logistic (ED50 as parameter) (4 parms)

Parameter estimates:

                         Estimate Std. Error t-value     p-value    
Slope:(Intercept)         0.82802    0.16507  5.0160    0.004049 ** 
Lower Limit:(Intercept)   3.47712    6.15672  0.5648    0.596627    
Upper Limit:(Intercept) 115.18939    5.38586 21.3874 0.000004144 ***
EC50 at IP:(Intercept)  129.99815   32.25388  4.0305    0.010017 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error:

 5.507845 (5 degrees of freedom)
ED(model, 50)

输出:

Estimated effective doses

       Estimate Std. Error
e:1:50  129.998     32.254

问题原因与解决方案

核心差异

你使用的LL.4模型是4参数log-logistic模型,其中的EC50参数是曲线拐点处的浓度(斜率最大点对应的X值);而GraphPad中Y=50对应的X值,是响应值达到绝对数值50%时的浓度,两者定义完全不同:

  • ED(model, 50)默认计算的是「相对于基线(Lower Limit)的有效剂量」,即(Y - Lower Limit)/(Upper Limit - Lower Limit) = 50%对应的X
  • 你需要的是「Y=50」这个绝对剩余百分比对应的X

正确计算代码

直接基于拟合模型的参数解方程,求解Y=50对应的X值:

# 提取模型拟合参数
params <- coef(model)
slope <- params[1]
lower_limit <- params[2]
upper_limit <- params[3]
ec50_inflection <- params[4]

# 代入4参数log-logistic公式解方程
x_y50 <- exp( log(ec50_inflection) + (1/slope)*log( (upper_limit - lower_limit)/(50 - lower_limit) - 1 ) )
x_y50

运行后会得到与GraphPad一致的结果(约195.39 nM)。

额外注意

你的数据中x向量最后一个值为10000113.891531792259,明显是输入错误(推测应为10000),该错误会影响模型拟合精度,建议修正后重新拟合模型再计算。


内容的提问来源于stack exchange,提问作者RanonKahn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:00:59