概要
- 本でStanを使った状態空間モデルによる分析方法を勉強したから、実際のデータで練習してみたもの
- 今回はとりあえず以下のモデルで動かしてみた
- ローカルレベルモデル
- 平滑化トレンドモデル
- ローカル線形トレンドモデル
- 時変係数モデル(説明変数はイベント期間の長さのみ)
- 結果としては、まだ全然うまくフィットできてない
- トレンドとイベントの長さのみでは説明しきれないため
- 他に特徴量作って時変係数モデルでの分析は、追々やりたい
- 今回作ったスクリプトたちはココのc1~c4。
Pystan使う前の準備
- pystanインストール
pip install pystan
- 少しハマったところ
-
pystan - Unable to find vcvarsall.bat
というエラーが出てバタバタした - 解決方法
- ココの通り、Visual StadioのC++をインストールした
-
使うデータ
ココで取得したデータを、形式がアタポンのものだけ抽出したもの
ローカルレベルモデル
- 「状態がランダムウォークに従い、その状態にノイズが加わって出力が出てくる」と考えるモデル
- 数式とかはココ参照
所感
- 全然5%-95%の範囲に入っていないが、とりあえず中心あたりは通ってて、全体の傾向は見えている気がする
- 2018年後半あたりがピークで、少しずつ下がってる?
平滑化トレンドモデル
- 「状態の変化量がランダムウォークに従い、その状態にノイズが加わって出力が出てくる」と考えるモデル
- 状態の変化量:1つ前の状態から今の状態への変化量
- 数式とかはココ
所感
- こちらも全然5%-95%の範囲に入っていないが、やはりスムーズにはなってる
- 2018年末あたりにピークが来ている?
ローカル線形トレンドモデル
- ローカルレベルモデルに「時間によって変化するドリフト成分」を追加したもの
- ローカルレベルモデルと、平滑化トレンドモデルのあわせ技のようなもの
- 水準成分の変化がほぼ0の場合、平滑化トレンドモデルと同じになる
- 数式とかはココ
所感
- こちらも、全然5%-95%の範囲に入っていない。
- 平滑化トレンドの滑らかさとローカルトレンドのガタガタの中間くらいになっている。
時変係数モデル
- 目的変数に影響しそうな説明変数を加えたもの。説明変数の係数も時系列で変化することを想定する。
- 数式とかはココ
ローカルレベル+時系変数モデル
- 実際のデータと予測値プロット
- 係数プロット
ローカル線形トレンド+時系変数モデル
- 実際のデータと予測値プロット
- 係数プロット
所感
- まだ、全然5%-95%の範囲に入っていない。
- 期間の係数がマイナス寄りになっている
- 普通に考えて、実際はそんなことはないはず(「期間が短いほどポイントが稼げる」とは思えない)
- 他の要因による変化に引っ張られていると思われる
ズレの確認
ローカル線形トレンドモデルのときの、実測と予測の差分をとってみる
- ヒストグラム
- 平均は+、中央値は-となっており左右非対称
- うまく説明できていれば、正規分布に近いかたちになるはずなので、やはり説明が足りていない
- 時系列
- 散布図
- 差が大きい順TOP10
- 絶対値はとっていないので、実測がトレンドより大きいものTOP10
- ニュージェネレーションズの3人が入ったユニット(PCS、TP、PP)のイベントが入っており、イベントの盛り上がり具合(報酬アイドルやユニットによる)が関係しそう
日付 | イベント | 期間 | 2001位 | トレンド | 差 | 比 |
---|---|---|---|---|---|---|
2018/9/19 | Pretty Liar | 198 | 224697 | 116547 | 108150 | 1.93 |
2017/11/19 | Trinity Field | 174 | 193847 | 106468 | 87379 | 1.82 |
2020/5/19 | 不埒なCANVAS | 198 | 188652 | 104595 | 84057 | 1.80 |
2019/1/21 | スパイスパラダイス | 174 | 179632 | 114280 | 65352 | 1.57 |
2019/11/20 | Secret Daybreak | 175 | 169639 | 108815 | 60824 | 1.56 |
2017/8/21 | 双翼の独奏歌 | 150 | 156206 | 101001 | 55205 | 1.55 |
2018/8/19 | クレイジークレイジー | 198 | 163641 | 114877 | 48764 | 1.42 |
2016/9/20 | ラブレター | 150 | 121303 | 74138 | 47165 | 1.64 |
2019/7/22 | バベル | 157 | 151703 | 109155 | 42548 | 1.39 |
2018/11/19 | Sunshine See May | 198 | 156519 | 115536 | 40983 | 1.35 |
まとめ
- まだうまくフィットしていない
- ボーダーに影響する要素が十分に反映しきれていないため
- 関係しそうな要素として思い浮かんだもの羅列
- イベントごとの要素
- イベントの盛り上がり具合 ≒ ランキング報酬となっているアイドルの人気**(コレ目的でみんな2000位以内を目指すので、一番影響が強そう)**
- トレンドに含まれそうな要素(徐々に変化するもの、突然変化するものが混ざってるので、ローカル線形トレンド使うのが良さそう)
- ゲームの人気の変化に伴う、アクティブユーザ数の変化
- キャラが増えたことで放置編成組める人の増加
- グランドライブ実装での時間効率UP
- イベントごとの要素
- 予想する値として2001位を選んだけど、1位のほうが予想するの簡単そうw(やっぱり1位のほうが簡単だった)
- 1位は、時間を目一杯使って人間の限界に挑戦した場合の値になりそう
- ただ、2001位がイベント最高報酬のボーダーだから、需要としてはコッチのほうがあるはず(イベントちゃんと走ったことないけど、自分も知りたい)