nlsLM的一些问题。。。R

nlsLM的一些问题。。。R,r,nonlinear-functions,R,Nonlinear Functions,我使用包minpack.lm来表示数据集中的非线性方程。我以为我理解了脚本,但运行下面的脚本时,我遇到了一个非常恼人的错误 library(minpack.lm); x<-c(0,2,4,5,6,7,8,10,12,18,20);x<-x/20; y<-c(0,0.0014,0.41165,0.6258,0.357,0.46657,0.1803,0.05844,0.10185,0.0085,0.000933) med<-cbind(x,y) med=data.frame(

我使用包
minpack.lm
来表示数据集中的非线性方程。我以为我理解了脚本,但运行下面的脚本时,我遇到了一个非常恼人的错误

library(minpack.lm);
x<-c(0,2,4,5,6,7,8,10,12,18,20);x<-x/20;
y<-c(0,0.0014,0.41165,0.6258,0.357,0.46657,0.1803,0.05844,0.10185,0.0085,0.000933)
med<-cbind(x,y)
med=data.frame(med)
windows()
fm=function(x,beta1,beta2){(x^(beta1-1))*((1-x)^(beta2-1))}
plot(y~x,data=med)
m5=nlsLM(y~fm(x,beta1,beta2),data=med,start=list(beta1=0.1,beta2=1),trace=TRUE)
summary(m5)
b=coef(m5)
curve(fm(x,beta1=b["beta1"],beta2=b["beta2"]),add=TRUE)
库(minpack.lm);

xTry
fm(x,0.1,1)
。由于一些
x
为零,当beta1<1时
x^(beta1-1)
将等于
Inf
。因此,获得合理的起始值感谢您的帮助!但是我仍然得到相同的错误,我不是要删除零,而是设置beta1>=1的起始值(即尝试beta1=1)好的!谢谢你,伙计!正如你所说的问题在于0,0。。。如果我删除它,错误将消失。然而,我失去了这一点,问题不是零而是起始值。这些值需要为迭代提供一个合理的起始点(尽管LM alg对较差的起始值非常宽容)。由于某些x值为零,因为beta1的起始值为0.1,因此这些x值的计算值为0^(0.1-1)=0^(-0.9),等于(1/0^0.9)=Inf。因此,显然,算法无法从该值开始。因此,尝试将beta1>=1设置为起始值(不要删除零x值)尝试
fm(x,0.1,1)
。由于一些
x
为零,当beta1<1时
x^(beta1-1)
将等于
Inf
。因此,获得合理的起始值感谢您的帮助!但是我仍然得到相同的错误,我不是要删除零,而是设置beta1>=1的起始值(即尝试beta1=1)好的!谢谢你,伙计!正如你所说的问题在于0,0。。。如果我删除它,错误将消失。然而,我失去了这一点,问题不是零而是起始值。这些值需要为迭代提供一个合理的起始点(尽管LM alg对较差的起始值非常宽容)。由于某些x值为零,因为beta1的起始值为0.1,因此这些x值的计算值为0^(0.1-1)=0^(-0.9),等于(1/0^0.9)=Inf。因此,显然,算法无法从该值开始。因此,尝试将beta1>=1设置为起始值(不要删除零x值)