📅  最后修改于: 2023-12-03 15:04:46.415000             🧑  作者: Mango
协方差分析(ANCOVA, Analysis of Covariance)是一种利用covariate对因变量进行调整后比较各个因子或组别间差异的方法。具体而言,就是在控制一个或多个变量对因变量的影响后,比较其他因子或组别间的差异。
在R语言中,我们可以使用aov()
函数来执行协方差分析。
使用R进行协方差分析前,需要先准备好数据。数据应该包含因变量、因子变量和协变量。其中因变量和因子变量是必须的,而协变量不是必需的。协变量是一个连续变量,它可以影响因变量,但又与因子变量无关。
在本教程中,我们将使用R内置的mtcars
数据集,其中包含了32辆汽车的性能数据。我们的任务是比较不同车种之间的Miles/(US) gallon (mpg)的差异,同时控制车重(wt)对mpg的影响。
data(mtcars)
head(mtcars)
输出:
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
aov()
函数可以实现一元方差分析和协方差分析,参数与lm()
函数基本相同。
我们可以使用以下代码来进行协方差分析
model <- aov(mpg ~ as.factor(cyl) + wt, data = mtcars)
summary(model)
输出:
Df Sum Sq Mean Sq F value Pr(>F)
as.factor(cyl) 2 824.78 412.39 15.372 2.22e-05 ***
wt 1 79.07 79.07 2.947 0.09879 .
Residuals 28 251.86 8.99
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
从输出可以看出,cyl因子变量与mpg有显著的差异(P值<=0.05),wt协变量对mpg没有显著的影响(P值>0.05)。
我们还可以使用TukeyHSD()
函数来进行多重比较,该函数可以计算差异显著性和置信区间。
TukeyHSD(model)
输出:
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = mpg ~ as.factor(cyl) + wt, data = mtcars)
$`as.factor(cyl)`
diff lwr upr p adj
6-4 9.39230769 4.49989656 14.284719 0.0003140
8-4 11.56410256 6.14610963 17.982095 0.0000091
8-6 2.17179487 -3.24288930 7.586479 0.4645218
$wt
diff lwr upr p adj
1-2 -2.93817 -7.4982164 1.621877 0.1611837
从输出结果可以看出,不同cyl组之间的mpg有显著差异(P值<0.05),而不同wt组之间的mpg没有显著差异(P值>0.05)。