Рубрики
Без рубрики

статистика – Статистические расчеты

Автор оригинала: Doug Hellmann.

Цель:

Реализации общих статистических расчетов.

Модуль statistics реализует множество общих статистических формул для эффективных вычислений с использованием различных числовых типов Python ( int , float , Decimal и Fraction ).

Средние

Поддерживаются три формы средних значений: среднее значение, медиана и режим. Вычислите среднее арифметическое с помощью mean () .

statistics_mean.py

from statistics import *

data  [1, 2, 2, 5, 10, 12]

print('{:0.2f}'.format(mean(data)))

Возвращаемое значение для целых чисел и чисел с плавающей запятой всегда является float . Для входных данных Decimal и Fraction результат имеет тот же тип, что и входные данные.

$ python3 statistics_mean.py

5.33

Вычислите наиболее частую точку данных в наборе данных с помощью mode () .

statistics_mode.py

from statistics import *

data  [1, 2, 2, 5, 10, 12]

print(mode(data))

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

$ python3 statistics_mode.py

2

Существует четыре варианта расчета среднего или среднего значения. Первые три представляют собой простые версии обычного алгоритма с различными решениями для обработки наборов данных с четным числом элементов.

statistics_median.py

from statistics import *

data  [1, 2, 2, 5, 10, 12]

print('median     : {:0.2f}'.format(median(data)))
print('low        : {:0.2f}'.format(median_low(data)))
print('high       : {:0.2f}'.format(median_high(data)))

median () находит центральное значение, и, если в наборе данных есть четное число значений, он усредняет два средних элемента. median_low () всегда возвращает значение из набора входных данных, используя нижний из двух средних элементов для наборов данных с четным числом элементов. median_high () аналогичным образом возвращает более высокий из двух средних элементов.

$ python3 statistics_median.py

median     : 3.50
low        : 2.00
high       : 5.00

Четвертая версия вычисления медианы, median_grouped () , обрабатывает входные данные как непрерывные данные и вычисляет медиану 50% процентиля, сначала находя медианный диапазон с использованием предоставленной ширины интервала, а затем выполняя интерполяцию в этом диапазоне с использованием положение фактических значений из набора данных, попадающих в этот диапазон.

statistics_median_grouped.py

from statistics import *

data  [10, 20, 30, 40]

print('1: {:0.2f}'.format(median_grouped(data, interval1)))
print('2: {:0.2f}'.format(median_grouped(data, interval2)))
print('3: {:0.2f}'.format(median_grouped(data, interval3)))

По мере увеличения ширины интервала изменяется медиана, вычисленная для того же набора данных.

$ python3 statistics_median_grouped.py

1: 29.50
2: 29.00
3: 28.50

Дисперсия

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

statistics_variance.py

from statistics import *
import subprocess


def get_line_lengths():
    cmd  'wc -l ../[a-z]*/*.py'
    out  subprocess.check_output(
        cmd, shellTrue).decode('utf-8')
    for line in out.splitlines():
        parts  line.split()
        if parts[1].strip().lower()  'total':
            break
        nlines  int(parts[0].strip())
        if not nlines:
            continue  # skip empty files
        yield (nlines, parts[1].strip())


data  list(get_line_lengths())

lengths  [d[0] for d in data]
sample  lengths[::2]

print('Basic statistics:')
print('  count     : {:3d}'.format(len(lengths)))
print('  min       : {:6.2f}'.format(min(lengths)))
print('  max       : {:6.2f}'.format(max(lengths)))
print('  mean      : {:6.2f}'.format(mean(lengths)))

print('\nPopulation variance:')
print('  pstdev    : {:6.2f}'.format(pstdev(lengths)))
print('  pvariance : {:6.2f}'.format(pvariance(lengths)))

print('\nEstimated variance for sample:')
print('  count     : {:3d}'.format(len(sample)))
print('  stdev     : {:6.2f}'.format(stdev(sample)))
print('  variance  : {:6.2f}'.format(variance(sample)))

Python включает два набора функций для вычисления дисперсии и стандартного отклонения, в зависимости от того, представляет ли набор данных всю генеральную совокупность или выборку совокупности. В этом примере используется wc для подсчета количества строк во входных файлах для всех примеров программ, а затем используются pvariance () и pstdev () для вычисления дисперсии и стандартного отклонения для всей генеральной совокупности перед использованием variance () и stddev () для вычисления выборочной дисперсии и стандартного отклонения для подмножества, созданного с помощью длина каждого второго найденного файла.

$ python3 statistics_variance.py

Basic statistics:
  count     : 1282
  min       :   4.00
  max       : 228.00
  mean      :  27.79

Population variance:
  pstdev    :  17.86
  pvariance : 319.04

Estimated variance for sample:
  count     : 641
  stdev     :  16.94
  variance  : 286.99

Смотрите также