scipy.stats.

Нормальный#

класс scipy.stats.Нормальный(mu=None, sigma=None, **kwargs)[источник]#

Нормальное распределение с заданным средним и стандартным отклонением.

Функция плотности вероятности нормального распределения:

\[f(x) = \frac{1}{\sigma \sqrt{2 \pi}} \exp { \left( -\frac{1}{2}\left( \frac{x - \mu}{\sigma} \right)^2 \right)}\]

для \(x \in (-\infty, \infty)\). Этот класс принимает одну параметризацию: mu для \(\mu \in (-\infty, \infty)\), sigma для \(\sigma \in (0, \infty)\).

Параметры:
tolположительное число с плавающей точкой, опционально

Желаемая относительная погрешность вычислений. Если не указана, вычисления могут быть быстрее; при указании вычисления могут с большей вероятностью достичь желаемой точности.

validation_policy{None, "skip_all"}

Определяет уровень проверки входных данных для выполнения. Если не указано, проверка входных данных выполняется для обеспечения соответствующего поведения в пограничных случаях (например, параметры вне области определения, аргумент вне поддержки распределения и т.д.) и улучшения согласованности выходного dtype, формы и т.д. Передайте 'skip_all' чтобы избежать вычислительных затрат на эти проверки, когда допустимы грубые края.

cache_policy{None, "no_cache"}

Определяет степень кэширования промежуточных результатов. Если оставить неопределённым, промежуточные результаты некоторых вычислений (например, носитель распределения, моменты и т.д.) кэшируются для повышения производительности будущих вычислений. Передайте 'no_cache' для уменьшения памяти, зарезервированной экземпляром класса.

Атрибуты:
Все параметры доступны как атрибуты.

Методы

support()

Носитель случайной величины

plot([x, y, t, ax])

Построить график функции распределения.

sample([shape, method, rng])

Случайная выборка из распределения.

moment([order, kind, method])

Сырой, центральный или стандартный момент положительного целого порядка.

mean(*[, method])

Среднее (сырой первый момент относительно начала координат)

median(*[, method])

Медиана (50-й процентиль)

mode(*[, method])

Мода (наиболее вероятное значение)

variance(*[, method])

Дисперсия (центральный момент второго порядка)

standard_deviation(*[, method])

Стандартное отклонение (квадратный корень из второго центрального момента)

skewness(*[, method])

Асимметрия (стандартизированный третий момент)

kurtosis(*[, method, convention])

Эксцесс (стандартизированный четвертый момент)

pdf(x, /, *[, method])

Функция плотности вероятности

logpdf(x, /, *[, method])

Логарифм функции плотности вероятности

cdf(x[, y, method])

Функция кумулятивного распределения

icdf(p, /, *[, method])

Обратная функция распределения.

ccdf(x[, y, method])

Дополнительная функция распределения

iccdf(p, /, *[, method])

Обратная дополнительная кумулятивная функция распределения.

logcdf(x[, y, method])

Логарифм функции кумулятивного распределения

ilogcdf(logp, /, *[, method])

Обратная функция логарифма кумулятивной функции распределения.

logccdf(x[, y, method])

Логарифм дополнительной кумулятивной функции распределения

ilogccdf(logp, /, *[, method])

Обратная функция логарифма дополнительной функции распределения.

entropy(*[, method])

Дифференциальная энтропия

logentropy(*[, method])

Логарифм дифференциальной энтропии

Примечания

В документации используются следующие сокращения.

  • PDF: функция плотности вероятности

  • CDF: функция распределения

  • CCDF: дополнительная функция распределения

  • энтропия: дифференциальная энтропия

  • log-F: логарифм F (например, log-CDF)

  • обратный F: обратная функция к F (например, обратная функция распределения)

Документация API написана для описания API, а не для использования в качестве статистической справки. Усилия направлены на то, чтобы быть корректными на уровне, необходимом для использования функциональности, а не на математическую строгость. Например, непрерывность и дифференцируемость могут подразумеваться неявно. Для точных математических определений обратитесь к предпочитаемому математическому тексту.

Примеры

Чтобы использовать класс распределения, его необходимо создать с использованием ключевых параметров, соответствующих одной из принятых параметризаций.

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import stats
>>> from scipy.stats import Normal
>>> X = Normal(mu=-0.81, sigma=0.69)

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

>>> X.plot()
>>> plt.show()
../../_images/scipy-stats-Normal-1_00_00.png

Носитель базового распределения доступен с использованием support метод.

>>> X.support()
(np.float64(-inf), np.float64(inf))

Числовые значения параметров, связанных со всеми параметризациями, доступны как атрибуты.

>>> X.mu, X.sigma
(np.float64(-0.81), np.float64(0.69))

Для вычисления функции плотности вероятности/массы базового распределения в аргументе x=-1.13:

>>> x = -1.13
>>> X.pdf(x), X.pmf(x)
(np.float64(0.5192263911374636), np.float64(0.0))

Интегральная функция распределения, её дополнение и логарифм этих функций вычисляются аналогично.

>>> np.allclose(np.exp(X.logccdf(x)), 1 - X.cdf(x))
True

Обратные функции относительно аргумента x также доступен.

>>> logp = np.log(1 - X.ccdf(x))
>>> np.allclose(X.ilogcdf(logp), x)
True

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

>>> y = -0.56
>>> np.allclose(X.ccdf(x, y), 1 - (X.cdf(y) - X.cdf(x)))
True

Существуют методы для вычисления мер центральной тенденции, дисперсии, моментов высшего порядка и энтропии.

>>> X.mean(), X.median(), X.mode()
(np.float64(-0.81), np.float64(-0.81), np.float64(-0.81))
>>> X.variance(), X.standard_deviation()
(np.float64(0.4760999999999999), np.float64(0.69))
>>> X.skewness(), X.kurtosis()
(np.float64(0.0), np.float64(3.0))
>>> np.allclose(X.moment(order=6, kind='standardized'),
...             X.moment(order=6, kind='central') / X.variance()**3)
True
>>> np.allclose(np.exp(X.logentropy()), X.entropy())
True

Псевдослучайные выборки могут быть извлечены из базового распределения с использованием sample.

>>> X.sample(shape=(4,))
array([-0.73348912, -1.05738815, -1.18872327, -0.48443655])  # may vary