0

根据@agstudy 编辑此帖子以进行简化

我正在尝试开发一个使用随机均匀分布来模拟聚合物的模型。

该模型有 2 个状态

状态 1(如果在状态 2 中,状态 1 的概率为 0.003):增长概率,A = .01 收缩概率,B = .0025

状态 2(如果在状态 1 中,状态 2 的概率为 0.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 在 data.frame2 中输入 -1,否则在 data.frame2 中输入 0

我希望这可以解决@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 回答