【发布时间】: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