Как выполнить t-тесты в pandas (3 примера)
В следующих примерах показано, как выполнить три различных t-теста с использованием DataFrame pandas:
- Независимый двухвыборочный t-критерий
- Двухвыборочный t-критерий Уэлча
- Парные выборки t-критерий
Пример 1: Независимый двухвыборочный t-критерий в пандах
Независимый двухвыборочный t-критерий используется для определения равенства средних значений двух совокупностей.
Например, предположим, что профессор хочет знать, приводят ли два разных метода обучения к разным средним оценкам на экзаменах.
Чтобы проверить это, он набирает 10 студентов для использования метода А и 10 студентов для использования метода Б.
Следующий код показывает, как ввести оценки каждого учащегося в DataFrame pandas, а затем использовать функцию ttest_ind() библиотеки SciPy для выполнения независимого t-теста с двумя выборками:
import pandas as pd
from scipy. stats import ttest_ind
#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
84, 88, 88, 89, 90, 90, 91]})
#view first five rows of DataFrame
df. head ()
method score
0 to 71
1 To 72
2 To 72
3 to 75
4 to 78
#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']
#perform independent two sample t-test
ttest_ind(group1[' score '], group2[' score '])
Ttest_indResult(statistic=-2.6034304605397938, pvalue=0.017969284594810425)
По результату мы видим:
- статистика t-теста: – 2,6034
- р-значение: 0,0179
Поскольку значение p меньше 0,05, мы отвергаем нулевую гипотезу t-критерия и приходим к выводу, что существует достаточно доказательств, чтобы утверждать, что два метода приводят к разным средним баллам на экзамене.
Пример 2: t-критерий Уэлча у панд
T-критерий Уэлча аналогичен независимому t-критерию для двух выборок, за исключением того, что он не предполагает, что две популяции, из которых взяты выборки, имеют одинаковую дисперсию .
Чтобы выполнить t-критерий Уэлча на том же наборе данных, что и в предыдущем примере, нам просто нужно указать равный_var=False в функции ttest_ind () следующим образом:
import pandas as pd
from scipy. stats import ttest_ind
#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
84, 88, 88, 89, 90, 90, 91]})
#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']
#perform Welch's t-test
ttest_ind(group1[' score '], group2[' score '], equal_var= False )
Ttest_indResult(statistic=-2.603430460539794, pvalue=0.02014688617423973)
По результату мы видим:
- статистика t-теста: – 2,6034
- p-значение: 0,0201
Поскольку значение p меньше 0,05, мы отвергаем нулевую гипотезу t-критерия Уэлча и приходим к выводу, что существует достаточно доказательств того, что два метода приводят к разным средним баллам на экзамене.
Пример 3: t-критерий парных выборок в Pandas
T-критерий парных выборок используется для определения равенства двух средних совокупных значений, при котором каждое наблюдение в одной выборке может быть связано с наблюдением в другой выборке.
Например, предположим, что профессор хочет знать, приводят ли два разных метода обучения к разным средним оценкам на экзаменах.
Чтобы проверить это, он набирает 10 студентов, которые будут использовать метод А, а затем проходят тест. Затем он позволяет тем же 10 ученикам, которые использовали метод Б, подготовиться и пройти еще один тест такой же сложности.
Поскольку все студенты присутствуют в обеих выборках, в этом сценарии мы можем выполнить t-тест для парных выборок.
Следующий код показывает, как ввести оценки каждого учащегося в DataFrame pandas, а затем использовать функцию ttest_rel() библиотеки SciPy для выполнения t-теста парных выборок:
import pandas as pd
from scipy. stats import ttest_rel
#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
84, 88, 88, 89, 90, 90, 91]})
#view first five rows of DataFrame
df. head ()
method score
0 to 71
1 To 72
2 To 72
3 to 75
4 to 78
#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']
#perform independent two sample t-test
ttest_rel(group1[' score '], group2[' score '])
Ttest_relResult(statistic=-6.162045351967805, pvalue=0.0001662872100210469)
По результату мы видим:
- статистика t-теста: – 6,1620
- p-значение: 0,0001
Поскольку значение p меньше 0,05, мы отвергаем нулевую гипотезу t-критерия парных выборок и приходим к выводу, что существует достаточно доказательств, чтобы утверждать, что два метода приводят к разным средним баллам на экзамене.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи на Python:
Как выполнить тест независимости хи-квадрат в Python
Как выполнить однофакторный дисперсионный анализ в Python
Как выполнить точный тест Фишера на Python