我们通常使用回归分析来创建描述预测变量变量对响应变量的影响的模型,有时,如果我们有类似于是/否或男/女等值的分类变量,简单回归分析为分类变量的每个值提供多个结果。在这种情况下,我们可以通过使用分类变量和预测变量来研究分类变量的影响,并比较分类变量的每个级别的回归线。 这样的分析被称为协方差分析,也称为ANCOVA。
我们接下来使用数据集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
我们再来尝试创建一个回归模型,将“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
,我们可以得出结论,马力与传播类型之间的相互作用不明显。所以每加仑里程将取决于自动和手动变速模式的马力。
好啦,本次记录就到这里了。
如果感觉不错的话,请多多点赞支持哦。。。