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]
scipy.stats.genextreme.fit, I get the following parameters:
shape = -9.2409 location = 0.003991 scale = 0.03688
The Kolmogorov-Smirnov test (
D = 0.4171 p-value = 2.1576e-08
And a plot of the histogram and pdf looks like this:
Now the problems:
- 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.
- 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.
- 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?