R – 繰り返し処理

for

構文は

最も基本的な例は連番のリストによる回数指定。

繰り返し内容が複数にわたる場合は{}で囲む。

break文で最も内側のループから抜ける。

next文はループ内の残りの部分を実行せず次のループへ。

ループ範囲に変数を使った場合、その変数は中で参照・変更可能だが、ループ回数そのものは変更されない。

以下の例では、xで指定された1:5はforループ開始時点でディープコピーされ、ループの中でxが変更されても、繰り返し回数は変化していない。

while

他の言語と同じ。

break文やnext文も使える。

repeat

repeatで無限ループを実行。

 

 

 

時刻制御によるポアソン過程のシミュレーション

時刻制御による分析

時刻制御(time driven)の考え方では、時刻を変化させながら、その都度到着イベントが発生するかどうかを確率的に計算し、到着パターンのデータを生成していく。計算にはR言語を使う。

時刻制御の考え方の概要やその他の考え方についてはRによるポアソン過程のシミュレーションを参照。

到着イベントの時系列

上のRのコードでは、到着率λに短い時間間隔dtを掛けた確率でその時間間隔t ~ t + dtの間に到着イベントを発生させている。

以下に観測時間が5000秒のときの、階級幅が100秒、500秒に対する到着数の時系列分布をヒストグラムを示す。階級当たりのデータ数が多いほど平滑化される傾向は、一様分布によって到着イベントを発生させたときと同じ。

poisson-process-time-driven-arrival100

poisson-process-time-driven-arrival500

到着時間間隔の分布

一様乱数のときと同じく、到着時間間隔の分布をチェックする。期待した通り、指数分布の確率密度関数とよく合っている。

poisson-process-time-driven-interval

到着数の分布

到着数の分布についても、一様分布のときと同じように調べると、Poisson分布の形状とよく合っている。

なおtime drivenの場合は、細かい時間間隔について到着判定をしているのでループ回数が多くなり、計算時間が少しかかる。

poisson-process-time-driven-poisson

関連リンク