-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 の式に係数を追加する必要はありません。R に入力します?formula

代わりに、次の式を使用できます。

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

a変数に係数を掛けたくないためです。

于 2012-08-06T10:04:33.927 に答える