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?

  • $\begingroup$ I couldn't find any documentation of the fitting procedure in your reference. Could you tell us what procedure you are using? I found one called fit, but it appears to estimate c. $\endgroup$
    – whuber
    Feb 13, 2020 at 21:41
  • $\begingroup$ @whuber I am using the fit method, but there is no documentation available for the same. It does require me to pass a parameter c which is the shape parameter for the GPD. $\endgroup$ Feb 14, 2020 at 8:55

1 Answer 1


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.

  • $\begingroup$ Thank you, that is exactly what I wanted - I need to find the distribution parameters. Is there a way to access these Mathematica functions from python? $\endgroup$ Feb 14, 2020 at 8:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.