上一讲,我们讲了方差分析的原理和R实现(xxxxx),但是,在发现至少存在一组与其他组之间存在差异以后,我们如何知道具体是哪两组间存在差异。 方差分析需要满足几个条件,他们的假设检验条件的检验方法是什么?如果数据不满足假设条件,要怎么办?
今天,小编就带大家来一一回答这些问题。
首先,如第十四讲,我们已经完成了如下操作,发现方差分析P值 < 0.05.
# 导入R内自带的PlantGrowth数据集
library(datasets)
data(PlantGrowth)
# 将数据存储在变量my_data中
my_data <- PlantGrowth
# 计算方差分析
res.aov <- aov(weight ~ group, data = my_data)
# 总结分析结果
summary(res.aov) #P = 0.016
在单因素方差分析中,显著的p值表示某些组均值不同,但我们不知道具体哪些组之间不同。这时,可以执行多个成对比较,以确定特定组对之间的平均差异是否具有统计显著性。
我们可以计算Tukey HSD(Tukey Honest Significant Differences,R函数:TukeyHSD()可以实现),以在组均值之间进行多次成对比较。
函数TukeyHD()将之前拟合生成的ANOVA函数作为参数:
TukeyHSD(res.aov)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = weight ~ group, data = my_data)
$group
diff lwr upr p adj
trt1-ctrl -0.371 -1.0622161 0.3202161 0.3908711
trt2-ctrl 0.494 -0.1972161 1.1852161 0.1979960
trt2-trt1 0.865 0.1737839 1.5562161 0.0120064
从输出中可以看出,只有trt2与trt1之间的差异显着,调整后的p值为0.012。
如开头讲到,ANOVA需要满足一定的条件:
我们需要对假设数据是正态分布的,并且各组之间的方差是均匀的进行验证。
我们可以通过如下方法来检验。
2.1.1残差与拟合曲线图来检查方差齐性。
在下面的图中,残差和拟合值(每组的平均值)之间没有明显的关系, 因此,我们可以假设方差是同质的。
# 方差齐性检验
plot(res.aov, 1)
该图会自动标出明显的异常只。途中点17、15、4被检测为异常值,这会严重影响方差的正态性和同质性。如果此时出现方差不齐, 会建议删除异常值以满足假设成立。
2.1.2 Levene 检验
也可以使用Bartlett检验或Levene检验来检验方差齐性。
我们建议使用Levene检验,该检验对偏离正态分布不敏感。可以使用函数leveneTest()[在car包装中]:
library(car)
leveneTest(weight ~ group, data = my_data)
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 2 1.1192 0.3412
27
从上面的输出中,我们可以看到p值>0.05的显着性水平。这意味着没有证据表明各组之间的差异在统计学上有显着差异。因此,我们可以假设不同治疗组中方差同质。
经典的单因素方差分析要求所有组的方差均等。在我们的示例中,方差假设的同质性满足:Levene检验不显着。
在方差齐性被违反的情况下,我们如何继续方差分析呢?
另一个统计学方法(即:Welch one-way test),它不需要满足方差齐性的假说。函数oneway.test()可以实现。
oneway.test(weight ~ group, data = my_data)
pairwise.t.test(my_data$weight, my_data$group,
p.adjust.method = "BH", pool.sd = FALSE)
2.3.1 残差的正态图。
在下面的图中,相对于正态分布的分位数绘制了残差的QQ图,并且还绘制了45度参考线。
残差的正态概率图用于检查残差呈正态分布的假设。如果它满足正态性,应该要大致分布在45度参考线上。
plot(res.aov, 2)
当所有点都大致沿着该参考线落下时,我们可以假定为正态。
2.3.2 Shapiro-Wilk检验
此外,我们可以使用Shapiro-Wilk检验检查残差是否符合正态分布。
# 提取残差
aov_residuals <- residuals(object = res.aov )
# Shapiro-Wilk 检验
shapiro.test(x = aov_residuals )
Shapiro-Wilk normality test
data: aov_residuals
W = 0.96607, p-value = 0.4379
以上结论显示P > 0.05, 残差符合正态分布( p = 0.6),没有发现违反正态性的迹象。
注意,单因素ANOVA的非参数替代方法是Kruskal-Wallis 秩和检验,当数据不满足ANOVA假设条件时,我们可以使用该检验。
kruskal.test(weight ~ group, data = my_data)
Kruskal-Wallis rank sum test
data: weight by group
Kruskal-Wallis chi-squared = 7.9882, df = 2, p-value = 0.01842
从Kruskal-Wallis检验的输出中,我们知道组之间存在显着差异,但我们不知道具体哪些组是不同的。
可这时,以使用pairwise.wilcox.test() 函数对组别之间进行成对比较,并进行多重检验的更正。
pairwise.wilcox.test(PlantGrowth$weight, PlantGrowth$group,
p.adjust.method = "BH")
Pairwise comparisons using Wilcoxon rank sum test
data: PlantGrowth$weight and PlantGrowth$group
ctrl trt1
trt1 0.199 -
trt2 0.095 0.027
P value adjustment method: BH
成对比较显示,只有trt1和trt2显着不同(p <0.05)。
如果您觉得我说的对您有帮助,请点赞让我感到您的支持,您的支持是我写作最大的动力~
ijournal:高颜值的期刊检索网站,助您快速找到理想目标期刊(weixin小程序也上线了哦)
投必得:全专业中英文论文润色编辑助力您的论文快速发表,点击了解业务详情
专栏传送门:
投必得科研软件安装使用手册;投必得:SCI期刊介绍与选择;投必得,教你写论文;投必得统计分析大讲堂;投必得科研生活解忧杂货店