基于R语言开展方差分析(二)—双因素方差分析
基本原理
双因素方差分析是用于同时分析两个自变量对一个因变量影响的方法。双因素方差分析先将受试对象按性质(窝别、体重等非试验因素)相同或相近者组成A个区组(配伍组),再把每个区组中的受试者分别随机分配到B个处理组观察实验效应。双因素方差分析的检验假设如下:
原假设 |
备择假设 |
因素A对总体均数没影响 |
因素A对总体均数有影响 |
因素B对总体均数没影响 |
因素B对总体均数有影响 |
因素A和因素B交叉作用对总体均数没影响 |
因素A和因素B的交叉作用对总体均数有影响 |
R语言实践
本文使用R语言内置数据集ToothGrowth进行双因素方差分析实践。ToothGrowth是用于评估维生素C对豚鼠牙齿生长影响的数据集。在该数据中,每只豚鼠通过橙汁或抗坏血酸中的一种给药方法分别接受三种剂量水平的维生素C(0.5、1和2mg/天);该数据集包含了60只豚鼠的数据。
首先,导入数据:
# 导入数据
my_data <- ToothGrowth
# 将剂量转换为因子数据类型
my_data$dose <- factor(my_data$dose,
levels = c(0.5, 1, 2),
labels = c("D0.5", "D1", "D2"))
其次,对通过箱型图和线图数据进行可视化:
# 绘制箱型图
ggboxplot(my_data, x = "dose", y = "len", color = "supp",
palette = c("#00AFBB", "#E7B800"))
# 绘制线图
ggline(my_data, x = "dose", y = "len", color = "supp",
add = c("mean_se", "dotplot"),
palette = c("#00AFBB", "#E7B800"))
绘制结果如下:
然后进行方差分析:
# 计算方差分析
res.aov <- aov(len ~ supp * dose, data = my_data)
# 输出分析结果
summary(res.aov)
需要注意的是在aov函数中给药方式(supp)和剂量(dose)两个因素之间用乘号(*)连接,不能使用加号(+)连接。使用加号表示假设两个因素之间是独立的,这样就不能检验因素间的交叉作用是否对总体均数有影响。分析结果如下:
Df Sum Sq Mean Sq F value Pr(>F)
supp 1 205.4 205.4 15.572 0.000231 ***
dose 2 2426.4 1213.2 92.000 < 2e-16 ***
supp:dose 2 108.3 54.2 4.107 0.021860 *
Residuals 54 712.1 13.2
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
上述结果表明三个原假设均被拒绝,即给药方式、剂量以及两个因素的交互作用均对豚鼠牙齿生长有影响。同时,我们可以看出剂量对豚鼠牙齿生长的影响最大。
最后,我们可以计算Tukey HSD(Tukey Honest Significant Differences,R函数:TukeyHSD()可以实现),以在组均值之间进行多次成对比较。结合方差分析的结果,我们剂量这一个因素进行多次成对比较:
# 确定特定组对之间的平均差异是否具有统计显著性
TukeyHSD(res.aov, which = "dose")
分析结果如下:
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = len ~ supp * dose, data = my_data)
$dose
diff lwr upr p adj
D1-D0.5 9.130 6.362488 11.897512 0.0e+00
D2-D0.5 15.495 12.727488 18.262512 0.0e+00
D2-D1 6.365 3.597488 9.132512 2.7e-06
上述结果表明说明不同剂量对豚鼠牙齿生长的影响不同。