В следующих примерах показано, как выполнить три разных 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