R语言 协方差分析
我们使用回归分析来创建模型,描述预测变量对响应变量的变异的影响。有时,如果我们有一个包含像是是/否或男/女等值的分类变量。简单的回归分析为每个分类变量的值给出多个结果。在这种情况下,我们可以通过将分类变量与预测变量一起使用,并比较每个级别分类变量的回归线来研究分类变量的影响。这样的分析称为 协方差分析 也称为 ANCOVA 。
示例
考虑R内置的数据集mtcars。我们可以观察到字段“am”代表传输类型(自动或手动)。它是一个分类变量,值为0和1。除了马力(“hp”)的值之外,汽车每加仑的英里数(mpg)也可能取决于它。
我们研究“am”值对“mpg”和“hp”之间的回归的影响。通过使用 aov() 函数,然后使用 anova() 函数来比较多个回归来完成。
输入数据
从数据集mtcars中创建一个包含字段“mpg”,“hp”和“am”的数据框。在这里,我们将“mpg”作为响应变量,“hp”作为预测变量,“am”作为分类变量。
input <- mtcars[,c("am","mpg","hp")]
print(head(input))
当我们执行上述代码时,将会得到以下结果 –
am mpg hp
Mazda RX4 1 21.0 110
Mazda RX4 Wag 1 21.0 110
Datsun 710 1 22.8 93
Hornet 4 Drive 0 21.4 110
Hornet Sportabout 0 18.7 175
Valiant 0 18.1 105
ANCOVA分析
我们建立一个回归模型,以”hp”作为预测变量,”mpg”作为响应变量,考虑到”am”和”hp”之间的交互作用。
具有分类变量和预测变量之间交互作用的模型
# Get the dataset.
input <- mtcars
# Create the regression model.
result <- aov(mpg~hp*am,data = input)
print(summary(result))
当我们执行上面的代码时,会产生如下结果:
Df Sum Sq Mean Sq F value Pr(>F)
hp 1 678.4 678.4 77.391 1.50e-09 ***
am 1 202.2 202.2 23.072 4.75e-05 ***
hp:am 1 0.0 0.0 0.001 0.981
Residuals 28 245.4 8.8
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
这个结果显示,无论是马力还是传输类型对每加仑英里数都有显著影响,因为在这两种情况下的p值都小于0.05。但是这两个变量之间的相互作用并不显著,因为p值大于0.05。
没有分类变量和预测变量之间相互作用的模型
# Get the dataset.
input <- mtcars
# Create the regression model.
result <- aov(mpg~hp+am,data = input)
print(summary(result))
当我们执行上面的代码时,它会产生以下结果−
Df Sum Sq Mean Sq F value Pr(>F)
hp 1 678.4 678.4 80.15 7.63e-10 ***
am 1 202.2 202.2 23.89 3.46e-05 ***
Residuals 29 245.4 8.5
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
这个结果表明,马力和传输类型对每加仑英里数都有显著影响,因为两种情况下的p值都小于0.05。
比较两个模型
现在我们可以比较这两个模型,以确定变量间的交互作用是否真的不显著。为此,我们使用 anova() 函数。
# Get the dataset.
input <- mtcars
# Create the regression models.
result1 <- aov(mpg~hp*am,data = input)
result2 <- aov(mpg~hp+am,data = input)
# Compare the two models.
print(anova(result1,result2))
当我们执行以上代码时,会产生以下结果 −
Model 1: mpg ~ hp * am
Model 2: mpg ~ hp + am
Res.Df RSS Df Sum of Sq F Pr(>F)
1 28 245.43
2 29 245.44 -1 -0.0052515 6e-04 0.9806
由于p值大于0.05,我们得出结论:马力和传输类型之间的交互作用不显著。因此,每加仑的里程将以类似的方式取决于汽车的马力,无论是自动还是手动传输方式。