我想从多项分布生成大小为 20 的样本
没问题,但你应该记住每个样本都是一个向量,例如如果你掷三个骰子,你可以得到 (2,5,1),或 (6,2,4),或 (3,3,3) 等。
您还应该记住,在rmultinom(n, size, prob)
“n”是样本大小,“size”是放入K个盒子中的物体总数(当掷三个骰子时,大小为3,K=6)。
具有三个值,例如 1,2 和 3。
没问题,但你应该记住这一点rmultinom
将返回count每个值的,即您可以将三个值视为行名称(您的三个值可以是“红色,绿色,蓝色”,“左,中,右”等)
> rmultinom(n=20, size=3, prob=c(0.4,0.3,0.3))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] 2 1 1 2 1 1 3 1 1 3 2 1 0 0 0 1 3 2 2 1
[2,] 1 1 1 1 0 1 0 1 2 0 1 2 2 2 1 1 0 0 1 0
[3,] 0 1 1 0 2 1 0 1 0 0 0 0 1 1 2 1 0 1 0 2
在第一个样本(第一列)中,“1”出现 2 次,“2”出现 1 次,“3”出现 0 次。在第二个和第三个样本中,每个值出现 1 次,...在第七个样本中,“1”出现 3 次,依此类推。
既然你放了三个(size=3
) 物体放入 K=3 个盒子中(盒子的数量与物体的长度一样多)prob
向量),每列的总和就是你的对象的数量。
例如,样本可以是这样的sam=(1,2,2,2,2,3,1,1,1,3,3,3,2,1,2,3,...1)
这看起来不像是大小为 20 的样本,因为单个多项试验的结果是一个向量,而不是一个数字。
让我们回到骰子。我摇size=3
dice:
> rmultinom(n=1, size=3, prob=rep(1/6,6))
[,1]
[1,] 0
[2,] 2
[3,] 0
[4,] 0
[5,] 1
[6,] 0
我得到两个“2”和一个“5”。这是尺寸 1 的样本。这是尺寸 10 的样本:
> rmultinom(n=10, size=3, prob=rep(1/6,6))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 1 0 0 0 0 1 1 1
[2,] 1 1 0 3 0 0 1 1 1 1
[3,] 2 1 0 0 0 0 2 0 0 0
[4,] 0 0 2 0 1 1 0 1 0 1
[5,] 0 0 0 0 1 2 0 0 1 0
[6,] 0 1 0 0 1 0 0 0 0 0
HTH