單一樣本Wilcoxon signed-rank 檢定 (One-Sample Wilcoxon signed-rank test,non-parametric)

套路 7: 單一樣本Wilcoxon signed-rank 檢定
(One-Sample Wilcoxon signed-rank testnon-parametric)

什麼是單一樣本假設檢定? 說白了就是只有一組資料做假設檢定。統計假設檢定檢定什麼?H0。例如單一樣本假設檢定H0 : median等於 0HA : median不等於0是檢定資料的平均值是否為0。又例如單一樣本假設檢定H0 : median 小於 8HA : median 大於等於 8是檢定資料的平均值是否小於8。假設相等時為雙尾 (two-tailed test) 檢定。假設不相等時為單尾 (one-tailed test) 檢定。如下圖所示:
1. 使用時機: 用於比較觀測到的中位數(median)和理論(期望)值。資料偏離常態分布或有離群值不適用parametric方法時。
2. 分析類型: 無母數分析(non-parametric analysis)直接使用資料數值算統計叫parametric方法把資料排序之後用排序的名次算統計叫non-parametric方法。
3. 前提假設: 無。
4. 資料範例: 咪路調查淡水河口彈塗魚的體長(cm)資料如下:
   14.3, 15.8, 14.6, 16.1, 12.9, 15.1, 17.3, 14.0, 14.5, 13.9, 16.2, 14.3, 14.6, 13.3, 15.5, 11.8, 14.8, 13.5, 16.3, 15.4, 15.5, 13.9, 10.7, 14.8, 12.9, 15.4
   : 這種彈塗魚的身長中數為15 cm? H0: median 等於15HA: median 不等於 15
5. 畫圖看資料分布:
dat = [14.3, 15.8, 14.6, 16.1, 12.9, 15.1, 17.3, 14.0, 14.5, 13.9, 16.2, 14.3, 14.6, 13.3, 15.5, 11.8, 14.8, 13.5, 16.3, 15.4, 15.5, 13.9, 10.7, 14.8, 12.9, 15.4]
import seaborn as sns
sns.set(style="whitegrid")
ax = sns.boxplot(x = dat, orient = "v", color = "skyblue", width=0.2)
ax = sns.swarmplot(x = dat, orient = "v", color = "red")

結果:

6. 使用無母數分析不需檢查資料是否為常態分布。

7. 使用Python計算單一樣本Wilcoxon signed-rank 檢定:
方法: Python 函數
dat = [14.3, 15.8, 14.6, 16.1, 12.9, 15.1, 17.3, 14.0, 14.5, 13.9, 16.2, 14.3, 14.6, 13.3, 15.5, 11.8, 14.8, 13.5, 16.3, 15.4, 15.5, 13.9, 10.7, 14.8, 12.9, 15.4]
n = len(dat)
y = []     # 建立一個空的新array y
for i in range(n):
    y.append(dat[i] - 15)  # H0: median等於15。所以要先把所有的值減15放到新array y
import scipy.stats
scipy.stats.wilcoxon(y)

結果: WilcoxonResult(statistic=121.0, pvalue=0.1659927430458631)
p = 0.166 > 0.05接受假設H0: median = 15彈塗魚的身長中數約為15 cm

留言

這個網誌中的熱門文章

三因子變異數分析 (Three-Way ANOVA)

兩組獨立樣本變異數相同 t 檢定 (Two-Sample t test with equal variances,parametric)

雙因子變異數分析 (Two-Way ANOVA)