【ウーバーイーツ】高額チップ数でポアソン回帰モデルを推定してみた【沖縄市】
前回記事で、1日当たりの高額チップ数がポアソン分布に従うか確かめてみた。

適合度検定の結果、ポアソン分布に従わないとはいえないという結果になった。(ポアソン分布と仮定しても問題なさそう)
1日当たりの高額チップ数の確率が分かっても、どのような条件のときに、高額チップ数が多くなるか分からない。外国人への配達が多いときかもしれないし、雨が降っているときかもしれない。はたまた、長距離ピック&ドロップが多いときかもしれない。
ということで、今回は1日当たりの高額チップ数が多くなる要因を一般化線形モデルで表現してみる。
参考書籍

主な参考箇所
第3章 一般化線形モデル(GLM) ーポアソン回帰一
第4章 GLMのモデル選択 ーAICとモデルの予測の良さー
概要
説明変数の選択とデータの可視化
↓
一般化線形モデル(GLM)の作成
↓
モデル選択
↓
モデルの解釈
使用するデータ
使用するデータは、私の配達データ。
期間は、2021年5月10日~10月31日
上記期間の総配達件数は、1528件。※ ダブルピックも1件とカウント。
配達日数は、164日。
説明変数の選択とデータの可視化
まず、目的変数と説明変数を決める。
目的変数は、1日当たりの高額チップ数。
説明変数は、目的変数の変動に影響がありそうな変数を選ぶ。今回は自分の経験から以下の3つにする。
・外国人への配達件数 (比較的チップ文化になじみがあると予想)
・ベース料金 (距離や時間が料金に反映される)
・雨クエストの有無 (雨の日にチップが多くなると予想)
つまり、上記の3つがどの程度1日当たりの高額チップ数に影響を与えているかを分析する。
3つの説明変数のデータを図で見てみる。
縦軸:1日当たりの高額チップ数
横軸:外国人への配達件数
黒丸:雨クエスト有り
白丸:雨クエスト無し
縦軸:1日当たりの高額チップ数
横軸:ベース料金
黒丸:雨クエスト有り
白丸:雨クエスト無し
縦軸:1日当たりの高額チップ数
横軸:クエストの有無
正直、どの図も明らかな傾向を示しているようには見えない。
一般化線形モデル(GLM)の作成
GLMを作成する前に参考書籍を見てみる。
この章では、説明変数をくみこんだ統計モデルについて説明します。前の第2章の統計モデルでは、どの個体の種子数yiも、平均λのポアソン分布にしたがうと仮定しました。平均種子数であるλは全固体で共通するものとしました。しかし、この章では個体ごとに異なる説明変数(個体の属性)によって平均種子数が変化する統計モデルが登場します。このような統計モデルを観測データにあてはめることをポアソン回帰 (Poisson regression)といいます。また、これと似たような構造の統計モデルたちを総称して、一般化線形モデル(generalized linear model、GLM)といいます。
今回のデータの場合、1日当たりの高額チップ数をポアソン分布と仮定しても良さそう(前回記事より)。
ということで、1日当たりの高額チップ数をポアソン回帰で表現してみる。
まず、全ての説明変数の組み合わせを見てみる。
V1:1日当たりの高額チップ数
int:切片
V2:外国人への配達件数
V3:ベース料金
V4:クエストの有無
モデル番号 | モデル式 |
1 | log V1=int+V2 |
2 | log V1=int+V3 |
3 | log V1=int+V4 |
4 | log V1=int+V2+V3 |
5 | log V1=int+V2+V4 |
6 | log V1=int+V3+V4 |
7 | log V1=int+V2+V3+V4 |
上記より、組み合わせは全部で7つある。
それぞれのモデル式でGLMを作成してみる。
> fit_V2 <- glm(V1 ~ V2, data= high_tip, family = poisson) > summary(fit_V2) Call: glm(formula = V1 ~ V2, family = poisson, data = high_tip) Deviance Residuals: Min 1Q Median 3Q Max -1.6307 -1.0428 0.0132 0.5533 2.3098 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -0.90743 0.19518 -4.649 3.33e-06 *** V2 0.29807 0.06005 4.963 6.93e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for poisson family taken to be 1) Null deviance: 165.99 on 163 degrees of freedom Residual deviance: 142.48 on 162 degrees of freedom AIC: 376.1 ……(省略)
表にまとめ、有意水準5%で有意となった説明変数のセルに色付けする。
モデル番号 | int(P値) | V2(P値) | V3(P値) | V4 (P値) |
1 | -0.90743 (3.33e-06) | 0.29807 (6.93e-07) | ||
2 | -1.104978 (0.136) | 0.006192(0.173) | ||
3 | -0.15657 (0.089) | 0.26577(0.200) | ||
4 | -1.678657 (0.0264) | 0.291128 (1.11e-06) | 0.004917(0.2883) | |
5 | -0.96316 (1.8e-06) | 0.30051 (6.7e-07) | 0.2745(0.186) | |
6 | -1.085824 (0.140) | 0.005801(0.201) | 0.247292(0.234) | |
7 | -1.7137 (0.0231) | 0.294525 (9.68e-07) | 0.004776(0.2995) | 0.270471(0.1925) |
外国人への配達件数(V2)の変数のみ有意となるモデルが多いという結果になった。つまり、以下のモデル式の中に最も良いものがあるといえそう。
モデル番号 | モデル式 |
1 | log V1=int+V2 |
4 | log V1=int+V2+V3 |
5 | log V1=int+V2+V4 |
7 | log V1=int+V2+V3+V4 |
モデル選択
モデル選択について、参考書籍で確認してみる。
複数の統計モデルの中から、何らかの規準で良いモデルを選択することをモデル選択とよびます。この章では、良く使われているモデル選択規準のひとつAICを使ったモデル選択を紹介しましょう。AICは統計モデルのあてはまりの良さではなく、予測の良さを重視するモデル選択規準です。
「あてはまりの良さ」と「予測の良さ」というワードがあり、参考書籍で調べたところ前者が「最大対数尤度」を示し、後者が「AIC」を示していることが分かった。
各モデル式の最大対数尤度とAICを求めてみる。※AICは既に出ていたので、最大対数尤度のみ求める。
> logLik(fit_V2) 'log Lik.' -186.0516 (df=2) ……(省略)
表にまとめる。
モデル番号 | モデル式 | 最大対数尤度 | AIC |
1 | log V1=int+V2 | -186.0516 | 376.1 |
4 | log V1=int+V2+V3 | -185.4928 | 376.99 |
5 | log V1=int+V2+V4 | -185.2236 | 376.45 |
7 | log V1=int+V2+V3+V4 | -184.6893 | 377.38 |
あてはまりの良さの観点から見ると、モデル番号7が最も良い数値(高いほど良い)を示した。
予測の良さの観点から見ると、モデル番号1が最も良い数値(低いほど良い)を示した。
今回は予測の良さを重視し、モデル選択を行ってみる。よって、モデル番号1を選択する。
モデルの解釈
モデル番号1のモデル式「log V1=int+V2」を選択することとなったが、この式がなにを表しているのだろう。
モデル式の推定結果を見てみる。
log V1 = -0.90743 + 0.29807V2
となる。対数を変換すると、
V1 = exp(-0.90743)×exp(0.29807V2)
となる。つまり、
V1 = (定数)×(外国人への配達件数の効果)
と表せる。
外国人への配達件数に具体的な数値を入れてみる。
V2 = 1 の場合
V1 =
V1 =
V2 = 2 の場合
V1 =
V1 =
以上のことから、V2が1増えると、V1が

ふむふむ、1日の外国人への配達件数が1件増えるたびに、1日にもらえる高額チップ数が約1.35倍増えるということか!
まとめ
今回は、1日に発生する高額チップ数を目的変数、それに関わりのありそうな事柄を説明変数として、ポアソン回帰モデルを作成してみた。
結果、分かったことは下記の3つ。
・1日当たりの高額チップ数とクエストの有無は関係なさそう
・1日の外国人への配達件数が1件増えるたびに、1日当たりの高額チップ数が約1.35倍増加する
変数の選び方が良くなかったように思う。次回、改めて変数を選びなおして、再度GLMを作成してみる。
コメント