24
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NPO法人AI開発推進協会Advent Calendar 2022

Day 21

【統計学を遊びに使おう】記録予想ゲームで予想値を得点化する方法【パーティー企画などで使える】

Last updated at Posted at 2022-12-20

はじめに

唐突ですが、パーティー企画などで 「誰かが行う競技やゲームの記録を予想して、近かった人が勝ち」 なんていうゲームをしたいと思ったことはありませんか?

もちろん、1種目だけであれば「予想した記録と実際の記録が一番近かった人が勝利」でよいのですが、記録の範囲が異なる2種目以上の場合はどうでしょうか。

分かりやすい例えとして、3種目の体力測定(握力、マラソン、走り幅跳び)を考えます。Aさんがこれから3種目に挑戦しますが、B、Cさんはどちらが一番近い予想ができるか勝負したとします。

image.png

このとき、3種目それぞれで記録の範囲は大きく異なることが予想されるので、単純に予想と実際との誤差を足し算してしまうと種目による偏りが出てしまいます。

image.png

表. 種目による記録の違い

種目 予想される記録の範囲(例)
握力 30~60(kg)
マラソン 600~1000(秒)
走り幅跳び 200~500(cm)

そこで、種目による数値の偏りを無くして予想を点数化する方法をご紹介します

これにより、それぞれの種目をまんべんなく近い値を予想できた人が勝ちになるように計算できます!

【補足】記録の一般的な分布

体力テストの各種目やゲームのタイムアタックなどは、ほぼ正規分布で近似することができます。

実際、文部科学省のデータによると児童が行った新体力テストの各種目の記録はきれいな正規分布の形をしていることが分かります。

正規分布についての紹介は割愛します。当法人のでは統計学の様々な記事がありますのでご参照ください。

文部科学省/調査結果の概要/実技に関する調査

image.png
【上記資料より一部抜粋して引用】

ポイント
場合によっては対数正規分布に従っているように見える種目もありますが、簡易のためにここではどの種目も正規分布に従うことを仮定します。これにより複雑な計算をすることなく得点を計算できます。

各種目の記録のばらつきを考慮した点数化方法

種目による記録の範囲を考慮した予想の点数化は、各種目のデータをZ変換して標準正規分布に従う変数にすることで実現します

Z変換を行うと、正規分布に従うことを仮定したデータが平均0、分散1という分かりやすいデータに統一できます。すなわち、種目によってばらばらだった値の範囲が、すべて平均0、分散1になるのです。

ポイント
あくまで正規分布に従うことを仮定しているだけなので、母集団のデータの裾が片方に伸びているような歪んだ分布だと厳密に正しい計算はできません。
しかし、体力テストやゲームのタイムアタック、各種競技の記録の多くは正規分布に従う(一部対数正規分布に近いものもあります)ことがわかっているため、この仮定を採用しています。

例えば、既に何人か測定した実測値があるとします。
image.png

この平均と不偏標準偏差を求めると、児童全体の母集団におけるそれぞれの種目の記録分布が求まります。

平均
=AVERAGE(C5:C9)
不偏標準偏差
=STDEV.S(C5:C9)

image.png

これにより、各種目の分布が$ \mathcal{N}(44.00, 11.40^2) $、$ \mathcal{N}(560.00, 114.02^2) $、$ \mathcal{N}(300.00, 79.06^2) $に従っていると仮定することができます。

ここで、統計学で頻出の「Z変換」を行い、ばらばらな分布を持つデータを平均0、分散1に標準化します。

握力の記録であれば、実際の握力の記録を$x$として以下の式に当てはめることで$z$値が求まります。

$$
z_{握力} = \frac{x - \mu}{\sigma} = \frac{x - 44.00}{11.40}
$$

上記の図で示したBさんの予想記録は50kgなので、変換したz値は
$$
z_{握力B予想} = \frac{50.00 - 44.00}{11.40} = 0.5263
$$
です。

実際にAさんが測定した握力は
$$
z_{握力A実測値} = \frac{48.00 - 44.00}{11.40} = 0.3509
$$
と求まります。

この値を用いて、実測値と予想値の差(どれだけ近い値を予想できたかなので絶対値距離にします)を求めると
$$
Bさんの予想ペナルティ点=|z_{握力B予想} - z_{握力A測定値}| = \bf{0.1754}
$$
になります。

同じようにCさんにおいても計算を行うと、
$$
z_{握力C予想} = \frac{40.00 - 44.00}{11.40} = -0.3509
$$
$$
Cさんの予想ペナルティ点=|z_{握力C予想} - z_{握力A測定値}| = \bf{0.7018}
$$
と求まりました。最終的に求めた値は予想と実測値の距離なので、「値の小さいBさんの方がより近い予想であった」と解釈できます。(1種目なのでZ変換をしなくても自明ですが)

Z変換して嬉しいのは、種目によるばらつきを考慮できていることです。どの種目の記録も、Z変換をかけると平均0、分散1のデータになるため、予想ペナルティ点を種目ごとに計算し、合計すればよいのです

最終的に合計の予想ペナルティ点が小さい順にランキングをつければ、複数種目における記録予想ゲームが成立します!

ペナルティ点から「得点」を計算する

予想と実測値が一致すれば100点、かけ離れた予想をすると0点に近づくような関数を用意すれば、ゲームの感覚的にもわかりやすい得点を計算できます。

どれだけかけ離れてしまった場合0点にするかはパラメータ次第ですが、今回は母集団の95%のデータが収まる$±2\sigma$の範囲にします。つまり、実測値と予想値が$4\sigma$はなれてしまったとき0点になるような関数を求めます。

完璧に予測できたとき100点($予想ペナルティ点z_p=0$)、実測値と予想値が$4\sigma$以上はなれてしまったとき0点($予想ペナルティ点z_p \ge 4 \sigma = 4 \times 1$)

この2点を通る直線を求めると、得点$y$は
$$
y = -25z_p+100 (点)  \text{if}  z_p \le 4 \text{else} 0 (点)
$$
となります。

BさんとCさんの握力予想を100点満点で得点化すると以下のようになります。
$$
y_{Bさん}= -25\times0.1754+100=95.615(点)
$$
$$
y_{Cさん}= -25\times0.7018+100=82.455(点)
$$

ペナルティではなく得点になったため、ゲームとしてわかりやすくなりました!
Bさんの得点は95点と、かなり良く予想できたことが直感的にわかります。

マラソンと走り幅跳びにおいても同様に100点満点の点数を算出し、合計点数で予想の精度を競うことができるようになります。

さいごに

記録の範囲が大きく異なる複数種目で記録予想ゲームを行うための手法をご紹介しました。

パーティーや学校、社内向け企画で検討されている方のご参考になれば幸いです。
当法人では統計検定2級~準1級程度の統計学についての記事を多くまとめておりますのでぜひご覧ください。

24
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?