r中矩阵的二项分布和存储值的模拟

时间:2017-07-14 10:30:00

标签: r

 set.seed(123)
 for(m in 1:40) 
{

u <- rbinom(1e3,40,0.30)
result[[m]]=u 
}
result


for (m in 1:40) if (any(result[[m]] == 1)) break
m

m是公司的退出时间,因为我们改变了它给出不同结果的概率。使用这个m作为退出,我必须找到中间是否有资金回合,所以我创建了一个带有一些概率的随机二项分布,当你得到1表示有一轮融资(j)。如果有资金回合,我必须使用随机均匀分布找到回合限制。我不确定代码是否适合rbinom并且运行到m。并且imat1&lt; - 矩阵(0,nrow = 40,ncol = 2)#empty矩阵  我得到所有40次迭代的y值我需要它当我得到rbinom == 1它应该进入下一个循环。我试图将值存储在矩阵中,但它也没有存储。请帮帮我。

    mat1<- matrix(0,nrow = 40,ncol = 2)     #empty matrix

   for(j in 1:m) {
 k<- if(any(rbinom(1e3,40,0.42)==1))             #funding round

{
 y<- runif(j, min = 0, max = 1)  #lower and upper bound

mat1[l][0]<-j
mat1[l][1]<-y                #matrix storing the value



}
}
resl
mat1
y

2 个答案:

答案 0 :(得分:0)

第一个问题的答案:

result <- vector("list",40)

for(m in 1:40) 
{

 u <- rbinom(1e3,40,0.05)
 print(u)
 result[[m]]=u 
}
u

第二个问题尚不清楚。你能改一下吗?

答案 1 :(得分:0)

要生成40个随机二项式数的向量,您根本不需要循环,请使用?replicate

u <- replicate(40, rbinom(1e3, 40, 0.05))

至于你的第二个问题,你的代码有几个问题。我会尝试解决这些问题,如果建议的更正是正确的,您可以自行决定。

以下几乎没有什么

for(k in 1:40)
 {
     n<- (any(rbinom(1e3,40,0.05)==1))  # n is TRUE/FALSE
 } 
 k  # at this point, equal to 40

有更好的方法来创建T / F变量。

#matrix(0, nrow = 40,ncol = 2)    # wrong, don't use list()
matrix(0, nrow = 40,ncol = 2)     # or maybe NA

然后当R中的索引从1开始时设置l=0。无论如何,我不相信你需要这个变量l

if(any(rbinom(1e3,40,0.30)==1))    # probably TRUE, left as an exercise
                                   # in probability theory

然后,最后,

mat1[l][0]<-j    # index `0` doesn't exist

请修改您的代码,并告诉我们您想要做什么,我们很乐意提供帮助。