Как использовать проверку гипотез для сравнения групп

У меня есть фрейм данных с именем, типом и оборотом для каждой игры. Образец этого df приведен ниже.

Name    Type    Turnover per game
kevin   A       5
duke    B       10
jonas   A       12
angly   A       2
anjelo  B       10
wily    A       4
nick    A       8

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

Что я пробовал:

Во-первых, сгруппируйте по типу:

df.groupby('Type').mean()

Но я не знаю, как реализовать тест гипотезы, чтобы проверить вышеуказанное условие.


person kevin    schedule 07.01.2021    source источник
comment
что означает эта строка? (s['Американский'], s['Европа'])   -  person kevin    schedule 07.01.2021
comment
после groupby необходимо реализовать проверку гипотез, чтобы проверить вышеуказанное условие   -  person kevin    schedule 07.01.2021
comment
НЕТ. он просто возвращает среднее значение типа A. Что я хочу сделать, так это реализовать тест гипотезы в python, чтобы проверить выделенное выше состояние.   -  person kevin    schedule 07.01.2021
comment
Я проверяю и, честно говоря, понятия не имею, никогда не работал с проверкой гипотез.   -  person jezrael    schedule 07.01.2021
comment
Я тоже дружище. Это мой первый раз.   -  person kevin    schedule 07.01.2021


Ответы (2)


Проверку гипотез можно выполнить с помощью ttest_ind:

import pandas as pd
from scipy import stats

data = {'Name': ['kevin', 'duke', 'jonas', 'angly', 'anjelo', 'wily', 'nick'],
        'Type': ['A', 'B', 'A', 'A', 'B', 'A', 'A'],
        'Turnover': [5, 10, 12, 2, 10, 4, 8]}
df = pd.DataFrame(data)

t,p = stats.ttest_ind(df.Turnover[df.Type.eq('A')], df.Turnover[df.Type.eq('B')], 
                      equal_var=False, alternative='less')

if p < 0.05:
    print('Type A players have average less turnovers than Type B players')
else:
    print('Null hypothesis (equal means) cannot be rejected.')

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

person Stef    schedule 07.01.2021
comment
Спасибо. Как определить нулевую и альтернативную гипотезы из приведенного выше вопроса? Не могли бы вы упомянуть их? - person kevin; 07.01.2021
comment
H0 = игроки типа A и B имеют равные потери; H1 = у игроков типа A меньше потерь, чем у игроков типа B (для одностороннего теста с альтернативой «меньше») - person Stef; 07.01.2021
comment
Привет, сложно установить scipy 1.6.0. Есть ли другой способ сделать это? для альтернативного параметра требуется версия 1.6.0. Младшие версии не содержат альтернативного параметра. - person kevin; 07.01.2021
comment
см. stackoverflow.com/a/15984310/3944322 - person Stef; 07.01.2021

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

Получите среднее значение оборота, сгруппировав по «Типу»

df_group_by_type = df.groupby('Type')['Turnover per game'].apply(np.mean)
df_group_by_type

Type
A    6.2 
B    10.0

а затем просто проверьте необходимое условие

df_group_by_type['A'] < df_group_by_type['B']
True
person ggaurav    schedule 07.01.2021