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);
拜托了,谢谢!


雷达卡



京公网安备 11010802022788号







