我想对分析化学校准曲线使用加权因子进行线性回归。x 值是浓度并假定没有错误。y 值是仪器响应,假设变化与浓度成正比。所以,我想对线性回归使用 1/x 加权因子。数据集只是十个浓度,每个浓度只有一次测量。有没有一种简单的方法可以在 R 中做到这一点?.
问问题
14176 次
1 回答
2
答案可以在Cross Validated上的一个较老的问题上找到。该lm()
函数(表示应用线性回归的常用方法)具有指定权重的选项。weights
如链接上的答案所示,您可以在参数中使用公式。在您的情况下,公式可能会采用1/data$concentration
.
正如 hrbrmstr 所建议的,我正在添加来自 Cross Validated 的 mpiktas 的实际答案:
我认为 lm 的 R 帮助页面很好地回答了您的问题。权重的唯一要求是提供的向量必须与数据的长度相同。您甚至可以只提供数据集中变量的名称,R 将负责其余的工作,NA 管理等。您还可以在权重参数中使用公式。这是示例:
x <-c(rnorm(10),NA) df <- data.frame(y=1+2*x+rnorm(11)/2,x=x,wght1=1:11) ##Fancy weights as numeric vector summary(lm(y~x,data=df,weights=(df$wght1)^(3/4))) #Fancy weights as formula on column of the data set summary(lm(y~x,data=df,weights=I(wght1^(3/4)))) #Mundane weights as the column of the data set summary(lm(y~x,data=df,weights=wght1)
注意权重必须是正数,否则 R 会产生错误。
于 2015-11-11T11:02:12.457 回答