曼-惠特尼U檢驗以及Python實現


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM