参考资料:R语言实战【第2版】
在双因素方差分析中,受试者被分配到两因子的交叉类别组中。以基础安装包中的ToothGrowth数据集为例,操作如下:
attach(ToothGrowth)
# 查看数据
head(ToothGrowth)
# 查看supp与dose交叉表
table(supp,dose)
# 查看均值
aggregate(len~supp+dose,FUN=mean)
# 查看标准差
aggregate(len~supp+dose,FUN=sd)
# 将dose设置为因子类型
dose<-as.factor(dose)
# 两因素方差分析
fit<-aov(len~supp*dose)
# 查看分析结果
summary(fit)
detach(ToothGrowth)
上面table()函数的预处理的结果显示:该设计是均衡设计(各设计单元中样本大小都相同)
aggregate()函数处理获得各单元的均值和标准差。如下:
dose变量被转换为因子变量,这样aov()函数就会将其当作一个分组变量,而不是一个数值型的协变量。用summary()函数得到方差分析表,可以看到主效应和交互效应都非常显著。
下面用interaction.plot()函数来展示双因素方差分析的交互作用:
interaction.plot(dose,
ToothGrowth$supp,
ToothGrowth$len,
type="b",
col=c("red","blue"),
pch=c(16,18),
main="Interaction between Dose and Supplement Type")
我们还可以用gplots包中的plotmeans()函数来展示交互效应(图形中包含了均值、误差线和样本大小)。如下:
# 加载gplots包
library(gplots)
attach(ToothGrowth)
# 绘图
plotmeans(len~interaction(supp,dose,sep=" "),
connect = list(c(1,3,5),c(2,4,6)),
col=c("red","blue"),
main="Interaction Plot with 95% CIs",
xlab="Treatment and Dose Combination")
detach(ToothGrowth)
我们还可以用HH包中的interaction2wt()函数来可视化结果,图形对任意顺序的因子设计的主效应和交互效应都会进行展示。此种方式更为推荐。因为它能展示任意复杂度的设计(双因素方差分析、三因素方差分析)的主效应(箱线图)和交互效应。
# 加载HH包
library(HH)
attach(ToothGrowth)
# 绘图
interaction2wt(len~supp*dose)
detach(ToothGrowth)
备注:本例中没有涵盖模型假设检验和均值比较的内容,因为他们只是单因素方差分析的一个自然扩展,和单因素方差分析是一样的。此外,本例的设计是均衡的,故而不担心效应顺序的影响。