[SciPy-User] how to fit a given pdf

Jonathan Stickel jjstickel at vcn.com
Wed Aug 11 12:14:05 EDT 2010


On 8/11/10 09:00 , scipy-user-request at scipy.org wrote:
> Date: Wed, 11 Aug 2010 12:00:22 -0300
> From: Renato Fabbri<renato.fabbri at gmail.com>
> Subject: [SciPy-User] how to fit a given pdf
> To: Discussion of Numerical Python<numpy-discussion at scipy.org>,
> 	scipy-user at scipy.org
> Message-ID:
> 	<AANLkTinmmEbSo9_-ZmCXDzqDXLZb1fM8zFVoM-gnHo+c at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Dear All,
>
> help appreciated, thanks in advance.
>
> how do you fit a pdf you have with a given pdf (say gamma).
>
> with the file attached, you can go like:
>
> a=open("AC-010_ED-1m37F100P0.txt","rb")
> aa=a.read()
> aaa=aa[1:-1].split(",")
> data=[int(i) for i in aaa]
>
> if you do pylab.plot(data); pylab.show()
>
> The data is something like:
> ___|\___
>
> It is my pdf (probability density function).
>
> how can i find the right parameters to make that fit with a gamma?
>
> if i was looking for a normal pdf, for example, i would just find mean
> and std and ask for the pdf.
>
> i've been playing with scipy.stats.distributions.gamma but i have not
> reached anything.
>
> we can extend the discussion further, but this is a good starting point.
>
> any idea?
>

I am not familiar with the scipy.stats module, and so I do not know what 
it can do for you.  However, I would just generate a model gamma 
distribution from the mean and variance, just as for a normal 
distribution.  The gamma distribution equation can be written as

p(x) = p0/(b^a*Gamma(a))*x^(a-1)*exp(-x/b)

assuming x starts at zero (x>=0) 
(http://en.wikipedia.org/wiki/Gamma_distribution).  Then the the 
parameters a and b are related to the mean and variance by

a = mean^2/var
b = var/mean

(I did the algebra quickly just now, and so you might want to 
double-check).  p0 is the area under the distribution and may be simply 
1 if your distribution is normalized.

Hope this helps.

Jonathan



More information about the SciPy-User mailing list