[SciPy-User] solving integration, density function

Skipper Seabold jsseabold at gmail.com
Tue Dec 21 09:18:15 EST 2010


On Tue, Dec 21, 2010 at 7:48 AM, Johannes Radinger <JRadinger at gmx.at> wrote:
>
> -------- Original-Nachricht --------
>> Datum: Tue, 21 Dec 2010 13:20:47 +0100
>> Von: Gregor Thalhammer <Gregor.Thalhammer at gmail.com>
>> An: SciPy Users List <scipy-user at scipy.org>
>> Betreff: Re: [SciPy-User] solving integration, density function
>
>>
>> Am 21.12.2010 um 12:06 schrieb Johannes Radinger:
>>
>> > Hello,
>> >
>> > I am really new to python and Scipy.
>> > I want to solve a integrated function with a python script
>> > and I think Scipy should do that :)
>> >
>> > My task:
>> >
>> > I do have some variables (s, m, K,) which are now absolutely set, but in
>> future I'll get the values via another process of pyhton.
>> >
>> > s = 400
>> > m = 0
>> > K = 1
>> >
>> > And have have following function:
>> > (1/((s*K)*sqrt(2*pi)))*exp((-1/2*(((x-m)/s*K))^2) which is the density
>> function of the normal distribution a symetrical curve with the mean (m) of
>> 0.
>> >
>> > The total area under the curve is 1 (100%) which is for an integration
>> from -inf to +inf.
>> > I want to know x in the case of 99%: meaning that the integral (-x to
>> +x) of the function is 0.99. Due to the symetry of the curve you can also set
>> the integral from 0 to +x equal to (0.99/2):
>> >
>> > 0.99 = integral((1/((s*K)*sqrt(2*pi)))*exp((-1/2*(((x-m)/s*K))^2)), -x,
>> x)
>> > resp.
>> > (0.99/2) = integral((1/((s*K)*sqrt(2*pi)))*exp((-1/2*(((x-m)/s*K))^2)),
>> 0, x)
>> >
>> > How can I solve that question in Scipy/python
>> > so that I get x in the end. I don't know how to write
>> > the code...
>>
>>
>> --->
>> erf(x[, out])
>>
>>     y=erf(z) returns the error function of complex argument defined as
>>     as 2/sqrt(pi)*integral(exp(-t**2),t=0..z)
>> ---
>>
>> from scipy.special import erf, erfinv
>> erfinv(0.99)*sqrt(2)
>>
>>
>> Gregor
>>
>
>
> Thank you Gregor,
> I only understand a part of your answer... I know that the integral of the density function is a error function and I know that the argument "from scipy.special import erf, erfinv" is to load the module.
>
> But how do I write the code including my orignial function so that I can modify it (I have also another function I want to integrate). how do i start? I want to save the whole code to a python-script I can then load e.g. into ArcGIS where I want to use the value of x for further calculations.
>

Are you always integrating densities?  If so, you don't want to use
integrals probably, but you could use scipy.stats

erfinv(.99)*np.sqrt(2)
2.5758293035489004

from scipy import stats

stats.norm.ppf(.995)
2.5758293035489004

Skipper



More information about the SciPy-User mailing list