Hoe lineaire regressie werkt

Intermediary Regression in R

Richie Cotton

Data Evangelist at DataCamp

De standaardgrafiek voor simpele lineaire regressie

Een spreidingsdiagram met een lineaire regressietrendlijn.

Intermediary Regression in R

Residuen visualiseren

Het spreidingsdiagram met de lineaire regressietrendlijn, plus lijnstukken van de punten naar de trendlijn; dit zijn de residuen.

Intermediary Regression in R

Een maatstaf voor de beste fit

Het simpelste idee (werkt niet)

  • Neem de som van alle residuen.
  • Sommige residuen zijn negatief.

Het volgende simpele idee (werkt wel)

  • Kwadrateer elk residu en tel die op.
  • Dit heet de som van kwadraten.
Intermediary Regression in R

Een omweg via numerieke optimalisatie

Een lijngrafiek van een kwadratische vergelijking

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

Intermediary Regression in R

Met calculus de vergelijking oplossen

$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$

  • Niet alle vergelijkingen kun je zo oplossen.
  • Laat R het voor je uitrekenen.

oplossing lijn-kwadratisch

Intermediary Regression in 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
Intermediary Regression in R

Kleine verfijningen

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
Intermediary Regression in R

Een lineair regressie-algoritme

  1. Definieer een functie voor de som-van-kwadraten-metriek.
  2. Roep optim() aan om coëfficiënten te vinden die dit minimaliseren.
calc_sum_of_squares <- function(coeffs) {

intercept <- coeffs[1] slope <- coeffs[2]
# More calculation!
}
optim(
  par = ???,
  fn = ???
)
Intermediary Regression in R

Laten we oefenen!

Intermediary Regression in R

Preparing Video For Download...