MATLAB Answers

how to fit exponential distribution function on data?

41 views (last 30 days)
Mos_bad
Mos_bad on 25 Jan 2020 at 19:31
Answered: Image Analyst on 26 Jan 2020 at 3:57
The vector m follows the truncated exponential equation (F_M) and it is shown by solid black line in figure. I intend to fit an exponential distribution function to data and find the parameter lambda (1/mean). Even though I've used fitdist(x,distname), the fitted exp. dist. shown in dashed line which is way different from the data. here is the code:
M_min=4.5; M_max=8.0;
m=M_min:0.0001:M_max;
a=4.56; b=1.0;
alpha=a*log(10);beta=b*log(10);
nu=exp(alpha-beta*M_min);
F_M=(1-exp(-beta*(m-M_min))) / (1-(exp(-beta*(M_max-M_min)))); % CDF of Mag.
pd = fitdist(m','Exponential');
figure(1); plot(m,1-F_M,'-','linewidth',2);
hold on; plot(m,1-cdf(pd,m),'--');
legend('data','fitted dist')

  2 Comments

Walter Roberson
Walter Roberson on 25 Jan 2020 at 23:53
a and b are not defined in the third line.
Mos_bad
Mos_bad on 25 Jan 2020 at 23:57
just editted. thanks for pointing that out.

Sign in to comment.

Answers (2)

Walter Roberson
Walter Roberson on 26 Jan 2020 at 0:02
You do not have an exponential distribution. (1 minus an exponential) is not an exponential.
On the other hand if you fit using the equation
a*exp(-b*x)+c
instead of
a*exp(-b*x)
then you get pretty much a perfect fit.

  1 Comment

Mos_bad
Mos_bad on 26 Jan 2020 at 0:38
All I want to do is to devide vertical axis to 1000 intervals and pick a random value of magnitude (horizental axis) at each interval. Kind of Latin hypercube sampling.

Sign in to comment.


Sign in to answer this question.


Translated by