1. 由一元到多元
上一篇我們介紹了簡單線性回歸
y= b1*x1 + b0
是一個獨立變數(independent variable)影響了一個相依變數(dependent variable)
但現實的世界裡一個結果往往是多個原因造成的。比如說:鑽石的價格是由重量、形狀、顏色、淨度這四個因素造成;颱風的生行由溫度、溼度、大氣壓力等原因造成。那多元回歸就可以使用了!
假設以下條件成立:
.線性
.homoscedasticity 同方差性(PCA)
. 多元常態 正規性 multivariate normality 常態
.錯誤獨立性
.多行線性:multicollinearity
2. 轉換為多元回歸模型
先看以下的表格

以 獲利(Profit)當作預測目標(相依變數),多元回歸模型可寫成
y= b0 + b1*x1 + b2*x2 + b3*x3
但到了第四項洲地區(State)就不大對:這是一種分類式資料(categorial data)
對分類式資料的處理用以下的方法:
1. 先統計出全部有多少種類:以這張圖來說,總共有3種分類:New York, California, Florida
2. 在將洲地區轉換成 以New York, California, Florida 這三個新的行(column)。有相對應的地區,就用1,其他欄位用0。如果有印象,這就是在資料預先處理時所用的編碼:one-hot encoding。
要用以下的程式碼:
datasets$State = factor(datasets$State,
levels = c('New York ','California','Florida'),
labels = c(1,2,3))
執行後的結果是:

切割資料
在 R 語言裡面,切割資料的目的是相依變數(dependent variable)。這裡 datasets 的 相依變數(dependent variable)是獲利(Profit)
要用以下的程式碼:
library(caTools)
set.seed(123)
split = sample.split(datasets$Profit, SplitRatio = 0.8)
這裡我們將訓練資料改成80% SplitRatio = 0.8
training_set = subset(datasets, split == TRUE)
test_set = subset(datasets, split == FALSE)
執行後的結果是:

4.建立模型
很幸運地,在多元回歸模型的使用上和一元/簡單回歸模型是一樣的,只有特徵資料的維度由一元到多元而已:
正規的寫法是:
regressor=lm(formula = Profit ~ R.D.Spend + Administration + Marketing.Spent + State,
但是,這裡有一個比較簡潔有力的寫法:如果資料集合中除了相依變數以外,其他都是獨立變數的時候,可以寫成:
regressor=lm(formula = Profit ~ .
這樣就直接使用全部的獨立變數了
加上訓練資料後:
regressor=lm(formula = Profit ~ .,data = training_set)
執行後,我們在左下邊的指令視窗可下 summary()

可以看到完整的訓練後的回歸模型以及統計學上的參數檢定結果,這也是 Python 語言沒有提供給我們的

在這裡的總結可看到 P值。越小的 P值代表該獨立變數與相依變數越具有統計顯著性。P值 的一個好門檻是 5%。若一個獨立變數的P值 小於 5%,這個獨立變數就具有高度的統計顯著性。

在圖中,我們看見 R.D.Spend 有 3 顆星,表示 R.D.Spend 與我們的預測值 Profit 有顯著相關!對於投資人來說很重要,因為最大的獲利來自於對 R.D.Spend 。所以未來只要加強 R.D.Spend ,公司的獲利就有顯著的提升。
預測測試資料
y_pred=predict(regressor, newdata = test_set)
在左下邊的指令視窗下 y_pred 就可以看到模型預測的結果


將 y_pred 和 test_set 裡的 Profit 相比較,會發現真的沒有差太多。因此,多元線性回歸 的效果還不錯!
