在實驗分析中套用非母數檢定

Python 的實驗設計

James Chapman

Curriculum Manager, DataCamp

何時使用非母數檢定

 

  • 母數檢定假設不成立
  • 資料為次序尺度非常態
  • 對離群值與非線性資料具韌性

偏態分配

Python 的實驗設計

探索非母數方法

 

  • 非母數方法:用於不符合傳統假設的資料
  • Mann-Whitney U 檢定:比較兩個獨立族群
  • Kruskal-Wallis 檢定:比較超過兩個族群

非常態分配

Python 的實驗設計

視覺化非母數資料

  • Violin plot(小提琴圖):跨族群比較分配
condensed_data = mineral_rocks[mineral_rocks['RockType'].isin(['Igneous', 'Metamorphic'])]

sns.violinplot(x='RockType', y='MineralHardness', data=condensed_data)

火成岩與變質岩之礦物硬度小提琴圖

Python 的實驗設計

視覺化非母數資料

  • Boxen plot(箱線變體圖):更深入掌握分配形狀
sns.boxenplot(x='RockType', y='MineralHardness', data=mineral_rocks)

各岩石類型之礦物硬度分配 Boxen 圖

Python 的實驗設計

套用非母數檢定-Mann-Whitney U

from scipy.stats import mannwhitneyu, kruskal
u_stat, u_pval = mannwhitneyu(
    mineral_rocks[mineral_rocks['RockType'] == 'Igneous']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Sedimentary']['MineralHardness']
)

print(f"Mann-Whitney U test p-value: {u_pval:.4f}")
Mann-Whitney U test p-value: 0.9724
Python 的實驗設計

套用非母數檢定-Kruskal-Wallis

k_stat, k_pval = kruskal(
    mineral_rocks[mineral_rocks['RockType'] == 'Igneous']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Sedimentary']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Metamorphic']['MineralHardness']
)

print(f"Kruskal-Wallis test p-value: {k_pval:.4f}")
Kruskal-Wallis test p-value: 0.0630
Python 的實驗設計

一起來練習吧!

Python 的實驗設計

Preparing Video For Download...