最小二乘法求Beta分布参数的问题。
以下是M文件中定义的内容:function F = myfun(x)
c=;
m=;
k = 1:10;
F=log(m(k)/betainc(c(k),x(1),x(2)));
——————————————————————————————————————————————————————————
以下是调用最小二乘法求参数x(1),x(2)的语句:
x0=
= lsqnonlin(@myfun,x0)
——————————————————————————————————————————————————————————
为什么总是返回错误,代码如下:
Warning: Large-scale method requires at least as many equations as variables;
switching to line-search method instead.Upper and lower bounds will be ignored.
> In optim\private\lsqncommon at 160
In lsqnonlin at 147
??? Error using ==> betainc
Z must be real and nonnegative.
Error in ==> myfun at 8
F=log(m(k)/betainc(c(k),x(1),x(2)));
Error in ==> optim\private\nlsq at 337
CostFunction = feval(funfcn{3},x,varargin{:});
Error in ==> optim\private\lsqncommon at 216
= ...
Error in ==> lsqnonlin at 147
= ...
——————————————————————————————————————————————————————————————————————
如果我把M文件中的log去掉就能返回结果。不知道这错误代码说的是什么?请高手帮我看看。
我不知道是我不会用log函数呢。还是我的M文件中有其它的错误。
[ 本帖最后由 hjc421421 于 2008-11-4 15:38 编辑 ] 我又试了试,用不同的初始向量x0代入好像可以正常运行了,估计应该是x0的选取问题。
页:
[1]