声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1431|回复: 1

[综合讨论] 最小二乘法求Beta分布参数的问题。

[复制链接]
发表于 2008-11-4 15:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
以下是M文件中定义的内容:
function F = myfun(x)
c=[0.18041        0.2471        0.30645        0.37225        0.48656       0.49793        0.54194        0.66045        0.79251       0.87882];
m=[0.27111        0.32536        0.21723        0.21939        0.20962       0.15835        0.14626        0.11133        0.087731 0.036902];
k = 1:10;
F=log(m(k)/betainc(c(k),x(1),x(2)));
——————————————————————————————————————————————————————————
以下是调用最小二乘法求参数x(1),x(2)的语句:
x0=[10,20]
[x,resnorm] = 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
    [x,FVAL,JACOB,EXITFLAG,OUTPUT,msg] = ...

Error in ==> lsqnonlin at 147
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
——————————————————————————————————————————————————————————————————————
如果我把M文件中的log去掉就能返回结果。不知道这错误代码说的是什么?请高手帮我看看。
我不知道是我不会用log函数呢。还是我的M文件中有其它的错误。


[ 本帖最后由 hjc421421 于 2008-11-4 15:38 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-11-4 15:41 | 显示全部楼层
我又试了试,用不同的初始向量x0代入好像可以正常运行了,估计应该是x0的选取问题。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-10-1 23:50 , Processed in 0.057121 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表