python - 为什么 z 检验表明 2 个看起来相似的分布存在显着差异(假设检验)
问题描述
我在下面有两个分布(Kaggle 数据集:Rossman 销售),它们在视觉上看起来相似:正常日子的销售和学校假期的销售。
然而,他们似乎在 Python 中没有通过 z-test(假设测试)——为什么会这样?
我应该如何在 Python 中执行统计测试(z-test)?我应该使用pooled
还是unequalvar
(我应该使用相同的方差还是不同的方差)?我还发现切换School_hol_sales
并Normal_day_sales
在下面的代码中产生不同的结果,我不知道为什么。
School_hol_sales = df[(df.Open==1)&(df.SchoolHoliday==1)&(df.StateHoliday=='0')&(df.Promo==0)].Sales
Normal_day_sales = df[(df.Open==1)&(df.SchoolHoliday==0)&(df.StateHoliday=='0')&(df.Promo==0)].Sales
School_hol_sales.mean(), Normal_day_sales.mean() # (6230.4, 5904.6)
School_hol_sales.std(), Normal_day_sales.std() # (2841.8, 2602.9)
# which is the correct one?
import statsmodels.stats.api as sms
cm = sms.CompareMeans(sms.DescrStatsW(School_hol_sales), sms.DescrStatsW(Normal_day_sales))
z, pval = cm.ztest_ind(alternative='larger', usevar='unequal')
print('z: {} , pval: {}'.format(z, pval))
from statsmodels.stats.weightstats import ztest
z, pval = ztest(School_hol_sales,Normal_day_sales, alternative='larger', usevar='pooled', ddof=1.0)
print('z: {} , pval: {}'.format(z, pval))
输出:
z: 28.53350149055591 , pval: 2.2504631945823565e-179
z: 30.17089944207645 , pval: 2.853425122518376e-200
解决方案
推荐阅读
- object - 类型断言非简约
- scala - Scala:无法向 Kafka 发送消息(托管在远程服务器上)
- jquery - 滚动触发条件中的递归
- jquery - 如何使 .mouseleave() 函数触发一次
- excel - excel数组除法公式
- sql-server - SQL Server 2017 - IP 地址为空
- c++ - Win32编程子窗口没有退出按钮
- android - 在 Ubuntu 16.04 上使用 USB 网络共享时在 Android 设备上调试 Web 应用程序
- apigee - 防止 Google Apigee 中的重放攻击
- excel - Excel中的三层If-Then case语句