fitting a 3-parameter of Weibull PDF using mle
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Vincent Moron
le 8 Juin 2018
Réponse apportée : Jeff Miller
le 9 Juin 2018
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 ?
0 commentaires
Réponse acceptée
Torsten
le 8 Juin 2018
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.
Plus de réponses (1)
Jeff Miller
le 9 Juin 2018
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.
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!