以 Poisson 與 quasipoisson 迴歸預測計數

R 中的監督式學習:回歸

Nina Zumel and John Mount

Win-Vector, LLC

預測計數

  • 線性迴歸:預測範圍為 $[-\infty, \infty]$
  • 計數:整數,範圍 $[0,\infty]$
R 中的監督式學習:回歸

Poisson/Quasipoisson 迴歸

glm(formula, data, family)
  • family:poissonquasipoisson
  • 輸入在 log(count) 上為加性且線性
R 中的監督式學習:回歸

Poisson/Quasipoisson 迴歸

glm(formula, data, family)
  • family:poissonquasipoisson
  • 輸入在 log(count) 上為加性且線性
  • 結果:_整數_
    • 計數:例如駕駛收到的交通罰單數
    • 率:例如網站每日點擊數
  • 預測:期望_率_或_強度_(非整數)
    • 期望罰單數;期望每日點擊數
R 中的監督式學習:回歸

Poisson 與 Quasipoisson 比較

  • Poisson 假設 mean(y) = var(y)
  • var(y)mean(y) 差很多 → 用 quasipoisson
  • 一般需要較大的樣本量
  • 若率/計數 >> 0,使用一般迴歸也可
R 中的監督式學習:回歸

範例:預測腳踏車租借量

R 中的監督式學習:回歸

配適模型

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

由於 var(cnt) >> mean(cnt) $\rightarrow$ 使用 quasipoisson

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

model <- glm(fmla, data = bikesJan, family = quasipoisson)
R 中的監督式學習:回歸

檢查模型配適度

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

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
R 中的監督式學習:回歸

由模型進行預測

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

R 中的監督式學習:回歸

評估模型

你可以用 RMSE 評估計數模型。

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
R 中的監督式學習:回歸

比較預測與實際結果

R 中的監督式學習:回歸

一起來練習吧!

R 中的監督式學習:回歸

Preparing Video For Download...