-1

我有以下公式,我试图在其中找到 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

谁能指出我如何使用线性最小二乘法解决这个问题的正确方向?

4

2 回答 2

5

你要

lm(d / 2 ~ offset(a / 2) + b1 + b2 + b3 + b4 + b5, data=df)
于 2012-08-06T10:24:42.233 回答
2

您不需要将系数添加到 R 中的公式中。键入?formulaR。

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

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

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

于 2012-08-06T10:04:33.927 回答