全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
20574 100
2015-06-20
function [para,standard_deviation,fv]=my_mle(fun,para0,y)
[para,fv]=fminsearch(fun,para0,[],2,y);
n=length(para);
d=numericalfirstderivative(fun,para,1,y);
standard_deviation=sqrt(diag(pinv(d'*d)));

function f=numericalfirstderivative(fun,parameter,varargin)
n=length(parameter);
for i=1:n
a=zeros(n,1);
a(i)=min(parameter(i)*1e-6,1e-4);
y1(:,i)=feval(fun,parameter+a,varargin{:});
y2(:,i)=feval(fun,parameter-a,varargin{:});
f(:,i)=(y1(:,i)-y2(:,i))/2/a(i);
end


function f=mle(parameter,num,observations)
alpha=parameter(1);
beta=parameter(2);
lambda=parameter(3);
y=beta/alpha*((observations-lambda)/alpha).^(beta-1)*exp((-(observations-lambda)/alpha).^beta)
if num==1
    f=log(y);
else
    f=-sum(log(y));
end



然后在主窗口下输入:
>> clear
>> observations=[1.1101e+03,1.0035e+03,941.2414,971.2918,1.1419e+03];
>> [para,standard_deviation]=my_mle('mle',[6;280;1100],observations)

出现错误:
Error using  *
Inner matrix dimensions must agree.

Error in mle (line 5)
y=beta/alpha*((observations-lambda)/alpha).^(beta-1)*exp((-(observations-lambda)/alpha).^beta)

Error in fminsearch (line 191)
fv(:,1) = funfcn(x,varargin{:});

Error in my_mle (line 2)
[para,fv]=fminsearch(fun,para0,[],2,y);



拜托了,谢谢!





二维码

扫码加我 拉你入群

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

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

全部回复
2015-6-20 21:18:21
beta-1)后面是.* 数据是不是用列向量
二维码

扫码加我 拉你入群

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

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

2015-6-22 09:52:58
magicsun 发表于 2015-6-20 21:18
beta-1)后面是.* 数据是不是用列向量
我那样试过了,还是错误
二维码

扫码加我 拉你入群

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

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

2015-6-22 10:06:26
magicsun 发表于 2015-6-20 21:18
beta-1)后面是.* 数据是不是用列向量
运行之后出现了复数
二维码

扫码加我 拉你入群

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

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

2015-6-24 11:13:08
magicsun 发表于 2015-6-20 21:18
beta-1)后面是.* 数据是不是用列向量
大神,帮小弟看看程序,非常感谢~~
二维码

扫码加我 拉你入群

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

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

2015-6-24 13:55:18
不太清楚你要估计什么函数,你只给出个程序,实际上很难判断你的对错,只能发现语法错误。至少我觉得点乘就是错误的。但别的是在看不出来。而且你还用feval,这是求导数?没必要吧?一般用不到吧?看上去太简单的极大似然估计。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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