fitting a 3-parameter of Weibull PDF using mle

Hello
I am trying to estimate the 3 parameters of a Weibull PDF on a series of positive values (n=934). My custom pdf is
custpdf=@(data,a,b,c) (a/b).*(((data-c)./b).^(a-1)).*(exp((-(data-c)./b).^(a)));
phat=mle(data,'pdf',custpdf,'start',[1 1 1]);
Error using mlecustom>llf_pdfcdf (line 440) The PDF function returned negative or zero values.
Error in fminsearch (line 200) fv(:,1) = funfcn(x,varargin{:});
Error in mlecustom (line 184) fminsearch(llf,start,opts,uncensData,censData,uncensFreq,censFreq,fun1Args,fun2Args,checkFunVals,lb,ub);
Error in mle (line 245) phat = mlecustom(data,varargin{:});
I tested also
phat=mle(data,'wblpdf',custpdf,'start',[1 1 1]);
But I get only two parameters
Vincent
Any idea about what is wrong ?

 採用された回答

Torsten
Torsten 2018 年 6 月 8 日

0 投票

custpdf = @(data,a,b,c) (data>c).*(b/a).*(((data-c)/a).^(b-1)).*exp(-((data-c)/a).^b);
opt = statset('MaxIter',1e5,'MaxFunEvals',1e5,'FunValCheck','off');
phat = mle(data,'pdf',custpdf,'start',[5 5 5],'Options',opt,...
'LowerBound',[0 0 -Inf],'UpperBound',[Inf Inf min(data)])
Best wishes
Torsten.

1 件のコメント

Vincent Moron
Vincent Moron 2018 年 6 月 8 日
Thanks for the quick reply. The solution does not converge. I tried to increase the MaxIter but it still does not converge. So perhaps my data does not fit with a 3-parameter Wdl CDF ? I attached the data I am trying to fit

サインインしてコメントする。

その他の回答 (1 件)

Jeff Miller
Jeff Miller 2018 年 6 月 9 日

0 投票

Cupid ( GitHub ) says the ML estimates are Weibull(468169.4353,0.92433,11159.7031), obtained with:
mydist = Weibull(400000,.9,min(data));
mydist.EstML(data);
There don't seem to be numerical problems even though the numbers are so big. The following:
dataover1000 = data / 1000;
mydist2 = Weibull(400,.9,min(dataover1000));
mydist2.EstML(dataover1000)
gives the corresponding Weibull(468.1694,0.92433,11.1597).
Note that the estimate of the 3rd parameter is always the minimum of the data.

タグ

質問済み:

2018 年 6 月 8 日

回答済み:

2018 年 6 月 9 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by