我想用分析化学校准曲线的加权因子进行线性回归。 x值是浓度并假设没有误差。 y值是仪器响应,假设变化与浓度成比例。所以,我想使用1 / x加权因子进行线性回归。数据集只有十个浓度,每个都有一次测量。在R中有一个简单的方法吗?
答案 0 :(得分:2)
答案可以在Cross Validated上的一个较旧的问题上找到。 lm()
函数(表示应用线性回归的常用方法)具有指定权重的选项。如链接上的答案所示,您可以在weights
参数中使用公式。在您的情况下,公式可能采用1/data$concentration
。
根据hrbrmstr的建议,我正在添加mpiktas's actual answer from Cross Validated:
我认为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将产生错误。