R語言協方差分析
我們使用迴歸分析來創建描述預測變量變量對響應變量的影響的模型。有時,如果我們有類似於是/否或男/女等值的分類變量,簡單迴歸分析爲分類變量的每個值提供多個結果。在這種情況下,可以通過使用分類變量和預測變量來研究分類變量的影響,並比較分類變量的每個級別的迴歸線。 這樣的分析被稱爲協方差分析,也稱爲ANCOVA。
輸入數據
從R提供的數據集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
,我們得出結論,馬力與傳播類型之間的相互作用不明顯。所以每加侖里程將取決於自動和手動變速模式的馬力。