Как вычислить кумулятивное нормальное распределение?

Я ищу функцию в Numpy или Scipy (или любая строгая библиотека Python), который даст мне кумулятивную функцию нормального распределения в Python.

87
задан martineau 13 October 2019 в 19:59
поделиться

2 ответа

Адаптировано отсюда http://mail.python.org/pipermail/python-list/2000-June/039873.html

from math import *
def erfcc(x):
    """Complementary error function."""
    z = abs(x)
    t = 1. / (1. + 0.5*z)
    r = t * exp(-z*z-1.26551223+t*(1.00002368+t*(.37409196+
        t*(.09678418+t*(-.18628806+t*(.27886807+
        t*(-1.13520398+t*(1.48851587+t*(-.82215223+
        t*.17087277)))))))))
    if (x >= 0.):
        return r
    else:
        return 2. - r

def ncdf(x):
    return 1. - 0.5*erfcc(x/(2**0.5))
18
ответ дан 24 November 2019 в 07:46
поделиться

Вот пример:

>>> from scipy.stats import norm
>>> norm.cdf(1.96)
0.9750021048517795
>>> norm.cdf(-1.96)
0.024997895148220435

Другими словами, приблизительно 95% стандартного нормального интервала лежит в пределах двух стандартных отклонений, центрированных на стандартном среднем значении нуля.

Если вам нужен обратный CDF:

>>> norm.ppf(norm.cdf(1.96))
array(1.9599999999999991)
115
ответ дан 24 November 2019 в 07:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: