📜  R-协方差分析(1)

📅  最后修改于: 2023-12-03 15:04:46.415000             🧑  作者: Mango

R协方差分析介绍

协方差分析(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)。