Если вы занимаетесь исследованиями, статистика имеет первостепенное значение! И 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, если вам нужны дополнительные возможности), но если вы ищете простое развлечение, то этот модуль для вас.
Удачного кодирования!