我們總想人生簡簡單單的過,但努力生活卻總是讓我們容易複雜,迴歸分析也能有這樣的領悟,一組X,Y值是王子和公主美麗人生,再多一點X值,白雪公主是否要和七個小矮人一起生活的是非題也還算輕鬆;但人生就是這樣,還有更多元的,我們來試試複迴歸分析。
當我們想預測出一個數值,像是未來畢業生的收入、奶茶銷售量或是汽車可能的油耗,但觀測收集來的自**變數有很多組(X1,X2,X3..),**這個時候也許可以選擇複迴歸分析。
複迴歸(Multiple Regression
)又稱多元迴歸,與簡單迴歸的差異就是X自變數會有多個,相較羅吉斯迴歸則是依變數Y不是二元型別,複迴歸表示式:
Y= A + B1X1 + B2X2 + B3X3 +.. + BnXn + E
複迴歸模型就是要運算出常數A和所有自變數的B1-Bn係數!
在Visual Studio專案新增一支Day25.R
#載入資料
library(ggplot2)
data(mtcars)
#觀察資料
head(mtcars)
我們直觀挑選幾個有興趣的欄位來分析油耗。
相關係數可以表示兩組變數間的相關程度,值會介於-1與1之間,越靠近-1表示負相關,越靠近1則表示正相關。
如果x變數很多,可以先用相關係數(Corr
)觀察關係再選出有興趣的欄位。
cor(mtcars)[1,]
可以發現汽缸數、單汽缸排氣量、馬力及車重都有很高的負相關,反而傳統自手排的數值因為數值量化了(0=自排,1=手排)呈現了一定程度的正相關(0.599)。
#整理資料
mycars <- mtcars
#調整欄位值
mycars$am <- ifelse(mtcars$am == 0, "automatic", "manual");
#增加總排氣量
mycars$tdisp <- mtcars$cyl * mtcars$disp
#整理資料
mycars <- mtcars
#調整欄位值
mycars$am <- ifelse(mtcars$am == 0, "automatic", "manual");
#增加總排氣量
mycars$tdisp <- mtcars$cyl * mtcars$disp
#散佈圖 車重 vs 油耗
ggplot(mycars, aes(x = wt, y = mpg)) + geom_point(aes(color = am))
#散佈圖 馬力 vs 油耗
ggplot(mycars, aes(x = hp, y = mpg)) + geom_point(aes(color = hp))
#箱型圖觀察 自手排 vs 油耗
ggplot(mycars, aes(x = am, y = mpg)) + geom_boxplot(aes(fill = am))
執行結果:
散佈圖 車重 vs 油耗
散佈圖 馬力 vs 油耗
箱型圖觀察 自手排 vs 油耗
mlm <- lm(mpg ~ wt + hp + am + tdisp, data = mycars)
summary(mlm)
模型的整體績效
R-squared: 0.8407 解釋力還可以接受。
Adjusted R-squared(移除太多X造成Y預測能力增加情形的判定係數): 0.8171 解釋力還可以接受。
但在係數檢定上,只有車重和馬力有兩顆星**,排檔方式和排氣量的P-value都沒有到達信心水準。
1顆星*
:p < 0.05
2顆星**
:P < 0.01
3顆星***
:P < 0.001
方程式
Y = a + Bwt*x1 + Bhp*x2 +Bam*x3 + Btdisp*x4
填入常數及係數
Y = 34.50+(-3.10)*x1+(-0.04)*x2+(2.1884623)*x3 + (0.0003938)*x4
手寫運算一下預測結果(車重3000磅(1,362kg),馬力245匹,自排,排氣量1548cc)
Y = 34.50+(-3.10)*3+(-0.04)*245+(2.1884623)*0 + (0.0003938)*1548
Y = 16.0096
一加侖可以跑16英哩。
換算公制16 * 1.6/3.78541178 = 6.77 km/l,哈!是老車通常比較耗油嗎?
用模型預測
df <- data.frame(wt = 3,hp=245,am="automatic",tdisp=1548)
result <- predict(mlm, newdata = df)
result
執行結果:
一加侖可以跑15.84英哩。
重新對迴歸線方程式又多了一些了解,整理前兩天的迴歸模型。
Day23 R語言機器學習之簡單迴歸分析
Day24 R語言機器學習之羅吉斯迴歸
Day25 R語言機器學習之複迴歸分析預測
Motor Trend Car Road Tests
https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/mtcars.html
R - Multiple Regression
https://www.tutorialspoint.com/r/r_multiple_regression.htm
香草航空
2016.12.24攝於桃園機場戰備聯絡道