R - 多元線性迴歸



多元迴歸是線性迴歸在多個變數之間關係上的擴充套件。在簡單的線性關係中,我們有一個預測變數和一個響應變數,但在多元迴歸中,我們有多個預測變數和一個響應變數。

多元迴歸的一般數學方程為:

y = a + b1x1 + b2x2 +...bnxn

以下是所用引數的描述:

  • y 是響應變數。

  • a, b1, b2...bn 是係數。

  • x1, x2, ...xn 是預測變數。

我們使用 R 中的 lm() 函式建立迴歸模型。該模型使用輸入資料確定係數的值。接下來,我們可以使用這些係數預測給定一組預測變數時響應變數的值。

lm() 函式

此函式建立預測變數和響應變數之間的關係模型。

語法

多元迴歸中 lm() 函式的基本語法為:

lm(y ~ x1+x2+x3...,data)

以下是所用引數的描述:

  • formula 是一個符號,表示響應變數和預測變數之間的關係。

  • data 是將公式應用到的向量。

示例

輸入資料

考慮 R 環境中可用的資料集“mtcars”。它對不同汽車型號在每加侖英里數 (mpg)、汽缸排量 ("disp")、馬力 ("hp")、汽車重量 ("wt") 和一些其他引數方面的比較進行了比較。

模型的目標是建立“mpg”作為響應變數與“disp”、“hp”和“wt”作為預測變數之間的關係。為此,我們從 mtcars 資料集中建立了這些變數的子集。

input <- mtcars[,c("mpg","disp","hp","wt")]
print(head(input))

當我們執行上述程式碼時,它會產生以下結果:

                   mpg   disp   hp    wt
Mazda RX4          21.0  160    110   2.620
Mazda RX4 Wag      21.0  160    110   2.875
Datsun 710         22.8  108     93   2.320
Hornet 4 Drive     21.4  258    110   3.215
Hornet Sportabout  18.7  360    175   3.440
Valiant            18.1  225    105   3.460

建立關係模型並獲取係數

input <- mtcars[,c("mpg","disp","hp","wt")]

# Create the relationship model.
model <- lm(mpg~disp+hp+wt, data = input)

# Show the model.
print(model)

# Get the Intercept and coefficients as vector elements.
cat("# # # # The Coefficient Values # # # ","\n")

a <- coef(model)[1]
print(a)

Xdisp <- coef(model)[2]
Xhp <- coef(model)[3]
Xwt <- coef(model)[4]

print(Xdisp)
print(Xhp)
print(Xwt)

當我們執行上述程式碼時,它會產生以下結果:

Call:
lm(formula = mpg ~ disp + hp + wt, data = input)

Coefficients:
(Intercept)         disp           hp           wt  
  37.105505      -0.000937        -0.031157    -3.800891  

# # # # The Coefficient Values # # # 
(Intercept) 
   37.10551 
         disp 
-0.0009370091 
         hp 
-0.03115655 
       wt 
-3.800891 

建立迴歸模型的方程

根據上述截距和係數值,我們建立數學方程。

Y = a+Xdisp.x1+Xhp.x2+Xwt.x3
or
Y = 37.15+(-0.000937)*x1+(-0.0311)*x2+(-3.8008)*x3

應用方程預測新值

我們可以使用上面建立的迴歸方程來預測當提供置換、馬力和重量的新值集時的里程。

對於一輛 disp = 221、hp = 102 和 wt = 2.91 的汽車,預測的里程為:

Y = 37.15+(-0.000937)*221+(-0.0311)*102+(-3.8008)*2.91 = 22.7104
廣告