I am doing some data analysis involving fitting datasets to a GEV distribution, but I'm getting some weird results. I'm using scipy, which uses MLE for fitting the parameters. My data is

[1.47, 0.02, 0.3, 0.01, 0.01, 0.02, 0.02, 0.12, 0.38, 0.02, 0.15, 0.01, 0.3, 0.24, 0.01, 0.05, 0.01, 0.0, 0.06, 0.01, 0.01, 0.0, 0.05, 0.0, 0.09, 0.03, 0.22, 0.0, 0.1, 0.0]

Using scipy.stats.genextreme.fit, I get the following parameters:

shape = -9.2409
location = 0.003991
scale = 0.03688

The Kolmogorov-Smirnov test (scipy.stats.kstest) gives

D = 0.4171
p-value = 2.1576e-08

And a plot of the histogram and pdf looks like this:

histogram & pdf

Now the problems:

  1. The data are hydrological flows. If I use the GEV model to extract, e.g. the 50 year recurrence flow I get a ridiculously high value, something in the order of 1e17, so intuitively the model is incorrect.
  2. The p-value is very low, indicating that the model parameters are incorrect, or that the model itself is inappropriate. However, I don't know of any other that is suitable for extreme values.
  3. We have a black-box spreadsheet developed many years ago which calculates the GEV using method of moments, and it appears to give reasonable results for specific recurrence intervals. Unfortunately the person who developed it is long gone and I can't access the calculations to see what's going on. However, it implies that method of moments may give a better fit than MLE for this data.

Am I using the wrong methods for this type of data, or is there something wrong with the way I'm applying them?

  • $\begingroup$ Is this ``block maxima'' (e.g. annual maxima) data? Although very scarce, your data do not seem to be well fitted by GEV, and a better fit could be reached using a Generalised Pareto Distribution. You could try the Peak Over Threshold (POT) approach using R packages: evd, ismev, POT among other. Also be aware that rescaling the data is a good practice to fit extreme values models: multiplying your data by 100 could make estimation easier. $\endgroup$ – Yves Mar 10 '14 at 15:10
  • $\begingroup$ @Yves Thanks for the suggestion. I already tried scaling it but it made no difference. It is block maxima, but as you say, not a good fit. I'll look into the options you suggest. $\endgroup$ – aquavitae Mar 11 '14 at 5:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.