ソーシャルゲーム界隈でよくDAU(Daily Active User)がKPIになったりするけど、じゃあどうしたらDAU増えるの?ってところをちょっとクリアにしたくて簡単に考えてみた。
DAUの計算式をモデル化
定義
数理モデルを書くために下記を定義します。
- 翌日継続率 R:前日のDAUのうち今日も継続して使うユーザの割合
- 掘り起こし率 B:前日Activeじゃなかったユーザが復帰してくる割合
- 全ユーザ数U(t): 日付tでの全会員数
- DAU D(t):日付tでのDAU数
- 新規登録数 i(t):日付tでの新規に登録したユーザ数
仮定
問題を簡単にするために全ユーザ数U(t)はその日に登録する会員数i(t)より非常に大きいものとします。
U(t) >> i(t)
DAUの差分方程式
翌日DAUは下記の数式モデルで書く事が可能。
D(t+1) = R*D(t) + B*U(t) + i(t)
翌日継続率と掘り起こし率が定数なのが気になりますが、問題を簡単にするためと、僕らのサービスでぶれはあるもののだいたい一定の値を示していたので定数と置きました。翌日継続率に関してはソシャゲ界隈の分析で一定数になってるのよく見かけるし、掘り起こし率に関しては、既存ユーザの掘り起こしリテンションは会員数に比例するものと考えるとまぁ妥当性あります。
分析
両辺をユーザ数U(t)で割る事でDAU率d(t)に関する方程式が導けます。なお、U(t)>>i(t)を仮定しているのでこの時点で流入項は無視しましょう。
DAU率の差分方程式
d(t+1) = R*d(t) + B
定常状態のDAU率
すごく時間が経ったとき、継続率d(t)は割合の数字なので0〜1のどこかの一定な値に落ち着くはずです。t→Tとして定常状態時の式を解きましょう。
d(T) = R*d(T) + B
d(T) = B / (1-R)
定常状態でDAU率d(T)は1-R(翌日継続しない率?)に反比例して、掘り起こし率Bに比例する事がわかりました。継続率を大きくし、掘り起こし率も大きくすることで定常時のDAU率を上げる事ができますね。
定常状態のDAUの影響項
さて、今度は定常時のDAU率dに対してRやBが変化する場合のそれぞれの影響度について考えてみます。RやBをそれぞれΔR、ΔBだけ変化させてみた時のDAU率の変化量Δdは下記のように書けます。
Δd = δd/δR * ΔR + δd/δB * ΔB
Δd = (B/(1-R)^2)ΔR + 1/(1-R)ΔB
仮に継続率30%、掘り起こし率10%だとすると、
Δd = 0.2*ΔR + 1.4*ΔB
定常時のDAU率を高めるには掘り起こし率を高める方が効果が高いようですね。
DAU率の時間変化率
1日先の差分方程式と今日の差分方程式を比較してみましょう。
d(t+2) = R*d(t+1) + B
d(t+1) = R*d(t) + B
両辺を引き算して、d(t+1)-d(t)=Δd(t)とおくと、下記の式が算出されます。
Δd(t+1) = R*Δd(t)
DAU率の変化率はRが小さいほど一気に収束して行きます。新規流入分、定常状態より多くなっているDAUがRの減衰率に応じて収束する形になりますね。
結論
以上の事から下記仮説が導きだされます。
- 継続率が高いと、DAU率の減衰が少なくてよい
- 定常時のDAU率は継続率と掘り起こし率に依存するが、掘り起こし率を高める方がより影響度は大きそう
もちろん、DAU率で考えたのでDAU数も見た方がいいです。DAU数は入力項無視できないので入力によってだいぶ上下ありそうですね。
ただDAUを上げましょうと言うよりも、これらの値をウォッチして施策を打って行く方がだいぶクリアな気はします。
ソーシャルゲームの分析とか数理分析をあんまり専門でやるわけでもないので、何か間違いや気になるところがあれば指摘してもらえると幸いです。