我們使用回歸分析創建模型,描述變量在預測變量對響應變量的影響。 有時,如果我們有一個類別變量,如Yes / No或Male / Female等。簡單的回歸分析為分類變量的每個值提供多個結果。 在這種情況下,我們可以通過將分類變量與預測變量一起使用并比較分類變量的每個級別的回歸線來研究分類變量的效果。 這樣的分析被稱為協方差分析,也稱為ANCOVA。
例
考慮在數據集mtcars中內置的R語言。 在其中我們觀察到字段“am”表示傳輸的類型(自動或手動)。 它是值為0和1的分類變量。汽車的每加侖英里數(mpg)也可以取決于馬力(“hp”)的值。
我們研究“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
協方差分析
我們創建一個回歸模型,以“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,我們得出結論,馬力和傳播類型之間的相互作用不顯著。 因此,在汽車和手動變速器模式下,每加侖的里程將以類似的方式取決于汽車的馬力。