使用R的线性回归

时间:2012-08-06 09:56:33

标签: r

我有以下公式,我试图找到coef1,coef2 ... coef5,所有其他变量都是已知的。

d ~ a + 2 * (coef1 * b1 + coef2 * b2 + coef3 * b3 + coef4 * b4 + coef5 * b5)

我一直在使用非线性最小二乘(nls)这样解决这个问题,没有问题。

nlsfit <- nls(d ~ a + 2 * (coef1 * b1 + coef2 * b2 + coef3 * b3 + coef4 * b4 + coef5 * b5), data=df, start=list(coef1=0, coef2=0, coef3=0, coef4=0, coef5=0))

但是我被告知应该使用线性最小二乘法来解决这个问题。所以我试图使用lm函数和glm

lmfit <- lm(d ~ a + 2 * (coef1 * b1 + coef2 * b2 + coef3 * b3 + coef4 * b4 + coef5 * b5), data=df)


glmfit <- glm(d ~ a + 2 * (coef1 * b1 + coef2 * b2 + coef3 * b3 + coef4 * b4 + coef5 * b5), data=df, family=binomial())

这两者都返回一个错误,我相信因为数据帧没有任何coef *变量

Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars

有人能指出我如何使用线性最小二乘法解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

你想要

lm(d / 2 ~ offset(a / 2) + b1 + b2 + b3 + b4 + b5, data=df)

答案 1 :(得分:2)

您无需将系数添加到R中的公式中。在R。中键入?formula

相反,您可以使用以下公式:

x=d-a
form <- x ~  b1 +  b2 +  b3 + b4 + b5

因为您不希望将变量a乘以系数。