Solved – Determining shape parameter for Generalized Pareto Distribution Scipy

computational-statisticsdistributionsextreme valuepareto-distributionscipy

I have a set of values to which I want to fit a Generalized Pareto Distribution. Scipy provides functions for doing so:
https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.genpareto.html

However, the genpareto fit method requires 'c', the shape parameter for the GPD.
How do I determine the value of c?

Best Answer

In Mathematica this works:

GPD = ParetoPickandsDistribution[2, 3, .07];
data = RandomVariate[GPD, 10^4];
FindDistributionParameters[data, ParetoPickandsDistribution[mu, sigma, eta]] ->
{mu -> 2.00036, sigma -> 2.96883, eta -> 0.07022}

where mu is the location parameter, sigma the scale parameter, and eta the shape parameter.

FindDistributionParameters can use 5 different methods (see the documentation), but I believe the default is maximum likelihood estimation (MLE). Mathematica has all the tools (Likelihood, LogLikelihood, FindMaximium, Maximize, and ParetoPickandsDistribution for the PDF) to do MLE from scratch, if that's your wont. There is a good explanation of MLE in Wikipedia.