statistics — Функции математической статистики
Введено в версии 3.4.
Исходный код: Lib/statistics.py
Этот модуль предоставляет функции для вычисления математических статистик числовых (Real-значных) данных.
Примечание
Если не указано иное, эти функции поддерживают int, float, decimal.Decimal и fractions.Fraction. Поведение с другими типами (как в числовой иерархии, так и вне её) в настоящее время не поддерживается. Смешанные типы также не определены и зависят от реализации. Если ваши входные данные состоят из смешанных типов, вы можете использовать map(), чтобы гарантировать согласованный результат, например, map(float, input_data).
1. Средние значения и меры центральной тенденции
Эти функции вычисляют среднее или типичное значение из генеральной совокупности или выборки.
mean() | Среднее арифметическое (“среднее”) данных. |
median() | Медиана (среднее значение) данных. |
median_low() | Нижняя медиана данных. |
median_high() | Верхняя медиана данных. |
median_grouped() | Медиана, или 50-й процентиль, сгруппированных данных. |
mode() | Мода (наиболее частое значение) дискретных данных. |
2. Меры разброса
Эти функции вычисляют меру того, насколько генеральная совокупность или выборка имеют тенденцию отклоняться от типичных или средних значений.
pstdev() | Стандартное отклонение генеральной совокупности данных. |
pvariance() | Дисперсия генеральной совокупности данных. |
stdev() | Выборочное стандартное отклонение данных. |
variance() | Выборочная дисперсия данных. |
3. Подробное описание функций
Примечание: Функции не требуют, чтобы данные, предоставленные им, были отсортированы. Однако для удобства чтения большинство примеров показывают отсортированные последовательности.
-
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.median(data) -
Возвращает медиану (среднее значение) числовых данных, используя распространённый метод «среднего двух средних». Если data пусто, поднимается
StatisticsError.Медиана — это надежная мера центральной тенденции и меньше зависит от наличия выбросов в ваших данных. Когда количество точек данных нечётное, возвращается средняя точка данных:
>>> median([1, 3, 5]) 3
Когда количество точек данных чётное, медиана интерполируется путём усреднения двух средних значений:
>>> median([1, 3, 5, 7]) 4.0
Это подходит для случая, когда ваши данные дискретные, и вас не беспокоит то, что медиана может не быть фактической точкой данных.
См. также
-
statistics.median_low(data) -
Возвращает низкую медиану числовых данных. Если data пусто, поднимается
StatisticsError.Низкая медиана всегда является членом набора данных. Когда количество точек данных нечётное, возвращается среднее значение. Когда оно чётное, возвращается меньшее из двух средних значений.
>>> median_low([1, 3, 5]) 3 >>> median_low([1, 3, 5, 7]) 3
Используйте низкую медиану, когда ваши данные дискретные и вы предпочитаете, чтобы медиана была фактической точкой данных, а не интерполированной.
-
statistics.median_high(data) -
Возвращает верхнюю медиану данных. Если data пусто, поднимается
StatisticsError.Верхняя медиана всегда является членом набора данных. Когда количество точек данных нечётное, возвращается среднее значение. Когда оно чётное, возвращается большее из двух средних значений.
>>> median_high([1, 3, 5]) 3 >>> median_high([1, 3, 5, 7]) 5
Используйте верхнюю медиану, когда ваши данные дискретные и вы предпочитаете, чтобы медиана была фактической точкой данных, а не интерполированной.
-
statistics.median_grouped(data, interval=1) -
Возвращает медиану сгруппированных непрерывных данных, вычисленную как 50-й процентиль с использованием интерполяции. Если data пусто, поднимается
StatisticsError.>>> 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()может привести к приведению точек данных к типу float. Это поведение, вероятно, изменится в будущем.См. также
- «Статистики для поведенческих наук», Фредерик Дж. Граветтер и Ларри Б. Уоллнау (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, чтобы получить дисперсию выборки.
4. Исключения
Определено одно исключение:
-
exception statistics.StatisticsError -
Подкласс
ValueErrorдля исключений, связанных со статистикой.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/statistics.html