一、曼-惠特尼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 。