Excel VBAでポアソン分布に従う乱数を生成

ExcelとVBAでポアソン分布に従う乱数を生成する方法

この記事では、ExcelとVBAを用いてポアソン分布に従う乱数を生成する方法をご紹介します。ポアソン分布はある時間間隔内に起こる事象の発生回数をモデル化したもので、信頼性分析や品質管理など様々な場面で利用されます。

ポアソン分布とは

ポアソン分布は確率論と統計学でよく用いられる確率分布の一つで、ある一定の時間や空間で一定の割合で発生するとされる独立な事象が、その時間や空間で実際に発生する回数の確率を表します。例えば、ある時間内にコールセンターに入ってくる電話の数や、ある面積内に生えている木の数などがポアソン分布に従うと考えられます。

ポアソン分布に従う乱数の生成

Excel VBAを使用してポアソン分布に従う乱数を生成することができます。ここでは、Knuthのアルゴリズムを用いたポアソン分布に従う乱数の生成関数をVBAで作成します。以下にそのコードを示します。

Alt + F11キーを起動し、「挿入」→「標準モジュール」を開いて以下のコードを貼り付けてください。

Function PoissonRandomKnuth(ByVal lambda As Double) As Integer
    Dim L As Double
    Dim k As Integer
    Dim p As Double
    L = Exp(-lambda)
    k = 0
    p = 1
    Do
        k = k + 1
        p = p * Rnd()
    Loop While p > L
    PoissonRandomKnuth = k - 1
End Function

この関数は、引数としてポアソン分布のパラメータであるλ(ラムダ)を受け取り、そのポアソン分布に従う乱数を生成します。Lambdaが大きい場合でも期待通りのポアソン乱数を生成できます。

関数の使用方法

この関数をExcelのワークシートで使用するには、次のように入力します:`=PoissonRandomKnuth(λ)`。ここで、λは平均到着率(または平均発生回数)を指定します。なお、この関数はランダムな値を生成するため、実行するたびに結果が異なります。大量のデータを生成してその平均値を取ると、λに近い値が得られます。

例えばλを250とするならば以下のような式を入力します。

=PoissonRandomKnuth(250)

以上がExcelとVBAを用いてポアソン分布に従う乱数を生成する方法です。

分析ツールアドインでの乱数生成紹介

Excelでは「分析ツールアドイン:乱数生成」という機能が用意されていて、こちらからもポアソン分布に従う乱数を生成できます。詳しくは次の記事を参照してください。

ポワソン分布(分析ツール:乱数発生)
分析ツールアドインにある「乱数発生」「ポワソン分布」についての実習解説です。「乱数発生」の「分布」で「ポワソン」を選択した場合の実習例を以下に示します。この例では、λ(平均発生率)が10のポワソン分布(ポアソン/Poisson distri...

統計的なシミュレーションやデータ分析において、このような乱数生成は非常に有用です。ぜひ活用してみてください。

コメント