Come funziona la regressione lineare

Regressione intermedia in R

Richie Cotton

Data Evangelist at DataCamp

Il grafico standard della regressione lineare semplice

Un grafico a dispersione con una retta di regressione lineare.

Regressione intermedia in R

Visualizzare i residui

Il grafico a dispersione con la retta di regressione e segmenti dai punti alla retta, che rappresentano i residui.

Regressione intermedia in R

Una metrica per il miglior fit

L'idea più semplice (che non funziona)

  • Somma tutti i residui.
  • Alcuni residui sono negativi.

L'idea successiva (che funziona)

  • Eleva al quadrato ogni residuo e somma quei quadrati.
  • Si chiama somma dei quadrati.
Regressione intermedia in R

Una deviazione nell'ottimizzazione numerica

Un grafico a linee di un'equazione quadratica

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

Regressione intermedia in R

Usare il calcolo differenziale per risolvere l'equazione

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

  • Non tutte le equazioni si risolvono così.
  • Puoi lasciare che R lo calcoli.

line-quad-soln.png

Regressione intermedia 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
Regressione intermedia in R

Piccoli perfezionamenti

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
Regressione intermedia in R

Un algoritmo di regressione lineare

  1. Definisci una funzione per calcolare la metrica della somma dei quadrati.
  2. Chiama optim() per trovare i coefficienti che minimizzano questa funzione.
calc_sum_of_squares <- function(coeffs) {

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

Esercitiamoci!

Regressione intermedia in R

Preparing Video For Download...