多项式模拟

苹果树

我目前正在 R 中运行多项模拟 100 次,结果分别为 2、3、4、5,每个都有一定的概率。我的目标是抽签 120 次,每次抽签只产生上述结果之一。最后,我总结了模拟的结果。我已经能够使用以下代码紧凑地实现这一点:

> y<-c(2,3,4,5)
> replicate(100, sum(rmultinom(120,size=1,prob=c(0.1,0.2,0.6,0.1))*y))

但是,我想添加额外的条件,如果结果 5(概率为 0.1 的最后一行)在任何模拟运行中被绘制 10 次,则停止模拟(120 次绘制)并简单地添加上述结果。

任何有关如何在上述代码中加入此条件的帮助将不胜感激。

瑞·巴拉达斯

也许有更好的方法来完成 OP 的要求,但我相信以下方法可以做到。

set.seed(4062)    # Make the results reproducible

y <- c(2, 3, 4, 5)
n <- 100
m <- integer(n)

for(i in 1:n){
    r <- rmultinom(120, size = 1, prob = c(0.1, 0.2, 0.6, 0.1))*y
    if(sum(r == 5) >= 10){
        r <- apply(r, 2, function(x) x[x != 0])
        j <- which(r == 5)[10]
        m[i] <- sum(r[seq_len(j)])
    }else{
        m[i] <- sum(r)
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章