单因子多样本中位数差异检定 (Kruskal-Wallis test)

分类: 比较多组平均值或中位数 |
单因子多样本中位数差异检定 (Kruskal-Wallis test)
1. 使用时机: 变异数分析适用连续数据之差异分析,若自变项有一个,就是单因子变异数分析。多样本中位数差异检定是对应单因子变异数分析的无母数分析方法。当数据不符合单因子变异数分析的前提假设(相同变异数,数据为常态分布)时,可选择多样本中位数差异检定来做为替代分析方法。
2. 分析类型: 无母数分析(non-parametric analysis)。
3. 假设前提: 无。
4. 范例数据: 咪路调查喂食不同饲料的肉鸡体重(g),资料如下:
饲料1 |
饲料2 |
饲料3 |
饲料4 |
61.8 |
78.8 |
70.5 |
60.3 |
65.1 |
79.5 |
72.6 |
63.8 |
61.7 |
76.0 |
71.7 |
64.1 |
63.3 |
73.4 |
72.0 |
61.4 |
|
77.3 |
71.1 |
60.9 |
不同饲料是否效果不同?
H0: 喂食不同饲料的肉鸡体重(中位数)相同。
HA: 喂食不同饲料的肉鸡体重(中位数)不完全相同。
第一步: 使用基本模块(base)的read.table函数输入建立数据储存到变量m。
m <- read.table(header = TRUE, text = "
Feed Weight
F1 61.8
F1 65.1
F1 61.7
F1 63.3
F2 78.8
F2 79.5
F2 76.0
F2 73.4
F2 77.3
F3 70.5
F3 72.6
F3 71.7
F3 72.0
F3 71.1
F4 60.3
F4 63.8
F4 64.1
F4 61.4
F4 60.9")
attach(m)
names(m)
5. 画图看数据分布:
第一步: 安装ggplot2程序套件。
library(ggplot2)
第三步: 使用函数ggplot代入m数据画box图。
ggplot(m, aes(x = Feed, y = Weight)) +
6. 计算多样本中位数差异检定:
第一步: 使用基本模块(base)的kruskal.test函数代入m中数据来计算多样本中位数差异检定。
kruskal.test(Weight ~ Feed, data = m)
data:
Kruskal-Wallis chi-squared = 15.701, df = 3, p-value = 0.001306
# p-value < 0.05,喂食不同饲料的肉鸡体重(中位数)相同,不成立。
# p-value > 0.05,喂食不同饲料的肉鸡体重(中位数)相同,成立。
7. H0不成立时需计算多重比较(multiple comparison)来显示有差异的组别:
pairwise.wilcox.test(Weight, Feed, p.adjust.method = "bonferroni")
# p.adjust.method = "bonferroni"修正p值的方法。
# 使用help(p.adjust)可显示修正p值的方法说明。
data:
F2 0.095 -
F3 0.095 0.048 -
F4 1.000 0.048 0.048
P value adjustment method: bonferroni
# p < 0.05是中位数有差异的组别。
来劲了吗? 想知道更多?? 补充资料(链接):
1. 关于Nonparametric statistics (https://en.wikipedia.org/wiki/Nonparametric_statistics)
2. 关于Analysis of variance (https://en.wikipedia.org/wiki/Analysis_of_variance)
3. 关于Kruskal–Wallis one-way analysis of variance (https://en.wikipedia.org/wiki/Kruskal–Wallis_one-way_analysis_of_variance)
4. 关于Multiple comparisons problem (https://en.wikipedia.org/wiki/Multiple_comparisons_problem)
5. 关于R基础,R绘图及统计快速入门:
6. Zar, JH. 2010. Biostatistical Analysis, Fifth Edition, Pearson.