[SciPy-User] How to fit a curve/function?

josef.pktd at gmail.com josef.pktd at gmail.com
Wed Jun 8 07:10:38 EDT 2011


On Wed, Jun 8, 2011 at 6:52 AM, Johannes Radinger <JRadinger at gmx.at> wrote:
> Hello,
>
> I've got following function describing any kind of animal dispersal kernel:
>
> def pdf(x,s1,s2):
>    return (p/(math.sqrt(2*math.pi*s1**2))*numpy.exp(-((x-0)**(2)/(2*s1**(2)))))+((1-p)/(s2*math.sqrt(2*math.pi))*numpy.exp(-((x-0)**(2)/(2*s2**(2)))))
>
> On the other hand I've got data from literature with which I want to fit the function so that I get s1, s2 and x.
> Ususally the data in the literature are as follows:
>
> Example 1: 50% of the animals are between -270m and +270m and 90%  are between -500m and + 500m
>
> Example 2: 84% is between - 5000 m and +5000m, and 73% are between -1000m and +1000m
>
> So far as I understand an integration of the function is needed to solve for s1 and s2 as all the literature data give percentage (area under the curve) Can that be used to fit the curve or can that create ranges for s1 and s2.

I don't see a way around integration.

If you have exactly 2 probabilities, then you can you a solver like
scipy.optimize.fsolve to match the probabilites
eg.
0.5 = integral pdf from -270 to 270
0.9 = integral pdf from -500 to 500

If you have more than 2 probabilities, then using optimization of a
weighted function of the moment conditions would be better.

Josef

>
> /Johannes
>
> --
> NEU: FreePhone - kostenlos mobil telefonieren!
> Jetzt informieren: http://www.gmx.net/de/go/freephone
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>



More information about the SciPy-User mailing list