Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

実務に必要な統計学はすべてゲームのガチャが教えてくれる 第五回 サンプルサイズ計算はゲームのガチャが教えてくれる

こんにちは、Sansan研究開発部の糟谷勇児です。

今回も実務に必要な統計学をガチャで考える話をやっていこうと思います。
過去回はこちら。第一回第二回第三回第四回
私はガチャが好きですが無課金勢ですので、1か月の間ずっと石(ゲーム内の通貨、これがあるとガチャを引ける)をためてガチャを引くのですが、もちろんそうそう当たるわけではありません。

そんなわけで今回もガチャで統計学を考える話をやっていこうと思います。
今回は特にお金のことも交えて考えていきましょう。

前回のおさらいとサンプルと金と

さて、前回は統計的検定を用いると、もともと5%の成功確率が10%にアップしたことを自信をもって言えるためには200回ほどの実験を行うとよいという話でした。また、同じように5%が7%の確率にアップした場合は400回ほどの実験で効果を自信を持って言えるという話をしてきました。

自信をもって言えると表現してみましたが、これは、本当は確率は変わっていないのに、たまたま確率が変わっているように見えてしまうことが5%以下になるという線引きでした。
とはいえ、このシリーズでは何度となく書きましたが、これはあくまで人間が決めたラインで、数学的には何%以下なら信用できるというような線引きは存在しません。あくまでも自分たちがそれで自信をもって先に進めるかということでしかありません。
さらに厄介なことに実務では実験をしたりアンケートをしたりガチャを引いたり、いわゆる「サンプル」を集めるにはお金が必要です。この辺りの関係性について考えていきましょう。

サンプルは多ければ多いほど良いのか?

実例で考えてみましょう。第二回では93%の成功確率の文字認識についての話をしましたが、同じ話で考えてみましょう。93%では1文字を認識する精度としては高くないということを紹介しましたが、さらにそれが90%だったとしたらもっと困りますよね。
サンプルが少ないと、本当は90%の精度の時にたまたま93%の結果が出てしまうかもしれません。ではサンプルの件数とたまたま90%の精度が93%と評価されてしまう確率の関係はどうなるでしょうか。

このような場合は10%で当たるガチャがあるとして、N連引いたときにたまたま7%以下しか当たりが出ない確率を求める問題と同じになるので、N連ガチャ分布(二項分布)から計算することが可能です(N連ガチャ分布の説明は第一回参照)。
サンプル数が100の時の場合はいつもの高精度計算サイトでグラフにするとこんな感じです。

当たり率10%の100連ガチャ分布

サンプル数が100の時は7%以下、つまりもともとの問題では93%以上の認識精度となってしまう確率は20%程度のようです。

これを200, 300とやって表にしてもいいのですがめんどくさいので、今回はExcelでやってみます。

ではExcelで式を書いてみましょう。10%の確率で成功することを100回行って、7回以下成功する確率の式は、
BINOM.DISTという関数に下のように入力します。

最後に関数形式というところにTRUEを入れるのですが、これは累積分布という意味で、成功が0回以上7回以下になる確率ということです。確かに高精度計算サイトと同じ20%になりました。

これを100サンプルだけでなくいろいろな数で書いて表にしてみます。
100のところを左のセルに移してそこを参照するようにします。

7のところも、左のセル×0.07となりますね。

そうして100,200,300と下に増やしていきます。

あとは数式のほうのセルを下まで引っ張ったり、右下の四角いところをダブルクリックすると表ができます。

%表記にしたり項目名を付けて見やすく成型した表はこんな感じです。サンプル1件100円かかるとしてお値段も書いてみました。

このようにサンプル数を100件増やすごとに「たまたま93%の結果が出る確率」は半減していきます。
そういう意味ではサンプルは多ければ多いほど効果的ではあるのですが、それを作るためのお金や時間は無限ではありません。
一方で、どれだけ増やしたとしても、たまたまいい結果が出てしまう確率はゼロにはなりません。
どこかで線引きする必要があります。1件100円かかるとしたら、重要な事業なら10万円かけて1000件ぐらい評価するのがよいかもしれません。
それでもこのような意思決定が2000回行われると1回ぐらいたまたま間違った意思決定になってしまうかもしれませんが、ここまでくるとまあしょうがないかなといえるのではないでしょうか。
(別の理由で事業がうまくいかなくなる確率のほうが高いですし)

お金を使うには理由が必要

しかし、お金が絡んでくると1円でも無駄にしたくはないと思いますよね。そこで大事になってくるのは「なんで確からしい評価をしたいのか」という理由の部分です。そこが上司に伝わっていないとお金は出してもらえないでしょう。
実務で確率を評価したい場合、何等か理由があるものです。例えば

  1. より広く導入するにあたって正確な効果を知って意思決定したい
  2. 抜き取りチェックで定期的に評価することで、いち早く異常に気づきたい

などが代表的な理由になるでしょう。
繰り返しますが統計的には100%の確率で正しく判断することができる方法は存在しないので、
ここまで正確に評価してだめだったら仕方ないという線引きをあらかじめ認識合わせしていくのが重要になります。

1.の場合ですと、多くの場合において、お金を出す人と意思決定する人は同じですので、
どこまでお金をかけて調査したら意思決定できるのか価格と想定するP値(ここではたまたま効果が上がったように見えてしまう確率と同じ。詳しくは前々回参照)を見ながら相談するのもよいでしょう。
もちろん意思決定する人が統計学に詳しいとも限らないので、まずは一定件数サンプルを集めてみて、
ここからサンプルを増やしていくとどのようにP値が下がっていくかという形で話すのが伝わりやすいかと思います。

一方で、2.の場合ですと、すでに何らかの確率的な何かを導入していて、その異変に気付くために定期的な抜き取りチェックをするということになります。このような場合はもともとの精度とどの程度ずれたら問題なのかを決めておけば、どの程度のサンプルが必要か見積もりしやすくなります。
最初に話したように93%の精度の文字認識が90%の精度に下がってしまったらアラートを出したいみたいなケースですね。このような場合、本当に精度が下がっているときにアラートを出すのは良いですが、誤検出してしまうと困るので誤検出率を小さくする必要があります。
その場合、上のようにExcelなどで表を作って打合せするのがよいでしょう。
試しに作ってみました。今回は93%なのに90%以下と出てしまうケースが誤検出なので、100サンプルの時の式はこんな感じです。
=BINOM.DIST(90, 100, 0.93, TRUE)
TRUEは累積なので0.93の確率で成功する文字認識が0-90回までしか成功しない確率の累積という意味になります。
できた表はこんな感じです。

今回は定期的なチェックが必要になるのでチェック頻度に応じて年間の金額は上がります。そう考えると実際にはそこまでたくさんチェックするお金はないかもしれません。できる範囲の頻度や量に調整していくことが必要でしょう。

とはいえ、アラートを出したい目標値を設定できるのか?

さて、このような目標値を設定できる場合は比較的簡単に見積もることができますが、多くの場合は何パーセント落ちたらだめかということを決められないことも多いのではないでしょうか。
現実には「3%落ちるのはだめだけど1%ならいいか」とはなかなかならないものです。

その場合、まずはExcelやSpreadSheetなどでシミュレーションしてみて、イメージをつかんでもらうのがよいかと思います。
そのうえで、金額面も加味してこのサンプル数だと大体これぐらいずれることもあるから、もう少しサンプルを増やすか、リスクを受け入れるかなど考えていけばよいかと思います。
だいぶ長くなってしまったので、そのシミュレーション方法については次回に解説していこうと思います。

© Sansan, Inc.