MATLAB Answers

# using mle in matlab

43 views (last 30 days)
shalini sharma on 13 Jan 2021
Commented: shalini sharma on 17 Jan 2021
for a given dataset i need to calculate parameters value using mle where cdf = a*(1-exp(-b*A)) and pdf = a*b*exp(-b*A),if i use following code
A=[6 10 17 20 29 34 38 41 50 55 ];
[phat,pci] = mle(A,'pdf',@(A,x,y) x*y*exp(-y*A),'start',[1,1])
i get
Error using mlecustom>llf_pdfcdf
(line 440)
The PDF function returned negative
or zero values.
Error in fminsearch (line 330)
x(:) = xe; fxe =
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 247)
[phat, pci] =
mlecustom(data,varargin{:});
I am not able to understand what is wrong and how to rectify it as i am new to matlab.Please help how sholud i evaluate parameters a and b using mle function in matlab.
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Answers (1)

Jeff Miller on 13 Jan 2021
One problem is that mle's search function (fminsearch) may try negative parameter values, in which case your pdf function returns a negative value. You could avoid that problem by squaring the parameter values, like this:
[phat,pci] = mle(A,'pdf',@(A,x,y) x^2*y^2*exp(-y^2*A),'start',[1,1])
If you do that, just keep in mind that the "real" x and y values you want are the squares of the phat values returned by mle.
Another problem, though, is that these are not legitimate pdf and cdf functions except when a=1. So, I think you really only have one parameter to estimate here--namely, your y parameter. It looks to me, anyway, like you are fitting an exponential distribution to these A values and looking for the best-fitting rate parameter. That value is 0.03333 = 1/mean(A)
##### 2 CommentsShowHide 1 older comment
shalini sharma on 17 Jan 2021
using fsolve i am able to find out the values of parameters a and b (for cdf = a*(1-exp(-b*A)) and pdf = a*b*exp(-b*A)) but i want to evaluate parameters of a cdf and pdf having 5 unknowns which is estimating incorrect values using fsolve (not matching the given results) and therefore i want to compare the results of mle and fsolve to estimate the correct output. So i tried using simpler pdf having known parameters to check which method will be best suited for my model,but i am not able to find correct values of a and b for the given pdf using mle(above mentioned problem). Moreover i dont understand why fsolve,mle and coding (newton ralphson) all gives different values. Since i dont have deep understanding of matlab so i am very confuse which method is best fsolve or mle for estimating parameters (5 to 10) .
thanks...

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!