ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Модуль статистики в Python

Модуль статистики в Python

Если вы занимаетесь исследованиями, статистика имеет первостепенное значение! И Python предлагает множество модулей для статистики, но тот, о котором мы поговорим сегодня, называется модулем статистики. Это простой модуль, не совсем для расширенной статистики, а для тех, кому просто нужны простые и быстрые вычисления. В этом руководстве мы рассмотрим модуль статистики в Python.

 

Модуль статистики

Модуль статистики предоставляет простые функции для вычисления статистики набора данных. Они утверждают, что не конкурируют с NumPy, SciPy или другим программным обеспечением, таким как SPSS, SAS и Matlab. И действительно, это очень простой модуль. Он не предоставляет параметрические или даже непараметрические тесты. Вместо этого его можно использовать для выполнения некоторых простых вычислений (хотя я думаю, что даже Excel может делать то же самое). Кроме того, они утверждают, что поддерживают целые числа, числа с плавающей запятой, десятичные числа и дроби.

Модуль статистики может измерять (1) средние значения и показатели центрального расположения, (2) показатели распространения и (3) статистику взаимосвязей между двумя входными данными.

 

Statistics.mean()

Модуль статистики содержит большое количество функций. Мы не будем охватывать каждый, а скорее некоторые из них. В этом случае набор данных помещается в список. Затем список передается в функцию.

Для целых чисел:

main.py
import statistics

x = [1, 2, 3, 4, 5, 6]
mean = statistics.mean(x)
print(mean)

 

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

main.py
3.5

 

Для дробей терминология немного отличается. Вам нужно будет импортировать модуль, называемый фракциями. Также дробь нужно поместить в скобки и написать перед ней заглавную F. Таким образом, 0,5 будет равно F(1,2). Это невозможно для больших наборов данных!

main.py
import statistics

from fractions, import Fraction as F

x = [F(1,2), F(2,3), F(3,4), F(4,5), F(5,6), F(6,7)]
mean = statistics.mean(x)
print(mean)

 

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

main.py
617/840

 

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

main.py
import statistics

from decimal import Decimal as D

x = [D("0.5"), D("0.75"), D("1.75"), D("2.67"), D("7.77"), D("3.44")]
mean = statistics.mean(x)
print(mean)

 

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

main.py
2.813333333333333333333333333

 

Модуль статистики также предлагает среднее значение, среднее геометрическое и среднее гармоническое. statistics.median() и statistics.mode() аналогичны statistics.mean().

 

Statistics.variance() и Statistics.stdev()

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

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

main.py
import statistics

from decimal import Decimal as D

x = [D("0.5"), D("0.75"), D("1.75"), D("2.67"), D("7.77"), D("3.44")]
var = statistics.variance(x)
print(var)

 

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

main.py
7.144266666666666666666666667

 

В качестве альтернативы стандартное отклонение можно вычислить, выполнив следующие действия:

main.py
import statistics

from decimal import Decimal as D

x = [D("0.5"), D("0.75"), D("1.75"), D("2.67"), D("7.77"), D("3.44")]
std = statistics.stdev(x)
print(std)

 

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

main.py
2.672876103875124748889421932

 

Корреляции Пирсона

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

main.py
import statistics

x = [1.11, 2.45, 3.43, 4.56, 5.78, 6.99]
y = [1.45, 2.56, 3.78, 4.52, 5.97, 6.65]

corr = statistics.correlation(x, y)
print(corr)

 

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

main.py
0.9960181677345038

 

Линейная регрессия

Когда выполняется простая линейная регрессия, она выбрасывает формулу:

y = slope * x + intercept

 

Excel тоже так делает. Но самое большее, что может сделать этот модуль, — это распечатать значение наклона и точки пересечения, из которых можно воссоздать линию. Excel и SPSS предлагают графики для уравнения, но не модуль статистики.

main.py
import statistics

x = [1.11, 2.45, 3.43, 4.56, 5.78, 6.99]
y = [1.45, 2.56, 3.78, 4.52, 5.97, 6.65]

slope, intercept = statistics.linear_regression(x, y)
print("The slope is %s" % slope)
print("The intercept is %s" % intercept)

print("%s x + %s = y" % (slope, intercept))

 

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

main.py
The slope is 0.9111784209749394
The intercept is 0.46169013364824574
0.9111784209749394 x + 0.46169013364824574 = y

 

Ковариация

Кроме того, модуль статистики может измерять ковариацию.

main.py
import statistics

x = [1.11, 2.45, 3.43, 4.56, 5.78, 6.99]
y = [1.45, 2.56, 3.78, 4.52, 5.97, 6.65]

cov = statistics.covariance(x,y)
print(cov)

 

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

main.py
4.279719999999999

 

Хотя Python предлагает модуль, называемый модулем статистики, он не предназначен для расширенной статистики! Имейте в виду, если вы действительно хотите проанализировать свой набор данных, используйте любой модуль, кроме модуля статистики! Он не только слишком прост, но и все функции, которые он предлагает, можно легко найти и в Excel. Кроме того, этот модуль предлагает только два теста — корреляцию Пирсона и простую линейную регрессию. Здесь нет дисперсионного анализа, t-теста, хи-квадрата и тому подобного! И более того, если вам нужно использовать десятичные числа, вам нужно вызвать десятичный модуль, что может быть неудобно для больших и очень больших наборов данных. Вы не поймаете никого, кому нужна реальная статистическая работа, выполненная с помощью этого модуля (используйте SPSS, если вам нужны дополнительные возможности), но если вы ищете простое развлечение, то этот модуль для вас.

Удачного кодирования!

Exit mobile version