線形回帰の仕組み

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で学ぶ中級回帰分析

演習に進みましょう!

Rで学ぶ中級回帰分析

Preparing Video For Download...