带nls()的非线性模型:错误:没有初始值的参数

时间:2013-09-29 18:51:42

标签: r nls nonlinear-optimization

我想估计以下类型的非线性回归模型:

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]表示以下指数Almon多项式加权函数:

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

它只代表x1和x2的两个衰减权重,仅此而已。但是这些权重取决于两个参数值,这两个参数值也需要估算: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()估算这种功能是不可能的?

谢谢!

0 个答案:

没有答案