一、曼-惠特尼U检验的含义
曼-惠特尼U检验又称“曼-惠特尼秩和检验”,英文(Mann-Whitney U test),是由H.B.Mann和D.R.Whitney于1947年提出的。它假设两个样本分别来自除了总体均值以外完全相同的两个总体,目的是检验这两个总体的均值是否有显著的差别,简单来说就是AB小样本(样本数不一定相等)分别来自于不同的总体,且AB二者的均值不相等,我们目的是要通过AB去检验一下两个总体的均值是否有显著的差异
二、曼-惠特尼U检验和T检验差别
简单来说,t检验和Mann-Whitney U检验的区别:
- t检验是参数检验,需要满足正态性和方差齐性
- Mann-Whitney U检验是非参数检验,没有上面的要求
三、Python实现
1.我们知道这两组的值
#知道这两组的值 import scipy.stats as stats weight_high=[134,146,104,119,124,161,107,83,113,129,97,123] weight_low=[70,118,101,85,112,132,94] stats.mannwhitneyu(weight_high,weight_low,alternative='two-sided') #MannwhitneyuResult(statistic=62.0,pvalue=0.0993422478534652) #大于0.05,也就是接受原假设
2.我们只知道均值,比如说我们分箱时,得到两个不同的badrate,这样我们首先按照badrate生成不同
import pycard as pc help(pc.generate_samples) ''' generate_samples(good=None, bad=None, total=None) 生成仅由 0,1 值组成的样本,以便于进行各种统计检验 参数: ----------- good: int, 好样本的个数,即 0 的个数 bad: int, 坏样本的个数, 即 1 的个数 total: int, 总样本的个数。 good, bad, total 三个参数只能 3选 2个传进来 返回: ----------- sample: 1darray, 生成的样本 ''' #然后下面的步骤基本一样
下面介绍参数
scipy.stats.mannwhitneyu( x, y, use_continuity = True, alternative = None )
- x, y:array_like,样本数据数组
- use_continuity:bool, optional,是否需要0.5的连续性校正,建议小样本需要。默认值为 True 。
- alternative:{None, ‘less’, ‘two-sided’, ‘greater’}, optional,‘two-sided’ 表示双侧检验,‘greater’ 为备择假设是大于的单边检验,‘less’ 为备择假设是小于的单边检验,None 表示双侧检验 p 值的一半。默认值为 None 。