Pandas如何检查两个值是否在统计学上不同?

3

我有一个pandas数据框,其中有一些男性的值和一些女性的值。我想计算两个性别的值的百分比是否显著不同,并告诉这些比率的置信区间。以下是示例代码:

data={}
data['gender']=['male','female','female','male','female','female','male','female','male']
data['values']=[10,2,13,4,11,8,14,19,2]
df_new=pd.DataFrame(data)
df_new.head()   # make a simple data frame


    gender  values
0   male    10
1   female  2
2   female  13
3   male    4
4   female  11

df_male=df_new.loc[df_new['gender']=='male']
df_female=df_new.loc[df_new['gender']=='female']   # separate male and female

# calculate percentages
male_percentage=sum(df_male['values'].values)*100/sum(df_new['values'].values)
female_percentage=sum(df_female['values'].values)*100/sum(df_new['values'].values)

# want to tell whether both percentages are statistically different or not and what are their confidence interval rates
print(male_percentage)
print(female_percentage)

非常感谢您的帮助。谢谢!

2个回答

4
使用t检验。在这种情况下,使用双样本t检验,即比较两个样本的值/均值。
我应用了一种替代假设; A!= B。我通过测试零假设A = B来实现这一点。这是通过计算p值来实现的。当p值低于关键值(称为alpha)时,我拒绝零假设。alpha的标准值为0.05。在5%以下的概率下,样本将产生类似于观察值的模式。
提取样本,在这种情况下是一个值列表。
A=df[df['gender']=='male']['values'].values.tolist()
B=df[df['gender']=='female']['values'].values.tolist()

使用scipy库进行t检验。
from scipy import stats
t_check=stats.ttest_ind(A,B)
t_check
alpha=0.05
if(t_check[1]<alpha):
    print('A different from B')

它只是给出了平均值,没有告诉我们这些平均值是否在统计上有显著差异。 - Asim
统计上的“不同”是什么意思?增加变量会更容易推断出差异。或者你是想使用 t 检验这样的方法吗? - wwnde
类似于一个 t-检验,我想。 - Asim
这篇帖子 https://dev59.com/KHE95IYBdhLWcg3wadKq 可以帮助。 - wwnde
1
@wwnde:您提供的链接只是解释了样本列表的t检验,并没有回答百分比不同的问题。我认为Asim正在寻找“测试两个百分比是否相等”的解释,这里有详细说明:https://www.stat.berkeley.edu/~stark/SticiGui/Text/percentageTests.htm - Shahin Shirazi

0

试试这个:

df_new.groupby('gender')['values'].sum()/df_new['values'].sum()*100

gender
female    63.855422
male      36.144578
Name: values, dtype: float64

1
它只是提供了平均值,没有告诉我们这些平均值是否在统计上有显著差异。 - Asim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接