Как выполнять t-тесты в Pandas (3 примера)


В следующих примерах показано, как выполнить три разных t-теста с использованием кадра данных pandas:

  • Независимый двухвыборочный t-критерий
  • Двухвыборочный t-тест Уэлча
  • Парные образцы t-критерий

Пример 1: Независимый двухвыборочный t-тест в Pandas

Независимый двухвыборочный t-критерий используется, чтобы определить, равны ли два средних значения совокупности.

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

Чтобы проверить это, он набирает 10 студентов для использования метода А и 10 студентов для использования метода Б.

В следующем коде показано, как ввести баллы каждого учащегося в кадр данных 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 A 71
1 A 72
2 A 72
3 A 75
4 A 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-критерий Уэлча в Pandas

Стьюдент-критерий Уэлча аналогичен независимому t-тесту для двух выборок, за исключением того, что он не предполагает, что две совокупности, из которых взяты выборки, имеют одинаковую дисперсию .

Чтобы выполнить t-критерий Уэлча для того же набора данных, что и в предыдущем примере, нам просто нужно указать equal_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

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

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

Чтобы проверить это, он набирает 10 студентов для использования метода А, а затем проходит тест. Затем он позволяет тем же 10 учащимся, которые использовали метод Б, подготовиться и сдать еще один тест аналогичной сложности.

Поскольку все учащиеся присутствуют в обеих выборках, в этом сценарии мы можем выполнить t-критерий парных выборок.

В следующем коде показано, как ввести баллы каждого учащегося в кадр данных 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 A 71
1 A 72
2 A 72
3 A 75
4 A 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
  • р-значение: 0,0001

Поскольку p-значение меньше 0,05, мы отклоняем нулевую гипотезу t-критерия для парных выборок и делаем вывод, что имеется достаточно доказательств того, что эти два метода приводят к разным средним баллам за экзамен.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Python:

Как выполнить тест независимости хи-квадрат в Python
Как выполнить односторонний ANOVA в Python
Как выполнить точный тест Фишера в Python

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.