0

我正在使用包含四个标准的商业 ELISA 试剂盒。这些标准品用于创建标准曲线,y 轴为 ELISA 读数器的光密度,x 轴为国际单位每英里的浓度。

我现在需要使用这条标准曲线来获取我只有光密度读数的样品的浓度。ELISA 试剂盒说明书明确指出“使用“点对点”绘图通过计算机计算标准曲线”。

我假设他们的意思是通过查看 y 在标准曲线上的点之间的连线并从那里下降到 x 轴来推导出 x 的值。问题是我不知道如何在 r 中执行此操作(这是我用于完整分析管道的内容)。我徒劳地搜索了与“点对点”相对应的任何 r 包、函数或代码,但找不到任何东西。所有处理 ELISA 数据和/或标准曲线的 R 包(例如drcELISAtools似乎做一些更复杂的事情,即适合对数模型并考虑板间差异等,这不是我需要的。

请注意,我不需要可视化标准曲线 - 我只需要一种方法来根据点对点线从标准曲线数据中获取浓度。

以下是一些示例数据:

# Data for standard curve:
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))

> scdt
     id conc    od
1: Cal1  200 1.783
2: Cal2  100 1.395
3: Cal3   25 0.594
4: Cal4    5 0.164

# Some example OD values for which I would like to derive concentration:
unknowns <- c(0.015, 0.634, 0.891, 1.510, 2.345, 3.105) 

在我想为 x 求解的示例值中,我还包括了一些超出标准范围的值,因为这也不时发生在我的真实数据中。试剂盒制造商建议不要报告任何 OD 超过合理的最高标准 (Cal1) 的 IU/mL。

我怎样才能用尺子和方格纸从标准曲线中找到 x 的 R 等价物,这正式名称是什么?(我认为我可能没有找到任何东西的一个原因是因为“点对点”不是数学术语,但必须有一个为此 - 它是插值吗?)。

4

1 回答 1

1

听起来你想要一个简单的线性插值。这是在 R 中使用函数来实现的approx。您将已知的 x 值、已知的 y 值以及您想要相应 y 值的 x 的新值提供给它。(请注意,您调用哪个变量 x 和调用 y 无关紧要,只要您保持一致即可)。

为了获得更易于使用的结果,我们可以将响应转换为具有适当列名的数据框:

new_data <- approx(scdt$od, scdt$conc, xout = unknowns) |> 
  setNames(c("od", "conc")) |> 
  as.data.frame() 

new_data
#>      od      conc
#> 1 0.015        NA
#> 2 0.634  28.74532
#> 3 0.891  52.80899
#> 4 1.510 129.63918
#> 5 2.345        NA
#> 6 3.105        NA

请注意(按照制造商的建议),超出校准点极限范围的光密度将给出NA浓度值。要获得这些,您需要外推而不是内插

为了确认这是您要查找的内容,让我们在由初始数据形成的曲线上用红色绘制此插值的结果:

plot(scdt$od, scdt$conc, type = "l", lty = 2)
points(scdt$od, scdt$conc)
points(new_data$od, new_data$conc, col = "red")

在此处输入图像描述

我们可以看到,每个新光密度的估计浓度位于连接校准点的线上。

于 2021-09-30T14:45:38.620 回答