如何使用假设检验来比较组

问题描述

我有一个包含名称、类型和每场比赛营业额的数据框。下面给出了该 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

我想要做的是进行一个假设检验来检查,A 型球员的平均失误比 B 型球员少。

我尝试了什么:

首先,按类型分组:

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

但我不知道如何实施假设检验来检查上述条件。

解决方法

Hypothesis testing 可以用 ttest_ind 完成:

import pandas as pd
from scipy import stats

data = {'Name': ['kevin','duke','jonas','angly','anjelo','wily','nick'],'Type': ['A','B','A','A'],'Turnover': [5,10,12,2,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 类球员的平均失误率低于 {{ 类型的替代假设1}} 玩家将被接受。有关详细信息,请参阅上面链接的维基百科文章中的解释部分。

,

你提到的假设检验,如果我理解正确的话,看起来很紧张。

按“类型”分组获取营业额平均值

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