はじめに
CS1のカリキュラムの中で、最も実践的な章へようこそ!これまでは、確率変数を静止した「スナップショット」として学習してきたことでしょう。この章では、ポアソン過程を用いて、時間の経過とともに事象がどのように展開していくかに視点を切り替えます。また、統計学の「魔法のテクニック」である逆関数法によるシミュレーションについても学びます。この手法を使えば、0から1の間の単純な乱数を使って、ほぼあらゆる分布から値を生成することができます。数学が得意な方も、数式に少し苦手意識がある方も、このノートを活用すればこれらの核となる原則をマスターできるはずです。最初は難しく感じるかもしれませんが、大丈夫ですよ!
1. ポアソン過程
喫茶店に座って、店に入ってくる客の数を数えている場面を想像してみてください。もし客が一定の平均発生率で到着し、ある人の到着が他の人の到着に影響を与えないのであれば、それはポアソン過程を観察していることになります。
ポアソン過程の定義とは?
発生率 \(\lambda\)(ただし \(\lambda > 0\))のポアソン過程は、一定の時間間隔で発生する事象の数を表すモデルです。CS1の試験対策として知っておくべき重要なポイントは、これとポアソン分布との関連性です。
時刻 \(t\) までに発生する事象の数を \(N(t)\) と定義すると、以下が成り立ちます:
\(N(t) \sim \text{Poisson}(\lambda t)\)
時間 \(t\) 内にちょうど \(k\) 回の事象が観察される確率は、次の公式で与えられます:
\(P(N(t) = k) = \frac{e^{-\lambda t} (\lambda t)^k}{k!}\) (ただし \(k = 0, 1, 2, ...\))
主な特徴
- 独立性: ある時間間隔での事象の数は、それとは重ならない別の時間間隔での事象の数に影響を与えません。
- 一定の発生率: 単位時間あたりの平均事象数 \(\lambda\) は、過程を通じて一定です。
- 比例性: 長さ \(t\) の間隔における事象数の期待値は、単純に \(E[N(t)] = \lambda t\) となります。
ワンポイント・アドバイス: 常に単位をチェックしましょう!もし \(\lambda\) が「1時間あたり3回の到着」で、20分間における到着確率を問われている場合、\(t\) を時間の単位で表す(\(t = 1/3\))か、\(\lambda\) を「20分あたり1回の到着」に変換するのを忘れないでください。
まとめ:過程 vs 分布
ポアソン過程: 時間の経過とともに事象が発生し続ける「ストーリー」そのもの。
ポアソン分布: そのストーリーの特定の時間枠において発生した事象の「カウント(回数)」。
2. シミュレーション:逆関数法
コンピュータはどのようにして正規分布や指数分布のような乱数を「生成」しているのでしょうか?通常、まずは標準一様分布の確率変数 \(U \sim \text{Uniform}(0, 1)\) を生成し、それを変換します。その最も基本的な手法が逆関数法です。
基本的な考え方
すべての確率分布には、\(F(x)\) と表記される累積分布関数(CDF)があります。\(F(x)\) の値は常に0から1の間に収まります。逆関数法はこの仕組みを「逆手に取る」ものです。まず0と1の間の乱数 \(u\) を選び、\(F(x) = u\) となるような値 \(x\) を見つけ出します。
ステップ・バイ・ステップ:連続型分布
難しそうに見えても心配いりません。次の3つの手順に従うだけです:
- 累積分布関数(CDF)を求める: \(F(x) = P(X \le x)\) の式を特定します。
- \(u\) と等置する: 方程式 \(F(x) = u\) を立てます。
- \(x\) について解く: 式を変形して、片側に \(x\) だけが来るようにします。これがあなたの「乱数生成公式」 \(x = F^{-1}(u)\) となります。
例:指数分布(\(\lambda\))の変数を生成する場合
1. CDFは \(F(x) = 1 - e^{-\lambda x}\) です。
2. \(u = 1 - e^{-\lambda x}\) と置きます。
3. \(x\) について解きます:
\(1 - u = e^{-\lambda x}\)
\(\ln(1 - u) = -\lambda x\)
\(x = -\frac{1}{\lambda} \ln(1 - u)\)
\(u\) が一様分布 \(\text{Uniform}(0,1)\) に従うとき、\(1-u\) も実質的に一様分布 \(\text{Uniform}(0,1)\) とみなせるため、しばしば次のように簡略化されます: \(x = -\frac{1}{\lambda} \ln(u)\)
ステップ・バイ・ステップ:離散型分布
離散型分布(二項分布やポアソン分布など)の場合、CDFが階段状になるため、常に方程式を「解く」ことができるわけではありません。代わりに、参照(ルックアップ)方式を用います。
乱数 \(u\) が得られたとき:
- もし \(0 < u \le P(X = x_0)\) ならば、 \(X = x_0\) とする。
- もし \(P(X = x_0) < u \le P(X = x_0) + P(X = x_1)\) ならば、 \(X = x_1\) とする。
- 一般的に、 \(F(x_{i-1}) < u \le F(x_i)\) となるような値 \(x_i\) を選択します。
比喩: 1メートルの定規をいくつかの区間に分けることを想像してください。「0」が出る確率が0.3、「1」が出る確率が0.7なら、30cmのところに印をつけます。ダーツを投げて、30cmより前に当たれば「0」を選んだことになり、後ろに当たれば「1」を選んだことになります。
重要なポイント:
逆関数法が強力なのは、たった1つの一様乱数から、目的の分布に従うサンプルを1つ生成できるからです。これはCS1における基本的なシミュレーションの「王道」といえます。
3. 注意すべき落とし穴
1. \(f(x)\) と \(F(x)\) の混同: 逆関数法を行う際は、必ず累積分布関数 (\(F(x)\)) を使用してください。確率密度関数 (\(f(x)\)) ではありません。
2. 代数計算のミス: \(u = F(x)\) を変形する際、自然対数 (\(\ln\)) や符号の扱いに十分注意してください。特に指数分布を扱う際にマイナス符号を忘れてしまうミスがよく見られます。
3. ポアソン発生率の解釈ミス: ポアソン過程において、発生率 \(\lambda\) は「単位時間あたり」のものです。もし試験で「5分間の間隔」について問われ、 \(\lambda\) が「1分あたり」で与えられている場合、ポアソン分布のパラメータは \(5\lambda\) になります。
4. クイック復習ボックス
- ポアソン過程: 事象が発生率 \(\lambda\) で発生する。事象数 \(N(t) \sim \text{Poisson}(\lambda t)\)。
- 逆関数法(連続型): 方程式 \(x = F^{-1}(u)\) を解く。
- 逆関数法(離散型): 累積確率の中で \(u\) が収まる区間を見つける。
- 標準一様分布: すべてのシミュレーションの出発点 (\(U \sim \text{Uniform}(0, 1)\))。
知っていましたか? ポアソン過程は、アクチュアリーが保険金の支払い請求(クレーム)の発生をモデル化する際によく使われます。現実世界の請求はもっと複雑ですが、ポアソン過程はリスクの時間的な変化を理解するための基礎となる重要な要素なのです!
次のステップ: Paper Bでは、おそらくRを使ってこれらのシミュレーションを実行することになります。Paper Aに向けては、指数分布、パレート分布、ワイブル分布などの累積分布関数を素早く逆関数にできるよう、計算練習を積んでおきましょう。