次の種類の非線形回帰モデルを推定したいと思います。
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()
ですか?
ありがとう!