ロストバレットの統計学
はじめに
先日、息子の愛知CL優勝に合わせて下記記事を投稿したのですが、
https://note.com/harigane_ippei/n/n8d4e97e8304a
それに対するよく藤沢で一緒にプレイしてもらっているたまもんじさんのこのリプライにスイッチが入ってしまい、
以前からやろうかと考えていたことを実行してみました。
これまでポケカを題材に確率計算する、ということを何度かトライして記事にしています。それをやっていて最近はほぼ毎回
ということを書いているのですが、今回それを実行してみました。
これっていい加減に言っているのではなく、もはや主流になっているAIの技術もこのアプローチで行われています。
AIは大量の教師データと呼ばれる学習に使うデータをAIに学習させ、そこから学習したものから確率的に最も確からしい回答を出力するという仕組みになっています。
人間では処理できれないデータ量をコンピューターで処理できることがAIの優位性になります。
その意味でこれまでのアプローチは古典的な数学的アプローチ、今回のアプローチは現代のAIに近いアプローチと言えます。
今でも将棋ではAIが計算してどちらが何%優勢、などというのがリアルタイムに出るようになっていますが、ポケカももっと盛り上がると配信中にリアルタイムで
「どちらが◯%優勢」
「ここでアクロマが引ける確率は◯%」
といった表示が出るような世界が訪れるかもしれません。
将棋よりこの仕組み作るのは簡単だと思うので、ポケカの市場規模がもっと大きくなればビジネスとして考え始める人も出てくるかもしれません。
さて、本題です。
やり方
お題は前回と同じ、こちらの盤面でネストボールを先に使うか、アクロマを
先に打つか、ということを比較します。
(参照記事)
https://note.com/harigane_ippei/n/n458022cf1c9f
前回はキュワワーを2体置けるかどうか?というゴールで比較しましたが、
今回は「このターンにおとぼけスピットを打てるか」というゴールで比較します。
やり方としては以下の通りです。
①1人回しツールを使って今回のテーマとなる盤面を作ります。
②”ネストボールを先に使う”、”アクロマを先に使う”それぞれのパターンを100回ずつ行い、おとぼけスピットを打つことができた回数を集計します。
③その発生確率を、母比率の差により検定します。
ここで1点問題があるのですが、この方法には②のところで最初の行動とゴールは決まっているものの、その後の行動はルールづけしていないので私の判断になってしまいます。つまり私が最適な選択を取るという保証がないということです。
まあそこは信じていただくしかないのですがお許しください。
(一応ロスギラ使ってシティ優勝した経験もあるので
https://note.com/harigane_ippei/n/nbb3160457829)
ここで母比率の差の検定ってなんやねん?という話ですが、簡単にいうとこんな感じです。
・最初にネストボールを使って、おとぼけスピットが打てる確率をp1とします
・最初にアクロマを使って、おとぼけスピットが打てる確率をp2とします
もしその両方の発生確率に差がないのであれば、
p1-p2=0
となるはずです(これを帰無仮説と言います)
その仮説が正しいかどうかを調べる、というのが検定です。
仮説が正しいとすれば両者の発生確率に差がない、要はどちらを先に使っても大して差がないよ、という結論に(統計的には)なりますし、
その仮説が正しくない(帰無仮説が棄却される)ということなればどちらかを先に使った方がいいよ、という結論に(統計的には)なります。
基本的な概念についてはここまでで十分です。
もうちょっと深く説明すると、ここでカッコ書きで(統計的には)と書いているのはこの結論も、必ずしも正しいと言えないためです。
検定には「有意水準」というものが設定され、5%や1%を設定することが多いです。今回は5%を採用しています。
これはどういうことかというと、例えば今回の検定で「アクロマを先に打った方がいい」という結論になったとします。
しかし、この結論は、
「統計的にはアクロマを先に打った方がいいよ、けどこの結論は5%(以下)の確率で間違っているよ」
ということになります。
ということで100回ずつやってみました。
結果
結果としては、おとぼけスピットを打てた回数は
最初にネストボールを使う:50回
最初にアクロマを使う:48回
ということでネストボールを使う方がわずかではありますがおとぼけスピットを打てる回数が多く出ました。
その回数自体には今回はあまり意味がなく、重要なのはこの差が統計的に差があると言えるか、ということです。
細かい説明は端折りますが、検定には検定統計量(z)というものを算出します。
その式は
このような感じで表されます。
p1はネストボールを先に打った時の標本比率、p2はアクロマを先に打った時の標本比率、pはそれらを1つにまとめたときの標本比率です。
実際に計算するとこうなります。
p1=50/100=0.5
p2=48/100=0.48
p=(100×0.5+100×0.48)/(100+100)=0.49
z=(0.5-0.48)/√(0.49×0.51)(1/100+1/100)=0.283…
この数字が、優位水準5%の基準値1.96より大きければ帰無仮説(ネストボールを先に打った場合とアクロマを先に打った場合で、そのターンにおとぼけスピットを打てる確率に差がない)が否定(棄却)され、どちらかの方が統計的に確率が高い、ということができます。
この場合はzの値が1.96より小さかったため、帰無仮説は棄却されず、
統計的には
「どっち先にやろうが変わらないよ」
という結果になりました。
考察
この結果は色んな解釈ができます。
本当にどっち先にやっても変わらない
100回ぐらいの試行回数じゃ十分ではなく、もっといっぱいやれば差が出てくるかも
今回元々のお題が「先にアクロマ打つかネストボールでゲッコウガ持ってきてかくしふだ打つか」というものだったので、アクロマを先に打つ場合もゲッコウガは持ってくる前提でネストボールはゲッコウガを優先するように打ちました。しかしおとぼけスピットを打つのをゴールにするのであれば、キュワワーを持ってくることを優先した方が良かったかもしれません、そのあたりのゴールとそこまでのプロセスの条件を変えれば差が出たかも
世のポケカプレイヤーは統計的には差がないわずかな差のレベルでしのぎを削っている
おとぼけスピットを打てる確率は変わらないかも知れないが、どちらかの方法がその過程で取れる選択肢が広くなるため優位である
などなど。
こういった検定結果を元に色んな仮説を立てて議論をすれば、次の検証にもつながるしもっと議論が建設的になるかも知れません。
今回欲張らずにゴールを前回と同じく「キュワワーを2体置ける確率」にしておけば手計算との比較もできてよかったかも知れません。
やってみての感想
この方法の問題は、さらっと書いてしまいましたが100回ずつやるのが1人だとクソめんどくさいことです。
時間としては100回ぐらいなら仕事終わってからでも1日でできるレベルなのでそこまで手間ではないのですが、やりながら「何やってんだおれ」という気分になります。
さらに考察のところにも書いたように、この方法は試行回数が多ければ多いほど信頼性は上がります、今回100回ずつで行いましたがそれで十分かどうかはわかりません。
(確かその母数がいくつあれば良いかを検定する方法もあった気がしますが、これはまたの機会に調べます)
なので次回こういう話が話題に上がった時はXのアンケート機能などを使っていろんな人に試してもらおうかなと思っています。
質問イメージとしてはこんな感じ
あの投稿があれだけバズったし、息子のおかげで私のXのフォロワーも増えたので、協力してくれる人はそれなりに集まりそうな気がします。
あとは今日偶然ポケカのAI対戦動画を公開している人を見つけましたが、そういう人がプログラムすればもっと正確なデータがでると思います。
もしこのような手法で「このパターン比較して欲しい」みたいな話がありましたら私のX(@harigale_luppy)までDMいただければどういう方法が良いか検討しますのでご連絡下さいませ。
余談①
100回していて「ジェットエネルギー欲しい」と思う場面がすごいあったのでやはり息子の構築は理にかなったものかもしれないと思いました。
余談②
前回有料にさせていただいて、既に多くの方に購入いただきめっちゃ嬉しく思っているのですが、やっぱり無料で好き勝手書く方が性に合っているように思いました。
無料だと別にアクセス数伸びなくても評価されなくても、別に自分が趣味で書いているだけだからいいや、と考えられるのですが、有料だとどうしても評価が気になってしまいます。
仕事以外でそんなストレス抱えたくないですし。
今後やるとしても投げ銭形式ぐらいですかね。
立ちしょんべんぐらい自由にしたいです。
この記事が気に入ったらサポートをしてみませんか?