我正在尝试根据已建立的线性模型和标准曲线将吸光度(Abs)值转换为浓度(ng/mL)。我计划使用predict()函数来完成此操作。但是,我无法让predict()返回所需的结果。以下是我的代码示例:
Standards<-data.frame(ng_mL=c(0,0.4,1,4),
Abs550nm=c(1.7535,1.5896,1.4285,0.9362))
LM.2<-lm(log(Standards[['Abs550nm']])~Standards[['ng_mL']])
Abs<-c(1.7812,1.7309,1.3537,1.6757,1.7409,1.7875,1.7533,1.8169,1.753,1.6721,1.7036,1.6707,
0.3903,0.3362,0.2886,0.281,0.3596,0.4122,0.218,0.2331,1.3292,1.2734)
predict(object=LM.2,
newdata=data.frame(Concentration=Abs[1]))#using Abs[1] as an example, but I eventually want predictions for all values in Abs
运行最后一行会输出以下内容:
> predict(object=LM.2,
+ newdata=data.frame(Concentration=Abs[1]))
1 2 3 4
0.5338437 0.4731341 0.3820697 -0.0732525
Warning message:
'newdata' had 1 row but variables found have 4 rows
看起来这不是我想要的输出结果。我正在尝试为每个吸光度(Abs)条目获取一个单一的预测浓度值。能够一次性预测所有条目并将它们添加到现有数据框中会很好,但是我甚至无法正确地得到一个单一的值。我在这里读了许多帖子,通过谷歌找到了许多网页和所有的帮助文件,但是我死也无法理解这个函数到底在做什么。感谢任何帮助。
response ~ predictor
,因此predict()
将为给定模型的预测器值提供新的response
值。在您的情况下,y=mx+b,其中y是log(Abs550nm)
,x
是根据您使用的公式中的ng_mL
。如果确实是这个模型,那么就像我说的那样,您需要将其反转以获得关于x
而不是y
的方程,而R不会进行反转,因为这是非标准的。请注意,您可以通过coef(mod)
从您的方程式中获取m和b。 - Gavin Simpson