pip install -r requirements.txt
python sauna_simulation.py
統計学的に解析可能な問題とするために、以下の仮定をおく。
- 1分間の入室人数は、パラメータ$\lambda$のポアソン分布に従う。
- 各人の入室から退室までの時間は、パラメータ$\mu$の指数分布に従う。
- 入室過程と退室過程は独立(「たくさん入室してきたから退室しよう」といったことは起きない。)。
- 入退室において、無記憶性を仮定する(将来の入退室は過去の入退室に依存しない。言い換えれば、「誰かが出たから自分も出よう」といったことは起こらない)。
- サウナ室は十分に広く、サウナ内の人数が多すぎて入るのを断念する人はいない。
- サウナ営業の開店から十分時間が経過し、サウナの滞在人数は定常状態になっている。
- 定常状態においては、
- 定常状態における滞在人数の平均値は、自分が入室した時のサウナ内人数を$N$と一致する。
- 1分間あたりの退室人数が一定(=$1/\beta$)で、退室はランダムに発生する。
- よって、$\alpha$ 人が退室するまでの時間分布はパラメータ$\alpha, \beta$のガンマ分布に従う。
指数分布のパラメータ
-
$\mu$ : 退室時間の期待値は、サウナで推奨の8分と仮定する($\mu=8$ ) -
$\lambda$ : サウナの外から時計を持ちながら人数を計測するのは時間がかかる上、不審者になってしまうので、$\lambda$は直接観測できないため、以下の通り推定する。- 自分が入室する時のの滞在人数$N$を数える(仮定より、これは定常状態の滞在人数と一致する)。
- ある十分な期間$T$における合計入室人数の期待値は、$\lambda T$人
- ある十分な期間$T$における合計退室人数の期待値は、$NT/\mu$人
- 定常状態である仮定から、ある時刻において入退室する人数は釣り合っているので、$\lambda T = NT/\mu$
- よって、$\lambda = N/\mu = N/8$
-
$\beta$ : 定常状態においては、入室者数の期待値は同じであるから、$1/\beta = \lambda = N/\mu$ -
$\alpha$ : サウナ内で$\tau$分計測したいとすると- ガンマ分布の期待値$\alpha \beta$ が
$\tau$ と一致するので、 $\alpha = \tau / \beta = \tau N/\mu$
- ガンマ分布の期待値$\alpha \beta$ が
手順を以下に示す。
- 自分がサウナ内に滞在したい時間
$\tau$ 分を決める(例えば$\tau=5$分)。 - 今回訪れたサウナ施設の客層から、他の人は平均
$\mu$ 分程度滞在するかの見立てを立てる(例えば$\mu=8$分)。 - サウナに入室したら、サウナ内滞在人数$N$を数える(例えば$N=20$人)。
- ガンマ分布のパラメータ
$\alpha = \tau N/\mu$ を暗算する(今回の例では$5\times20\div8=12.5$)。 -
$\alpha=12.5$ 人退室するまでサウナ室内で滞在する。
滞在したい時間( |
数える人数 |
|
|
---|---|---|---|
5 | 12.5 | 5.86% | 8.82% |
8 | 20 | 12.5% | 13.4% |
12 | 30 | 18.2% | 17.7% |
理論とは異なり、より現実的にするために、仮定を減らしてシミュレーションする。
- 1分間の入室人数は、パラメータ$\lambda$のポアソン分布に従う。
- 各人の入室から退室までの時間は、パラメータ$\mu$の指数分布に従う。
- 入室過程と退室過程は独立(「たくさん入室してきたから退室しよう」といったことは起きない。)。
- 入退室において、無記憶性を仮定する(将来の入退室は過去の入退室に依存しない。言い換えれば、「誰かが出たから自分も出よう」といったことは起こらない)。
- サウナ室は十分に広く、サウナ内の人数が多すぎて入るのを断念する人はいない。