見出し画像

Statcastデータでパフォーマンス予測をしてくれるWebアプリをリリースしました!

先日、Statcastデータで打球の分布を出して、パフォーマンスをシミュレーションしたよ!と言うnoteを書き上げましたが、Qiitaに上げたスクリプトを誰でも実行出来るWebアプリケーションをリリースしました!

"Sim"lation App by Stat"cast"、と言うことで、"Simcast" と名付けました。

GitHubリポジトリはここですー。

デモ

こんな具合に

・対象選手名(姓・名)
・対象シーズン

をインプットに、その情報のデータでシミュレーションを回してくれます。このデモだと、トレイ・ターナーの18年シーズンのパフォーマンスからシミュレーションを行ってくれるので、表示されるパフォーマンスが翌年のパフォーマンス推定になります。

アプリケーション仕様

行っていることはQiitaに上げたスクリプトのまんまですが、

ザックリまとめると

# 機能面
・シミュレーションは100回実行
・バットとボールが当たる回数は500回でシミュレーション
K%・BB%は対象シーズンから不変と仮定して結果を算出
・打球種別やイベントの紐付けデータは17〜20年のリーグ全体のデータを利用
・パフォーマンスの最大・最小・平均・中央値、各種イベントの折れ線グラフ、打球のプロット、打球速度/角度の累積分布関数の4種データを表示

# 非機能面
・データ取得が重いので注意(StreamlitのキャッシュAPIで軽くしているけど、、)
・データ取得並では無いが、グラフ表示もちょっと重いかも

こんな具合です。

シミュレーター課題リスト

・打球だけでパフォーマンス推定しているので、スピードツールで得た利得をガン無視している。つまり、スピードがあってパワーが無いタイプはえらく過小評価されて、逆は過大評価されがち
・アプリケーションのパフォーマンス、もっとサクサク行かないかな、、
・でも、もうちょっとパラメータを足して細やかにやりたいかも

その他、リクエストある場合は👇にissueを上げてもらうか

TwitterでリプもしくはDMでリクエスト下さい🙇‍♂️

【追伸】アプリケーション作りのモチベーション

noteの結びとして、スクリプトに止まらず、アプリケーションを作るモチベーションについて書いておこうと思います。大きく3点。

まず、シンプルにシミュレーションを楽に回したかったから。Qiitaに上げたスクリプトは全てJupyterLabで書き上げましたが、パラメータを変えながらShift + Enterキー連打ゲーするのもダルいので、パラメータを変えればオートマチックに回る仕組みを作っておきたかった、とのエネルギー上・手間上のメリットを求めてのアプリ作りでした。

2点目はバージョンUPしたStreamlit(アプリケーションフレームワーク)を試したかったから。Streamlitは割とリリース初期にいじってみて素晴らしさを味わったフレームワークでしたが、バージョンUPでコンテナ、カラム分割のサポートが入ったらしく、デザイン面のバリエーションが広がったと聞き、遊んでみたくなった次第です。
アプリケーションのデプロイにもStreamlit Sharingと言うStreamlit側のデファクトスタンダードっぽい物が出来上がったらしいので、それもテストしてみようかなー、と。

3点目はリリースしちゃって、シミュレーションの出来をコンスタントに上げられる場にしよう、とのプラン立てから。ローカルのスクリプトにしちゃうよりは、(来るかは分からないけど)リクエスト等でブラッシュアップ出来るチャンスや未知のバグを知れれば、より良いクオリティに仕上げていける可能性が広がる、との狙いからです。基本は自力ドリブンで色々足していく、と言う具合ですが、このシミュレーターはネタ的にも汎用性があるので、広くリクエストだったりが来たりすると嬉しいなー、と言う思いです。

以上、リリース報告(?)でした🙇‍♂️

この記事が気に入ったらサポートをしてみませんか?