確率シミュレーションとは、個々の確率で確率的に(ランダムに)変化する変数を持つシステムのシミュレーションのことである。[ 1 ]
これらの確率変数の実現値が生成され、システムのモデルに組み込まれます。モデルの出力が記録され、その後、新しい一連のランダム値を使用してプロセスが繰り返されます。これらの手順は、十分な量のデータが収集されるまで繰り返されます。最終的に、出力の分布は、最も可能性の高い推定値と、変数がどの範囲の値に収まる可能性が高いか低いかに関する期待の枠組みを示します。[ 1 ]
モデルに挿入されるランダム変数は、多くの場合、乱数発生器(RNG)を備えたコンピュータ上で生成されます。乱数発生器のU(0,1)一様分布出力は、システムモデルで使用される確率分布を持つランダム変数に変換されます。[ 2 ]
確率的とは元々「推測に関する」という意味で、ギリシャ語の stokhastikos「推測できる、推測する」から来ており、これは stokhazesthai「推測」から来ており、さらに stokhos「推測、目的、目標、マーク」から来ている。「ランダムに決定される」という意味は、1934 年にドイツ語の Stochastik から初めて記録された。[ 3 ]
確率シミュレーションにおいて次のイベントを決定するために、モデルの状態に対するあらゆる変化率を計算し、配列に並べます。次に、配列の累積和を求め、最後のセルに総イベント率Rを格納します。この累積配列は離散累積分布となり、乱数z~U(0,R)を選択し、zがそのイベントに関連付けられた率よりも小さい最初のイベントを選択することで、次のイベントを選択するために使用できます。
確率分布は、確率変数の起こりうる結果を記述するために用いられる。
変数が離散値しか取れない場合、結果が制限されます。[ 4 ]
確率変数 X は、通常 1 (成功またはデフォルト) または 0 (失敗または生存) で符号化される 2 つの可能な結果がある場合、パラメータ p のベルヌーイ分布に従います[ 5 ]。ここで、成功と失敗の確率は、そしてどこ。
乱数発生器によって生成された一様分布 U(0,1) からベルヌーイ分布を持つ乱数 X を生成するために、次のように定義します。 確率がそして[ 2 ]
定義する 公平なコインの場合、どちらの結果も等しく起こり得ます。この確率変数 X の実現値は、乱数発生器(RNG)によって提供される一様分布は、RNGが0から0.5の間の値を出力し、RNGが0.5から1の間の値を出力する場合。 もちろん、2つの結果が等しく起こりやすいとは限りません(例えば、治療の成功など)。[ 6 ]
パラメータnとpを持つ二項分布確率変数 Y は、n 個の独立かつ同一のベルヌーイ分布確率変数X 1、X 2、 ...、X n の和として得られる[ 4 ]
例:コインを3回投げます。表がちょうど2回出る確率を求めます。この問題は標本空間を見ることで解くことができます。表が2回出る方法は3通りあります。
答えは3/8(=0.375)です。[ 7 ]
ポアソン過程とは、時間または空間の区間内で事象がランダムに発生する過程である。[ 2 ] [ 8 ]一定レートλ /時間間隔のポアソン過程の確率分布は、次の式で与えられる。[ 4 ]
定義する時間間隔内に発生するイベントの数
イベントの到着間隔は、累積分布関数(CDF)が指数分布に従うことが示せる。指数分布の累積分布関数の逆関数は次のように表される。 どこは一様分布する確率変数。[ 2 ]
一定レートのポアソン過程のシミュレーションイベントの数間隔で発生する以下のアルゴリズムで実行できます。[ 9 ]
1977年にダン・ギレスピーによって発表された、累積配列に対する線形探索アルゴリズムです。ギレスピーアルゴリズムを参照してください。
ギレスピーの確率シミュレーションアルゴリズム(SSA)は、本質的に、よく撹拌された化学反応系の時間発展を数値的にシミュレートするための正確な手順であり、そのようなシステムに内在するランダム性を適切に考慮に入れています。[ 10 ]
これは、化学マスター方程式の基礎となる微視的な前提に厳密に基づいており、常微分方程式で数学的に表現される決定論的な反応速度方程式(RRE)よりもシステムの進化をより現実的に表現します。[ 10 ]
化学の基本方程式と同様に、SSAは反応物の数が非常に多い極限において、質量作用の法則と同じ解に収束する。
2000年にギブソンとブルック[ 11 ]によって発表された次反応法は、生成する必要のある乱数の量を減らすことで、第一反応法よりも優れています。反応のサンプリングをより効率的にするために、インデックス付き優先度キューを使用して反応時間を格納します。反応傾向の計算をより効率的にするために、依存グラフも使用されます。この依存グラフは、特定の反応が発生した後にどの反応傾向を更新するかを示します。次反応法はより効率的ですが、直接シミュレーションや第一反応法よりも複雑なデータ構造を必要とします。
2004年[ 12 ]と2005年に発表されたこれらの手法は、累積配列をソートしてアルゴリズムの平均探索深度を削減します。前者は事前シミュレーションを実行して反応の発火頻度を推定し、後者は累積配列をその場でソートします。
2006年に発表された。これは累積配列に対する二分探索であり、反応サンプリングの最悪時間計算量をO(log M)に削減する。
2009年、2010年、2011年に発表(Ramaswamy 2009、2010、2011)。ネットワーク内の種数に応じて計算コストを削減するために、因数分解された部分反応傾向を使用し、(より大きな)反応数に比例するようにスケーリングします。4つのバリアントが存在します。
部分傾向法を用いる場合、反応物の種類が最大で2種類以下の基本的な化学反応に限定される。非基本的な化学反応はすべて、ネットワークサイズが(反応の次数に応じて)直線的に増加するという代償を伴いながら、一連の基本的な化学反応に等価に分解することができる。
確率シミュレーションの一般的な欠点は、大規模なシステムでは発生するイベントが多すぎて、シミュレーションですべてを考慮に入れることができない点です。以下の手法は、いくつかの近似を用いることでシミュレーション速度を劇的に向上させることができます。
SSA法は各遷移を追跡するため、時間計算量が高くなり、特定のアプリケーションへの実装は非現実的です。Gillespieは、精度を最小限に損なうだけで計算時間を短縮する近似アルゴリズムであるタウリーピング法を提案しました。 [ 13 ] SSA法のように各時間ステップでX ( t ) を追跡しながら時間的に増分ステップを取る代わりに、タウリーピング法は1つのサブインターバルから次のサブインターバルへと飛び移り、与えられたサブインターバル中に発生する遷移の数を近似します。リープ値τは、サブインターバル[ t , t + τ ]に沿った遷移率の値に大きな変化がないほど十分に小さいと仮定されます。この条件はリープ条件として知られています。したがって、タウリーピング法は、精度を大きく損なうことなく1回のリープで多くの遷移をシミュレートできるという利点があり、結果として計算時間が短縮されます。[ 14 ]
この方法は、可逆過程(ランダムウォーク/拡散過程を含む)を近似するために、可逆過程の反対事象の正味の速度のみを考慮に入れます。この方法の主な利点は、モデルの以前の遷移速度を新しい有効速度に置き換える単純なif文で実装できることです。このように、遷移速度が置き換えられたモデルは、例えば従来のSSAで解くことができます。[ 15 ]
離散状態空間では特定の状態(値)が明確に区別されますが、連続空間ではある種の連続性のため区別できません。システムは通常時間とともに変化し、モデルの変数も連続的に変化します。そのため、連続シミュレーションは、状態変数の変化率を決定する微分方程式を与えて、システムを時間とともにシミュレートします。 [ 16 ] 連続システムの例としては、捕食者/被食者モデル[ 17 ]やカートポールバランス[ 18 ]などがあります。
確率変数X は、確率変数の密度が式[ 4 ]で与えられる場合、パラメータμとσを持つ正規分布に従うと言われ、 X ∈ N ( μ , σ 2 )と略記されます。
実際には多くのものが正規分布に従うか、それに非常に近い分布に従います。たとえば、身長や知能はほぼ正規分布に従います。測定誤差も多くの場合、正規分布に従います。[ 19 ]
指数分布は、ポアソン過程における事象間の時間間隔を表す。ポアソン過程とは、事象が連続的かつ独立に、一定の平均率で発生する過程である。
指数分布は、例えば、特定のイベントが発生するまでの待ち時間をモデル化したい場合の待ち行列理論でよく用いられます。例としては、次の顧客が店に入るまでの時間、特定の企業が債務不履行に陥るまでの時間、または機械に欠陥が生じるまでの時間などが挙げられます。 [ 4 ]
スチューデントのt分布は、資産収益の確率モデルとして金融分野で使用されています。t分布の密度関数は次の式で与えられます。 [ 4 ] どこは自由度の数であり、はガンマ関数です。
nの値が大きい場合、t分布は標準正規分布と大きく異ならない。通常、 n > 30の場合、 t分布は標準正規分布と等しいとみなされる。
全く異なる世界観を用いて同一のシステムをモデル化することはしばしば可能です。問題の離散イベントシミュレーションと連続イベントシミュレーション(連続フローを中断する離散イベントを伴う連続シミュレーション)は、最終的に同じ答えにたどり着く可能性があります。しかし、場合によっては、これらの手法はシステムに関する異なる質問に答えることができます。すべての質問に答える必要がある場合、またはモデルがどのような目的で使用されるかがわからない場合は、連続/離散手法を組み合わせるのが便利です。[ 20 ]同様の手法は、時間と空間に依存する方法で、離散的確率記述から決定論的連続記述に変更できます。[ 21 ]この手法を使用すると、コピー数が少ないことによるノイズを捉えることができ、従来のギレスピーアルゴリズムよりもはるかに高速にシミュレーションできます。さらに、決定論的連続記述を使用すると、任意の規模のシステムのシミュレーションが可能になります。
モンテカルロ法は推定手順です。基本的な考え方は、ある確率変数の平均値を知る必要があるが、その分布が特定できない場合、分布からサンプルを抽出できるのであれば、独立にサンプルを抽出して平均することで平均値を推定できるということです。サンプル数が十分であれば、大数の法則により、平均値は真の値に近くなるはずです。中心極限定理によれば、平均値は真の値の周りにガウス分布に従います。 [ 22 ]
簡単な例として、複雑で不規則な輪郭を持つ図形の面積を測定する必要があるとします。モンテカルロ法では、図形の周りに正方形を描き、その正方形の面積を測定します。次に、できるだけ均等に正方形の中にダーツを投げます。図形に当たったダーツの割合が、図形の面積と正方形の面積の比率になります。実際、ほぼすべての積分問題や平均化問題をこの形式に変換することが可能です。輪郭の内側にあるかどうかを判断する良い方法と、投げるダーツの数を計算する良い方法が必要です。最後に、ダーツを均等に投げる、つまり、適切な乱数発生器を使用する必要があります。[ 22 ]
モンテカルロ法には幅広い用途があります: [ 1 ]
出典: [ 23 ]
シミュレーション実験(モンテカルロ法を含む)では、乱数(変数の値として)を生成する必要があります。問題は、コンピュータが非常に決定論的な機械であるということです。基本的に、各プロセスの背後には常にアルゴリズム、つまり入力を出力に変換する決定論的な計算があります。そのため、定義された区間または集合にわたって均一に分布した乱数を生成することは容易ではありません。[ 1 ]
乱数発生器は、決定論的な性質で「容易に」識別できない数列を生成できる装置である。この数列は確率数列と呼ばれる。[ 24 ]
アルゴリズムは通常、擬似乱数、つまり真の乱数を模倣したコンピュータ生成の乱数を利用して、実現値、つまりプロセスの可能な結果の 1 つを生成します。[ 25 ]
乱数を得る方法は古くから存在し、さまざまな分野(ゲームなど)で使用されています。しかし、これらの乱数には一定の偏りがあります。現在、真にランダムな数列を生成することが期待される最良の方法は、量子現象のランダム性を利用する自然な方法です。[ 24 ]