はじめに
こんにちは.STECHとシステム工学研究会の松田です.
本記事はSTECH / 愛知工業大学 システム工学研究会 共同企画 Advent Calendar 2022の25日目,最終日の記事です.
記事投稿のきっかけ
皆さん,お金に困ってはいませんか?僕はめちゃくちゃ困っています.
本記事の投稿が2022/12/25ということもあり自分や恋人,家族へのクリスマスプレゼントで出費が増えたのではないでしょうか.
翌週にはお正月なので自分だけのお年玉をパチンコで獲得したいという思いから本記事を投稿しました.
パチンコとは
パチンコを知らない人のために少し解説します.
パチンコとは簡単に説明すると玉を増やす遊戯です.具体的な遊戯方法等は粗品さんが紹介しているパチンコ解説動画を見ていただけるとわかりやすいかと思います.
極論,カジノみたいなものです.違いは法律上の定めであり,パチンコは賭博ではなく遊戯であることです.
そうして増やした玉を交換すると変な四角形の棒みたいなのが貰えます.
お店を出ると近くに変な四角形の棒を買い取ってくれるらしい買取店があるので買取依頼をするとお金が増える仕組みになります.
しかし,パチンコ店は利益を出さないと潰れてしまうのでお金が増える確率より減る確率の方が高いと言えるでしょう.
そこで,プログラミングや正規分布の力を使ってお金が増える確率を上げようと思います.
95%信頼区間とは
母集団から標本を取ってきて,その平均から95%信頼区間を求める.という作業を100回やったとき,95回はその区間の中に母平均が含まれるというものです.
この95%区間推定を用いて0~N回転の間に95%で当たるパチンコ台を探していきたいと思います.
95%信頼区間の算出方法
95%信頼区間の算出方法は以下のような数式で表すことができます.
$$ 標本平均 ± t × 標本標準偏差 ÷ √標本の大きさ $$
コードを書いてみる
実際に95%信頼区間を求めるPythonスクリプトを書いていきます.以下のような架空パチンコデータのCSVがあります.パチンコデータの取得については本記事でサポートしないため,自分で収集するか色々な方法で取得してください.
当たり | 回転数 |
---|---|
1 | 100 |
2 | 200 |
3 | 100 |
4 | 400 |
5 | 700 |
6 | 100 |
7 | 200 |
8 | 300 |
9 | 400 |
10 | 500 |
ライブラリのインポート
本記事で使用したライブラリをインポートしていきます.
import numpy as np
from scipy import stats
import pandas as pd
台データのCSVを読み込み表示していきます.JSONや生のデータで扱いたい方は適宜書き換えて使用してください.
pachinko = pd.read_csv('./pachinko.csv')
pachinko_length=pachinko.iloc[:,1]
print(pachinko_length)
母平均を算出する
統計学的にはデータがかなり少ないですが,pachinko_lengthの母平均を算出します.
pachinko = pd.read_csv('./pachinko.csv')
pachinko_length=pachinko.iloc[:,1]
sample_mean = np.mean(pachinko_length)
print(sample_mean)
# 300.0
母集団の平均は「300.0」であることがわかりました.
標本の作成
pachinko_lengthの全体の件数から半分のデータをランダムで抽出した標本を使用します.
pachinko = pd.read_csv('./pachinko.csv')
pachinko_length=pachinko.iloc[:,1]
n=int(len(pachinko_length)*0.5)
sample_df = pachinko_length.sample(n=n)
print(sample_df.mean())
# 260.0
母集団の平均は300.0
標本の平均は260.0
という結果になりました.
全体のコード
import numpy as np
from scipy import stats
import pandas as pd
pachinko = pd.read_csv('./pachinko.csv')
pachinko_length=pachinko.iloc[:,1]
n=int(len(pachinko_length)*0.5)
sample_df = pachinko_length.sample(n=n)
sample_mean = np.mean(pachinko_length)
print(sample_mean)
# 300.0
sample_var = stats.tvar(pachinko_length)
print(sample_var)
# 40000.0
print(stats.norm.interval(alpha=0.95, loc=sample_mean, scale=np.sqrt(sample_var/n)))
# (124.69549188468369, 475.3045081153163)
上記のコードを実行すると124.6...,475.3...という結果が出ます.
パチンコに置き換えると124回転〜475回転は95%の確率で当たる台ということがわかります.
この結果から例えば現在400回転ぐらい回っている台は残り75回転の間は95%で当たる狙い目の台であるといえます.
おわりに
本記事の知識を蓄え実践といきましょう.
二度とパチンコなんて行くもんか!!
それでは,良いクリスマス.良いお年を.