Clear Filters
Clear Filters

Fit distribution to probability plot

3 views (last 30 days)
Is it possible to fit a Generalized Extreme Value distribution to a probability plot? I've got 31 annual highest values that I have plotted in a probabilty plot using >>probplot(a); and now I want a distribution fitted to the data Points. How can I do this?
I've tried using gevfit to find the parameters for the distribution and i tried plotting gevpdf(a,0,107,399) in a probability plot but it didn't give me what I wanted, I just got this:
but I want something looking like this:

Accepted Answer

Brendan Hamm
Brendan Hamm on 11 Nov 2016
It looks like you are looking at comparing the Cumulative Distribution Function (CDF) with the Empirical Cumulative Distribution Function (ECDF) which is not the same as a probability plot.
I'll start by generating some random numbers from an EVD as I do not have your data:
a = gevrnd(0,107,399,100,1);
Next we need to fit the parameters of the distribution:
Mdl = fitdist(a,'GeneralizedExtremeValue'); % Returns a PD object (Requires MATLAB later than 2009)
You can then calculate the ECDF: [f,x] = ecdf(a); % plot(x,f)
Then calculate the CDF implied by the fitted parameters:
y = cdf(Mdl,x);
hold on
hold off
If you indeed wanted to look at a probability plot, you should know that by default probplot compares the data with a normal distribution. To change this, pass in the name of the distribution:
probplot('extreme value',a)
Gustav Lindstrand
Gustav Lindstrand on 11 Nov 2016
Thank you so much!
Is there a way to make the fit "keep going"? Now the fit ends when my data ends, I would like it to keep going so that I can look up the value at the probability 0.99 (for example)
Brendan Hamm
Brendan Hamm on 11 Nov 2016
The fit itself is defined on the entire support of the distribution. The PD objects are very useful for problems like what you mention. You can find a list of the methods (special functions) available for the PD objects.
methods(Mdl) % prints a list of the methods for the object.
To find the value at the 0.99 probability you would want the icdf method:
CDFval99 = icdf(Mdl,0.99)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!