全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
4535 4
2007-12-22

近日使用MATLAB求解极大似然估计,在优化时遇到问题,请高手帮忙看看:

opts =optimset('DerivativeCheck','off','Display','off','TolX',1e-6,'TolFun',1e-6,'Diagnostics','off','MaxIter',200,'LargeScale','off'); %优化设置

n=100;d=3;
x=normrnd(0,0.25,n,d);           %x赋值
y=10*sin(normrnd(1,0.5,n,1));    %y赋值

sigma_0=zeros(1,1);r0=zeros(1,1);gama_0=zeros(1,1);    %变量初始赋值
sigma_1=zeros(d,1);r1=zeros(d,1);gama_1=zeros(d,1);

[w1,lik1,exit1] = fmincon('multinorm_mle',[0;zeros(d,1);0;zeros(d,1);0;zeros(d,1);],[],[],[],[],[],[],opts);  %红色部分为变量初值,部分变量为向量。

format long;
disp(num2str([w1],5));
disp(num2str([lik1 exit1],5));

function loglik = multinorm_mle(w)     % multinorm_MLE The log-likelihood function of the local polynomial model


global n d sigma_0 sigma_1 r0 r1 gama_0 gama_1;

for i=1:n;
loglik=-1/2*(sigma_0^2+sigma_1'.^2*(x(i)-x))-1/2*(y(i)-r0-r1'*(x(i)-x))^2/exp(sigma_0^2+sigma_1'.^2*(x(i)-x))+log(normcdf(-(y(i)-r0-r1'*(x(i)-x)))*exp(gama_0+gama_1'.*(x(i)-x)-1/2*(sigma_0^2+sigma_1'.^2*(x(i)-x))));
loglik=sum(loglik);
end;

运行程序后显示:

??? Error using ==> optimfcnchk
NONLCON must be a function.

Error in ==> fmincon at 246
   [confcn, msg] = optimfcnchk(NONLCON,'fmincon',length(varargin),funValCheck,gradconstflag,false,1);

该怎么样改进呢?苦思数日,难以突破,请高手帮忙看看。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2007-12-23 12:15:00

fmincon 采用的是经典优化算法  不适合求解极大似然估计

建议采用其他 非经典优化算法 如GA等

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2007-12-23 13:05:00

感谢aris_zzy的提示!!!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-26 23:49:58
非线性的约束条件,必须重新写一个函数。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-17 21:08:42
应该是没有设置nonlcon,options前面必须有。
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群