2012-08-06 162 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由一個係數。