單一樣本Wilcoxon signed-rank 檢定 (One-Sample Wilcoxon signed-rank test,non-parametric)
套路 7: 單一樣本Wilcoxon signed-rank 檢定
(One-Sample Wilcoxon signed-rank test,non-parametric)
什麼是單一樣本假設檢定? 說白了就是只有一組資料做假設檢定。統計假設檢定檢定什麼?看H0。例如單一樣本假設檢定H0 : median等於 0,HA : median不等於0是檢定資料的平均值是否為0。又例如單一樣本假設檢定H0 : median
小於 8,HA : 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 等於15。HA: 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。
留言
張貼留言