0

@agstudy に従ってこの投稿を編集して簡略化する

ランダム一様分布を使用してポリマーをシミュレートするモデルを開発しようとしています。

モデルには 2 つの状態があります

状態 1 (状態 2 の場合の状態 1 の確率が .003): 成長確率、A = .01 縮小確率、B = .0025

状態 2 (状態 1 の場合の状態 2 の確率が .0003): 成長確率、A = .01 縮小確率、E = .05

シミュレーションはステート 1 で開始します

状態 1 の間、data.frame1 から乱数をサンプリングし、# < .0025 の場合は data.frame2 に -1 を入力し、# < .01 の場合は data.frame2 に +1 を入力し、どちらも data.frame2 に 0 を入力しない場合。# < .0003 (状態 1 に入る確率) に達するまで続行します。

# < .0003 がサンプリングされた場合、data.frame2 に -1 を入力し、状態 2 に切り替えます。乱数のサンプリングを続行し、状態 2 で # < .003 の場合、data.frame2 に +1 を入力し、状態 1 に切り替えて続行します。上記のとおりです。状態 2 で # >= .003 の場合、および # < .05 の場合は -1 を data.frame2 に入力し、それ以外の場合は 0 を data.frame2 に入力します。

これで問題が解決することを願っています@agstudyですが、そうでない可能性もあります…その場合は申し訳ありません。

これは、小さなセットがどのように見えるべきかについて Excel で生成された例です。

最初の列はdata.frame1からのもので、入力列はdata.frame2になります。説明のために状態と長さの列が含まれています。

    rnumbers  state input length
    0           1   0   0 # initialized state
    0.009413895 1   1   1
    0.052959306 1   1   2
    0.002453354 1   -1  1
    0.000290324 2   -1  0
    0.093312954 2   0   0
    0.077210941 2   0   0
    0.04924944  2   -1  -1
    0.010590107 2   -1  -2
    0.03308292  2   -1  -3
    0.037239807 2   -1  -4
    0.007889393 2   -1  -5
    0.026476751 2   -1  -6
    0.000454509 1   1   -5
    0.009820683 1   1   -4
    0.019836999 1   1   -3
    0.009380381 1   1   -2
    0.083149383 1   1   -1
    0.022212547 1   1   0
    0.051917035 1   1   1
    0.05032031  1   1   2
    0.03956718  1   1   3
    0.032664445 1   1   4
    0.004352291 1   1   5
    0.08902418  1   1   6
    0.095643962 1   1   7
4

1 に答える 1

0

私は次のように書きます:

step_generator <- function(rnum)
   ifelse(rnum<C,
       ifelse(rnum>=D,-5,ifelse(rnum<B,-1,ifelse(rnum<A,1,0))),
       ifelse(rnum<B,-1,ifelse(rnum<A,1,0)))
于 2013-11-30T19:03:38.217 に答える