ポアソン回帰と擬似ポアソン回帰によるカウント予測

R による Supervised Learning:回帰

Nina Zumel and John Mount

Win-Vector, LLC

カウントの予測

  • 線形回帰: $[-\infty, \infty]$ の値を予測
  • カウント: $[0,\infty]$ の整数
R による Supervised Learning:回帰

ポアソン/擬似ポアソン回帰

glm(formula, data, family)
  • family: poisson または quasipoisson
  • 入力は log(カウント) に対して加法的・線形
R による Supervised Learning:回帰

ポアソン/擬似ポアソン回帰

glm(formula, data, family)
  • family: poisson または quasipoisson
  • 入力は log(カウント) に対して加法的・線形
  • 目的変数: _整数_
    • カウント: 例) ドライバーの違反件数
    • レート: 例) 1日あたりのサイト訪問数
  • 予測: 期待 レート または _強度_(整数ではない)
    • 期待違反件数、期待訪問数/日
R による Supervised Learning:回帰

ポアソン vs. 擬似ポアソン

  • ポアソン分布の仮定: mean(y) = var(y)
  • var(y)mean(y) が大きく異なる場合は quasipoisson を使用
  • 一般に大きなサンプルサイズが必要
  • レート/カウントが >> 0 の場合は通常の回帰で対応可能
R による Supervised Learning:回帰

例: 自転車レンタル数の予測

R による Supervised Learning:回帰

モデルの適合

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 による Supervised Learning:回帰

モデル適合の確認

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

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
R による Supervised Learning:回帰

モデルによる予測

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

R による Supervised Learning:回帰

モデルの評価

カウントモデルの評価には RMSE を使用できます

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
R による Supervised Learning:回帰

予測値と実績値の比較

R による Supervised Learning:回帰

では、練習しましょう!

R による Supervised Learning:回帰

Preparing Video For Download...