线性回归如何工作

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 来计算。

线性与二次方程的解示意图

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 中级回归

Vamos praticar!

R 中级回归

Preparing Video For Download...