0

次の種類の非線形回帰モデルを推定したいと思います。

y=ß0 + ß1*( b[1,theta]*x1 +  b[2,theta]*x2 )+ e

要素の説明:

 y: the regressand
x1: regressor 1
x2: regressor 2
ß0: parameter to be estimated
ß1: parameter to be estimated
 e: iid random noise ~ N(mu, sigma)

最後に、i=1,2 の b[i,theta] は、次の指数アルモン多項式重み付け関数を表します。

b[i,theta]= exp(theta1*i+theta2*k^2)/(exp(theta1*1+theta2*1^2) + exp(theta1*2+theta2*2^2))

x1 と x2 の減衰する 2 つの重みを表すだけで、それ以上のものはありません。ただし、これらの重みは、推定される 2 つのパラメーター値 (theta1 と theta2) に依存します。

ここで、非線形最小二乗関数 nls() を使用して、パラメーター ß0、ß1、theta1、および theta2 の最適な (RSS 基準に関して) 値を推定したいと思います。

次のことを試してみたところ、エラー メッセージが表示されました。

nls(y~beta0+beta1*(exp(theta1*1+theta2*1^2)/1318837781*x1+exp(theta1*2+theta2*2^2)/1318837781*x2),data=d,start=list(beta0=1,beta1=1,theta1=.01,theta2=-.0099))

Error in nls(y ~ beta0 + beta1 * (exp(theta1 * 1 + theta2 * 1^2)/1318837781 *  : 
Parameters without initial values in 'data': x1, x2

注: 表記を簡単にするために、重み関数の分母の値を事前に計算しました。これは 1318837781 になります。

nls()x2 と x2 をパラメーターと見なしているように見えますが、これらはリグレッサーです。ここで何が間違っているのか、妥当な結果を得るためにコードをどのように変更すればよいでしょうか。それとも、そのような関数を で推定することは不可能nls()ですか?

ありがとう!

4

0 に答える 0