2017-05-29 8 views
1

モンテカルロシミュレーションを作成して、10のシナリオを生成したいと思います。それぞれのシナリオは、タイムホライゾン内のランダムな到着数によって特徴付けられます。到着をシミュレートするためにポアソンランダムバリエーションのサンプルを結合する方法

Iは、平均が12

from scipy.stats import poisson 
arrivals = poisson.rvs(12, 10) 
print arrivals 

出力乱数のリストであると仮定すると、各シナリオの到着のサンプルを生成するscipy.stats.poisson https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.poisson.htmlを使用

[11 13 9 10 8 9 13 12 11 23] 

平均は11.9で十分ですが、問題はこの場合、最後のシナリオでは平均から遠い23の到着があることです。

このシミュレーションを実行する前に、母集団を選択しなければならなかったので、その母集団のサイズをPoisson Random Variatesに適合するように大きくする必要があります。 サイズ1.5 * 12 = 18の人口を選択するとします。残念ながら、最後のシナリオでは、サンプルが人口そのものよりも大きいため、エラーが発生します。

私の最初の質問は、ポアソンランダム変異のリストでこれらの到着をサンプリングするために選択しなければならない人口の最小サイズです。エラーは発生しませんか?

私の2番目の質問は、別の確率分布を使ってこの種の問題を管理する方がいいですか?

この場合mean = 12ですが、平均= 57と平均= 234の他のコンテキストをシミュレートする必要があります。

+0

人口増加の前提ではなく、必要に応じて人口を生成できない理由はありますか? – pjs

答えて

2

は、私はすべての非負整数(無限大にフォーム0)で定義されているポアソンランダム変量

Poisson distributionに準拠するのに十分な大きその集団の大きさを確認する必要があります。理論的には、その分布から数値を生成する場合は、正の整数を得ることを期待する必要がありますが、平均(λ)から離れたものは出現確率が低いです。あなたは1を取得するために使用する必要がある最小サイズが何であるかを知りたい場合は、このように

>>> poisson.sf(18,12) 
0.037416489663391859 

:たとえば、12のラムダパラメータを使用して18以上の値を得る確率は3.7%ですあなたが逆を使用することができ、シミュレーション中のエラーの%は、:

>>> poisson.isf(0.01,12) 
21.0 

ラムダは、時間の期間中に到着の平均ではなく、最大値(母集団の大きさ)です。私は、あなたのサンプルから最大値を使用するようにシミュレーションコードを変更することはできません。

あなたのケースではポアソン分布が分かりやすいようです。しかし、あなたのサイズの人口からの最大Nを反映する分布が必要な場合は、Beta-binomialの分布のようなより柔軟なもののパラメータを調整できます。私の提案は、あなたの現象の実際のデータを探し、そこから確率関数を調整または導出することです。もっと簡単な解決策は、値をランダムに選んでブートストラップすることです。 統計的な質問については、ご利用をお勧めします。Cross validated

+0

ありがとうございます@エマー私はあなたの説明を活用します。 – piezzoritro

関連する問題