[SciPy-User] how to fit a given pdf

josef.pktd@gmai... josef.pktd@gmai...
Wed Aug 11 12:40:18 CDT 2010


On Wed, Aug 11, 2010 at 12:14 PM, Jonathan Stickel <jjstickel@vcn.com> wrote:
> On 8/11/10 09:00 , scipy-user-request@scipy.org wrote:
>> Date: Wed, 11 Aug 2010 12:00:22 -0300
>> From: Renato Fabbri<renato.fabbri@gmail.com>
>> Subject: [SciPy-User] how to fit a given pdf
>> To: Discussion of Numerical Python<numpy-discussion@scipy.org>,
>>       scipy-user@scipy.org
>> Message-ID:
>>       <AANLkTinmmEbSo9_-ZmCXDzqDXLZb1fM8zFVoM-gnHo+c@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 first step is to try the fit method. If generic Maximum Likelihood
estimation works with your data, then it's good.
An example is at http://projects.scipy.org/scipy/ticket/832

If you want to fix the support, the lower bound then you could use the
link on the ticket, current scipy trunk or statsmodels, to estimate.
In some uncommitted changes to statsmodels, I'm preparing the standard
errors for the MLE estimates using the Hessian of the log-likelihood,
which I think will work in this case.

Since your data are all integers, is there a discrete analog to the
gamma distribution? I never checked this.

I hope that helps, keep asking if there are additional issues. I just
spend some time fighting with estimation for pareto and genpareto and
I would like to get this to work "out-of-the-box".

Josef




>>
>> 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
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>


More information about the SciPy-User mailing list