我有以下公式,我试图找到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
有人能指出我如何使用线性最小二乘法解决这个问题吗?
答案 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
乘以系数。