線性迴歸如何運作

R 的迴歸分析中級

Richie Cotton

Data Evangelist at DataCamp

標準的簡單線性迴歸圖

帶有線性迴歸趨勢線的散佈圖。

R 的迴歸分析中級

殘差視覺化

在散佈圖與線性迴歸趨勢線上,從各點到趨勢線的線段代表殘差。

R 的迴歸分析中級

最佳擬合的衡量指標

最簡單的想法(不可行)

  • 把所有殘差相加。
  • 有些殘差為負。

下一個更簡單的想法(可行)

  • 將每個殘差平方,然後把平方值相加。
  • 這稱為「平方和」。
R 的迴歸分析中級

數值最佳化小插曲

二次方程式的折線圖

xy_data <- tibble(
  x = seq(-4, 5, 0.1),
  y = x ^ 2 - x + 10
)

ggplot(xy_data, aes(x, y)) + 
  geom_line()

line-quad.png

R 的迴歸分析中級

用微積分解方程

$y = x ^ 2 - x + 10$

$\frac{\partial y}{\partial x} = 2 x - 1$

$0 = 2 x - 1$

$x = 0.5$

$y = 0.5 ^ 2 - 0.5 + 10 = 9.75$

  • 不是所有方程都能這樣解。
  • 你可以交給 R 來算。

line-quad-soln.png

R 的迴歸分析中級

optim()

calc_quadratic <- function(x) {
  x ^ 2 - x + 10
}
optim(par = 3, fn = calc_quadratic)
$par
[1] 0.4998047

$value
[1] 9.75

$counts
function gradient 
      30       NA 

$convergence
[1] 0

$message
NULL
R 的迴歸分析中級

小幅調整

calc_quadratic <- function(coeffs) {
  x <- coeffs[1]
  x ^ 2 - x + 10
}
optim(par = c(x = 3), fn = calc_quadratic)
$par
        x 
0.4998047 

$value
[1] 9.75

$counts
function gradient 
      30       NA 

$convergence
[1] 0

$message
NULL
R 的迴歸分析中級

線性迴歸演算法

  1. 定義一個函式來計算平方和指標。
  2. 呼叫 optim() 尋找讓此函式最小化的係數。
calc_sum_of_squares <- function(coeffs) {

intercept <- coeffs[1] slope <- coeffs[2]
# More calculation!
}
optim(
  par = ???,
  fn = ???
)
R 的迴歸分析中級

一起來練習吧!

R 的迴歸分析中級

Preparing Video For Download...