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

R语言基于ELISA标准曲线点对点法通过OD值计算浓度的实现方法

问题解答

1. 计算方法的正式名称

你提到的「点对点绘图法计算浓度」的正式数学名称是反线性插值,属于插值计算的一类。普通线性插值是通过已知横坐标(x)推算对应纵坐标(y),本场景下是通过测得的纵坐标(OD值,y)反推对应的横坐标(浓度,x),完全匹配试剂盒要求的相邻标准品点连线、匹配位置计算浓度的逻辑。

试剂盒要求说明:OD高于最高标准品Cal1的样本无需报告浓度值,本实现默认对该类样本返回NA。

2. R语言实现代码

2.1 实现逻辑

  • 先对标准品数据按OD值升序排序,满足插值函数对输入值的单调性要求
  • 调用R基础包内置的approxfun()函数构建线性插值器,无需额外安装依赖包
  • 直接调用插值器批量计算所有未知OD对应的浓度值,无需额外拟合模型或生成可视化图表

2.2 完整可运行代码

# 加载数据处理包(若已安装可直接运行)
library(data.table)

# 输入标准曲线数据
scdt <- data.table(id = c("Cal1", "Cal2", "Cal3", "Cal4"), 
                   conc = c(200, 100, 25, 5), 
                   od = c(1.783, 1.395, 0.594, 0.164))
# 待计算的未知OD值
unknowns <- c(0.015, 0.634, 0.891, 1.510, 2.345, 3.105)

# 步骤1:按OD值升序排序标准品
scdt_sorted <- scdt[order(od)]

# 步骤2:构建反线性插值函数
# rule参数:第一个值控制低于最低OD的返回规则,第二个控制高于最高OD的返回规则,1表示返回NA,2表示外推
cal_conc <- approxfun(
  x = scdt_sorted$od, 
  y = scdt_sorted$conc,
  method = "linear",
  rule = c(1, 1),
  yleft = NA, # 低于最低OD的返回值,可根据实验室要求修改为"<5"等标识
  yright = NA # 高于最高OD的返回值,符合厂商不报告的要求
)

# 步骤3:批量计算浓度
calc_results <- data.table(
  od = unknowns,
  conc_IU_mL = cal_conc(unknowns)
)

# 输出计算结果
print(calc_results)

2.3 示例输出

od conc_IU_mL
1: 0.015         NA
2: 0.634   28.74532
3: 0.891   52.78090
4: 1.510  129.63918
5: 2.345         NA
6: 3.105         NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:48:01