Regresia Poisson și quasipoisson pentru predicția numărătorilor

Învățare supervizată în R: Regresia

Nina Zumel and John Mount

Win-Vector, LLC

Predicția numărătorilor

  • Regresia liniară: prezice valori în $[-\infty, \infty]$
  • Numărători: numere întregi în intervalul $[0,\infty]$
Învățare supervizată în R: Regresia

Regresia Poisson/Quasipoisson

glm(formula, data, family)
  • family: poisson sau quasipoisson
  • intrările sunt aditive și liniare în log(numărătoare)
Învățare supervizată în R: Regresia

Regresia Poisson/Quasipoisson

glm(formula, data, family)
  • family: poisson sau quasipoisson
  • intrările sunt aditive și liniare în log(numărătoare)
  • variabila răspuns: număr întreg
    • numărători: ex. numărul de amenzi primite de un șofer
    • rate: ex. numărul de accesări ale unui site/zi
  • predicție: rata sau intensitatea așteptată (nu valoare întreagă)
    • numărul așteptat de amenzi; accesări așteptate/zi
Învățare supervizată în R: Regresia

Poisson vs. Quasipoisson

  • Poisson presupune că mean(y) = var(y)
  • Dacă var(y) diferă mult de mean(y) - se folosește quasipoisson
  • Necesită în general un eșantion mare
  • Dacă rate/numărători >> 0 - regresia obișnuită este suficientă
Învățare supervizată în R: Regresia

Exemplu: Predicția închirierilor de biciclete

Învățare supervizată în R: Regresia

Ajustarea modelului

bikesJan %>% 
  summarize(mean = mean(cnt), var = var(cnt))
      mean      var
1 130.5587 14351.25

Deoarece var(cnt) >> mean(cnt) $\rightarrow$ se folosește quasipoisson

fmla <- cnt ~ hr + holiday + workingday + 
  weathersit + temp + atemp + hum + windspeed

model <- glm(fmla, data = bikesJan, family = quasipoisson)
Învățare supervizată în R: Regresia

Verificarea calității modelului

$$ pseudo R^2 = 1 - \frac{deviance}{null.deviance} $$

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
Învățare supervizată în R: Regresia

Predicții din model

predict(model, newdata = bikesFeb, type = "response")

Învățare supervizată în R: Regresia

Evaluarea modelului

Modelele de numărare pot fi evaluate prin RMSE

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
Învățare supervizată în R: Regresia

Compararea predicțiilor cu valorile reale

Învățare supervizată în R: Regresia

Să exersăm!

Învățare supervizată în R: Regresia

Preparing Video For Download...