应用场景非常简单,成对的数据需要检验组间是否存在差异
分成两步:
1、检验正态性
from scipy import stats
##检验是否正态
def norm_test(data):
t,p = stats.shapiro(data)
#print(t,p)
if p>=0.05:
return True
else:
return False
2、根据正态性的检验结果,分别选择配对样本t检验和wilcoxon检验。目标是获取统计量和P值。方法的选择可以参考https://segmentfault.com/a/1190000007626742
if norm_test(data_b) and norm_test(data_p):
print('yes')
t,p=ttest_rel(list(data_b),list(data_p))
else:
print('no')
t,p=wilcoxon(list(data_b),list(data_p),zero_method='wilcox', correction=False)#
这里有一个需要注意的坑点
scipy包里带的wilcoxon函数返回的不是统计量z和P值,返回的是负秩和和P值,因此这里需要找到wilcoxon的源码,路径为:Lib\site-packages\scipy\stats\morestats.py
点进morestats文件,将函数返回的数据改成z和p值,如下:
def wilcoxon(x, y