2012-08-06 125 views
-1

我有以下公式,其中我试图找到coef1,coef2 ... coef5和所有其他变量已知。使用R的线性回归

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

你试图在'lmfit'和'glmfit',以适应两种不同的模式。在后一种情况下,你试图做逻辑回归,它自己决定逻辑(和数据)。 – 2012-08-06 10:02:23

回答

5

你想

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

谢谢,完美无缺! – TrueWheel 2012-08-06 11:28:23

2

你并不需要的系数R.添加到公式中的R. ?formula类型

相反,你可以使用这个公式:

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

,你不希望你的乘变量a由一个系数。