scipy.stats.

Равномерное#

класс scipy.stats.Равномерное(*, a=None, b=None, **kwargs)[источник]#

Равномерное распределение.

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

\[f(x; a, b) = \frac{1} {b - a}\]

для \(x \in [a, b]\). Этот класс принимает одну параметризацию: a для \(a \in (-\infty, \infty)\), b для \(b \in (a, \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 Uniform
>>> X = Uniform(a=0.09, b=188.73)

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

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

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

>>> X.support()
(np.float64(0.09), np.float64(188.73))

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

>>> X.a, X.b, X.ab
(np.float64(0.09), np.float64(188.73), np.float64(188.64))

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

>>> x = 60.45
>>> X.pdf(x), X.pmf(x)
(np.float64(0.005301102629346905), 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 = 120.82
>>> np.allclose(X.ccdf(x, y), 1 - (X.cdf(y) - X.cdf(x)))
True

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

>>> X.mean(), X.median(), X.mode()
(np.float64(94.41), np.float64(94.41), np.float64(94.41))
>>> X.variance(), X.standard_deviation()
(np.float64(2965.4208), np.float64(54.4556773899655))
>>> X.skewness(), X.kurtosis()
(np.float64(1.4418186690070737e-15), np.float64(1.7999999999999878))
>>> 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([187.83655479, 127.58484493,  11.83829443, 123.97019017])  # may vary