Spec-Zone.ru › Python 3.7

statistics — Функции математической статистики

Новая в версии 3.4.

Исходный код: Lib/statistics.py

Этот модуль предоставляет функции для вычисления математической статистики числовых (Real-значных) данных.

Примечание

Если не указано иное, эти функции поддерживают int, float, decimal.Decimal и fractions.Fraction. Поведение с другими типами (как в числовой иерархии, так и за её пределами) в настоящее время не поддерживается. Смешанные типы также не определены и зависят от реализации. Если ваши входные данные состоят из смешанных типов, вы можете использовать map() для обеспечения согласованного результата, например map(float, input_data).

Средние значения и меры центральной тенденции

Эти функции вычисляют среднее или типичное значение из генеральной совокупности или выборки.

mean()

Арифметическое среднее (“среднее значение”) данных.

harmonic_mean()

Гармоническое среднее данных.

median()

Медиана (среднее значение) данных.

median_low()

Нижняя медиана данных.

median_high()

Верхняя медиана данных.

median_grouped()

Медиана, или 50-й процентиль, сгруппированных данных.

mode()

Мода (наиболее часто встречающееся значение) дискретных данных.

Меры разброса

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

pstdev()

Стандартное отклонение генеральной совокупности данных.

pvariance()

Дисперсия генеральной совокупности данных.

stdev()

Стандартное отклонение выборки данных.

variance()

Дисперсия выборки данных.

Подробности функций

Примечание: Функции не требуют, чтобы данные, передаваемые им, были отсортированы. Однако для удобства чтения большинство примеров показывают отсортированные последовательности.

statistics.mean(data)

Возвращает среднее арифметическое значение data, которое может быть последовательностью или итератором.

Среднее арифметическое — это сумма данных, деленная на количество точек данных. Оно обычно называется «среднее значение», хотя это лишь одно из многих математических средних значений. Это мера центральной тенденции данных.

Если data пустое, будет поднято исключение StatisticsError.

Некоторые примеры использования:

>>> mean([1, 2, 3, 4, 4])
2.8
>>> mean([-1.0, 2.5, 3.25, 5.75])
2.625

>>> from fractions import Fraction as F
>>> mean([F(3, 7), F(1, 21), F(5, 3), F(1, 3)])
Fraction(13, 21)

>>> from decimal import Decimal as D
>>> mean([D("0.5"), D("0.75"), D("0.625"), D("0.375")])
Decimal('0.5625')

Примечание

Среднее значение сильно зависит от выбросов и не является надежным оценщиком центральной тенденции: среднее значение не обязательно является типичным примером точек данных. Для более надежных, хотя и менее эффективных, мер центральной тенденции см. median() и mode(). (В данном случае «эффективность» относится к статистической эффективности, а не к вычислительной эффективности.)

Образец среднего значения дает несмещенную оценку истинного среднего значения генеральной совокупности, что означает, что в среднем по всем возможным выборкам mean(sample) приближается к истинному среднему значению всей генеральной совокупности. Если data представляет собой всю генеральную совокупность, а не выборку, то mean(data) эквивалентно вычислению истинного среднего значения генеральной совокупности μ.

statistics.harmonic_mean(data)

Возвращает гармоническое среднее значение data, последовательности или итератора вещественных чисел.

Гармоническое среднее, иногда называемое средним подпротивоположным значением, — это обратное среднему арифметическому mean() обратных величин данных. Например, гармоническое среднее трех значений a, b и c будет эквивалентно 3/(1/a + 1/b + 1/c).

Гармоническое среднее — это тип среднего, мера центральной тенденции данных. Оно часто подходит для усреднения величин, которые представляют собой скорости или отношения, например, скорости. Например:

Предположим, инвестор покупает одинаковую стоимость акций каждой из трех компаний с коэффициентами P/E (цена/прибыль) 2,5, 3 и 10. Каков средний коэффициент P/E для портфеля инвестора?

>>> harmonic_mean([2.5, 3, 10])  # For an equal investment portfolio.
3.6

Использование среднего арифметического значения даст среднее значение около 5,167, что слишком высоко.

Исключение StatisticsError возникает, если data пустое или любое значение меньше нуля.

Новая в версии 3.6.

statistics.median(data)

Возвращает медиану (среднее значение) числовых данных, используя общий метод «среднее из двух средних». Если data пустое, возникает исключение StatisticsError. data может быть последовательностью или итератором.

Медиана — это надежная мера центральной тенденции, и она менее подвержена влиянию выбросов в ваших данных. Когда количество точек данных нечетное, возвращается средняя точка данных:

>>> median([1, 3, 5])
3

Когда количество точек данных четное, медиана интерполируется путем усреднения двух средних значений:

>>> median([1, 3, 5, 7])
4.0

Это подходит для случаев, когда ваши данные дискретны, и вас не смущает, что медиана может не быть фактической точкой данных.

Если ваши данные являются порядковыми (поддерживают операции сравнения), но не числовыми (не поддерживают сложение), следует использовать median_low() или median_high().

См. также

median_low(), median_high(), median_grouped()

statistics.median_low(data)

Возвращает нижнюю медиану числовых данных. Если data пустое, возникает исключение StatisticsError. data может быть последовательностью или итератором.

Нижняя медиана всегда является членом набора данных. Когда количество точек данных нечетное, возвращается среднее значение. Когда оно четное, возвращается меньшее из двух средних значений.

>>> median_low([1, 3, 5])
3
>>> median_low([1, 3, 5, 7])
3

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

statistics.median_high(data)

Возвращает верхнюю медиану данных. Если data пустое, возникает исключение StatisticsError. data может быть последовательностью или итератором.

Верхняя медиана всегда является членом набора данных. Когда количество точек данных нечетное, возвращается среднее значение. Когда оно четное, возвращается большее из двух средних значений.

>>> median_high([1, 3, 5])
3
>>> median_high([1, 3, 5, 7])
5

Используйте верхнюю медиану, когда ваши данные дискретны, и вы предпочитаете, чтобы медиана была фактической точкой данных, а не интерполированной.

END_OF_DOCUMENT_MARKER
statistics.median_grouped(data, interval=1)

Возвращает медиану сгруппированных непрерывных данных, вычисленную как 50-й перцентиль с использованием интерполяции. Если data пусто, генерируется исключение StatisticsError. data может быть последовательностью или итератором.

>>> median_grouped([52, 52, 53, 54])
52.5

В следующем примере данные округляются, так что каждое значение представляет середину интервала данных, например, 1 — середина интервала 0,5–1,5, 2 — середина 1,5–2,5, 3 — середина 2,5–3,5 и т. д. При заданных данных среднее значение попадает где-то в интервал 3,5–4,5, и для его оценки используется интерполяция:

>>> median_grouped([1, 2, 2, 3, 4, 4, 4, 4, 4, 5])
3.7

Необязательный аргумент interval представляет интервал классов и по умолчанию равен 1. Изменение интервала классов естественным образом изменяет интерполяцию:

>>> median_grouped([1, 3, 3, 5, 7], interval=1)
3.25
>>> median_grouped([1, 3, 3, 5, 7], interval=2)
3.5

Данная функция не проверяет, находятся ли точки данных по крайней мере на расстоянии interval друг от друга.

Деталь реализации CPython: В некоторых ситуациях median_grouped() может привести к преобразованию точек данных в числа с плавающей точкой. Это поведение, вероятно, изменится в будущем.

См. также

  • «Статистика для поведенческих наук», Фредерик Дж. Грэйветтер и Ларри Б. Уоллнау (8-е издание).
  • Функция SSMEDIAN в электронных таблицах Gnome Gnumeric, включая данную дискуссию.
statistics.mode(data)

Возвращает наиболее часто встречающееся значение данных в дискретных или номинальных данных data. Мода (если она существует) — это наиболее типичное значение и является надежной мерой центральной тенденции.

Если data пусто или если существует не ровно одно наиболее часто встречающееся значение, генерируется исключение StatisticsError.

mode предполагает дискретные данные и возвращает единственное значение. Это стандартное представление моды, как обычно преподается в школах:

>>> mode([1, 1, 2, 3, 3, 3, 3, 4])
3

Мода уникальна тем, что это единственная статистика, которая также применима к номинальным (нечисловым) данным:

>>> mode(["red", "blue", "blue", "red", "green", "red", "red"])
'red'
statistics.pstdev(data, mu=None)

Возвращает стандартное отклонение генеральной совокупности (квадратный корень из дисперсии генеральной совокупности). См. pvariance() для аргументов и других деталей.

>>> pstdev([1.5, 2.5, 2.5, 2.75, 3.25, 4.75])
0.986893273527251
statistics.pvariance(data, mu=None)

Возвращает дисперсию генеральной совокупности data, непустого итерируемого объекта вещественных чисел. Дисперсия, или второй момент относительно среднего значения, является мерой изменчивости (разброса или рассеивания) данных. Большая дисперсия указывает на то, что данные разбросаны; малая дисперсия указывает на то, что они сгруппированы близко вокруг среднего значения.

Если необязательный второй аргумент mu задан, он должен быть средним значением data. Если он отсутствует или None (по умолчанию), среднее значение вычисляется автоматически.

Используйте эту функцию для вычисления дисперсии всей генеральной совокупности. Для оценки дисперсии по выборке функция variance() обычно является лучшим выбором.

Возбуждает исключение StatisticsError, если data пусто.

Примеры:

>>> data = [0.0, 0.25, 0.25, 1.25, 1.5, 1.75, 2.75, 3.25]
>>> pvariance(data)
1.25

Если вы уже рассчитали среднее значение своих данных, вы можете передать его как необязательный второй аргумент mu, чтобы избежать повторного вычисления:

>>> mu = mean(data)
>>> pvariance(data, mu)
1.25

Эта функция не пытается проверить, что вы передали фактическое среднее значение как mu. Использование произвольных значений для mu может привести к недопустимым или невозможным результатам.

Поддерживаются десятичные дроби и дроби:

>>> from decimal import Decimal as D
>>> pvariance([D("27.5"), D("30.25"), D("30.25"), D("34.5"), D("41.75")])
Decimal('24.815')

>>> from fractions import Fraction as F
>>> pvariance([F(1, 4), F(5, 4), F(1, 2)])
Fraction(13, 72)

Примечание

При вызове с полной генеральной совокупностью это дает дисперсию генеральной совокупности σ². При вызове по выборке это является смещенной дисперсией выборки s², также известной как дисперсия с N степенями свободы.

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

statistics.stdev(data, xbar=None)

Возвращает стандартное отклонение выборки (квадратный корень из дисперсии выборки). См. variance() для аргументов и других деталей.

>>> stdev([1.5, 2.5, 2.5, 2.75, 3.25, 4.75])
1.0810874155219827
statistics.variance(data, xbar=None)

Возвращает дисперсию выборки data, итерируемого объекта с по крайней мере двумя вещественными числами. Дисперсия, или второй момент относительно среднего значения, является мерой изменчивости (разброса или рассеивания) данных. Большая дисперсия указывает на то, что данные разбросаны; малая дисперсия указывает на то, что они сгруппированы близко вокруг среднего значения.

Если необязательный второй аргумент xbar задан, он должен быть средним значением data. Если он отсутствует или None (по умолчанию), среднее значение вычисляется автоматически.

Используйте эту функцию, когда ваши данные являются выборкой из генеральной совокупности. Для вычисления дисперсии по всей генеральной совокупности см. pvariance().

Возбуждает исключение StatisticsError, если data содержит меньше двух значений.

Примеры:

>>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]
>>> variance(data)
1.3720238095238095

Если вы уже рассчитали среднее значение своих данных, вы можете передать его как необязательный второй аргумент xbar, чтобы избежать повторного вычисления:

>>> m = mean(data)
>>> variance(data, m)
1.3720238095238095

Эта функция не пытается проверить, что вы передали фактическое среднее значение как xbar. Использование произвольных значений для xbar может привести к недопустимым или невозможным результатам.

Поддерживаются десятичные и дробные значения:

>>> from decimal import Decimal as D
>>> variance([D("27.5"), D("30.25"), D("30.25"), D("34.5"), D("41.75")])
Decimal('31.01875')

>>> from fractions import Fraction as F
>>> variance([F(1, 6), F(1, 2), F(5, 3)])
Fraction(67, 108)

Примечание

Это дисперсия выборки s² с поправкой Бесселя, также известная как дисперсия с N-1 степенями свободы. При условии, что точки данных являются представительными (например, независимыми и одинаково распределёнными), результат должен являться несмещенной оценкой истинной дисперсии генеральной совокупности.

Если вам каким-то образом известно истинное среднее значение генеральной совокупности μ, вы должны передать его функции pvariance() в качестве параметра mu, чтобы получить дисперсию выборки.

Исключения

Определено одно исключение:

exception statistics.StatisticsError

Подкласс исключения ValueError для исключений, связанных со статистикой.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/statistics.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API