单因素方差分析应用条件:

资料为定量资料

分组多于2组

各组变量服从正态分布以及方差齐性

各组变量之间无明显的异常值

数据实例:来自R语言中mulcomp包中的cholesterol数据集,主要比较了五种降低胆固醇的治疗方法(A,B,C,D,E)

引入数据代码:

library(multcomp)

View(cholesterol)

trt为分组变量,response为因变量

本数据只有一个因子,不同的治疗方法,分组为5组,所以组间比较采用单因素方差分析。

首先简单验证单因素分析的适用条件

数据正态分布:适用qq图

library(car)

qqPlot(lm(response~trt,data=cholesterol),simulate=T,main="q-q plot",labels=F)

根据上图,数据基本分布在直线上,基本符合正态分布。

方差齐性:bartlett.test

P值为0.9653,大于0.05,判断符合方差齐性的前提假设。

明显的异常值:outlierTest

P值为NA提示无明显异常值

至此,单因素方差分析的基本条件验证完毕,下面开始进行分析。

对于单因素方差分析,我们首先想知道的就是各组之间的均数和标准差。

library(psych)

describeBy(cholesterol["response"],list(trt=cholesterol\$trt))

上图展示了5组的描述性统计量。可以看出各组均数是有明显的区别。

下面进行单因素方差分析:

结果提示P值显著小于0.05,5组之间差异有统计学意义。

以图形的方式展示各组之间的差异。

library(gplots)

plotmeans(response~trt)

接下来面临的是到底哪几组之间有差异?也就是多重比较。有两种方法。

第一种:

根据上图最后一列,即可知道那两组之间有差异。

可视化展示

par(las=2)

par(mar=c(5,8,4,2))

plot(TukeyHSD(fit))

根据上图,凡是与0有交叉的为无统计学意义。

第二种方法:

library(multcomp)

par(mar=c(5,4,6,2))

TUK<-glht(fit,linfct=mcp(trt="Tukey"))

plot(cld(TUK,level = 0.05),col="lightgrey")

有相同字母的组,组间无明显统计学差异(图顶端)