【问题标题】:Simulation of multiple binomial random numbers in RR中多个二项式随机数的模拟
【发布时间】:2019-09-09 20:14:28
【问题描述】:

我有以下算法

步骤 1. 生成 X1=x1~Bin(6,1/3)

步骤 2. 生成 X2|X1=x1~Bin(6-x1,(1/3)/(1-1/3))

步骤 3. 生成 X3|X1=x1,X2=x2~Bin(6-x1-x2,(1/3)/(1-1/3-1/3))

步骤 4。重复步骤 1-3 N 次。

这是我在 R 中实现此算法的方法:

mult_binom<-function(n) #n=6
{
  n=1000
  random_vectors<-Matrix(0,n,3)

  for(i in 1:n){

    X1<-rbinom(n,3,1/3) 

    X2<-rbinom(n-X1,3,(1/3)/(1-(1/3)))

    X3<-rbinom(n-X1-X2,3,(1/3)/(1-(1/3)-(1-3)))


    arr<-c(X1,X2,X3)


  }
  for(j in 1:n){

    random_vectors[j]<-arr[j]
  }
  return(random_vectors)
}

将函数调用为mult_bin(6) 会产生一个类似的矩阵,如下所示

1000 x 3 sparse Matrix of class "dgCMatrix"

  [1,] 1 . .
  [2,] 1 . .
  [3,] 1 . .
  [4,] 2 . .
  [5,] 1 . .
  [6,] 1 . .
  [7,] 1 . .
  [8,] . 3 .

并持续到 [1000,]

我没想到会有这样的结果。

为什么会有点?

我做错了什么?

【问题讨论】:

  • @Cettt 为什么你删除了我关于点和唯一数字 1 2 和 3 的问题?
  • 我认为关键信息是您没有理解整个输出,并且这些点只是整个问题的一小部分。如果我错了,我很抱歉。但是,保持问题简短而紧凑通常会导致更多人阅读它们,从而产生更好的答案。
  • @Cettt 我确实理解了整个输出(我期待一个nx3 矩阵),是的,这些点只是整个问题的一小部分。数字 1 2 和 3 也是。我现在知道为什么只有 1、2、3。
  • @Cettt :) 实际上现在只需要点部分。所以会更短更紧凑。您确实是对的,简短而紧凑通常会导致更多人阅读它们,从而产生更好的答案。

标签: r algorithm random statistics simulation


【解决方案1】:

您的实施中有几个错误。最重要的是rbinom的第一个参数不是二项分布的参数n而是你要生成的随机数个数。

这是我的解决方案。我的函数只在实验中返回。然后我使用复制返回多个(在我的情况下为 5)实验的结果:

myfun <- function(){

  x1 <- rbinom(1, 6, 1/3) 
  x2 <- rbinom(1, 6 - x1, (1/3)/(1-(1/3)))
  x3 <- rbinom(1, 6 - x1 - x2, (1/3)/(1-(1/3)-(1/3)))

  return(c(X1 = x1, X2 = x2, X3 = x3))  
}

    set.seed(1)
    replicate(5, myfun())
   [,1] [,2] [,3] [,4] [,5]
X1    1    4    4    0    3
X2    2    0    1    2    1
X3    3    2    1    4    2

在此输出中,每一列都是一次实验的结果。你可以看到数字加起来总是 6。 另请注意,我使用set.seed 设置了一个随机种子。这可确保您的结果具有可重复性。

在您的输出中出现点是因为您使用Matrix 包创建Matrix 对象而不是使用“正常”矩阵。通常你用matrix而不是Matrix创建一个矩阵。

【讨论】:

  • 你为什么用replicate(5, myfun())而不是loop
  • 选择复制而不是循环有两个原因:第一:复制比 for 循环快。第二:读取和写入复制而不是循环更容易。关于点,我建议阅读Matrix 包的手册:基本上一个点代表一个零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多