位置:首頁 > 大數據教學 > R語言教學 > R語言協方差分析

R語言協方差分析

之前我們用回歸分析來創建一個描述變異的預測變量對因變量的影響模型。有時,如果我們有像是/否或男/女等值的分類變量,簡單的回歸分析給出變量的每個值多個結果的分類。在這樣的情況下,我們可以通過使用它連同預測變量和比較為分類變量的每個級彆的回歸線來研究分類變量的效果。這種分析也稱為協方差分析(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

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,我們得出結論,馬力和透射型之間的相互作用是不顯著。所以每加侖裡程將取決於在汽車中自動和手動變速模式的馬力。