使用 rmultinom() 函数从 R 中的多项分布生成随机数

2024-05-07

我想从具有三个值的多项分布生成大小为 20 的样本,例如1,2 and 3。例如,样本可以是这样的sam=(1,2,2,2,2,3,1,1,1,3,3,3,2,1,2,3,...1)

下面的代码可以工作,但没有得到预期的结果

> rmultinom(20,3,c(0.4,0.3,0.3))+1
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,]    1    1    3    2    2    1    1    2    3     2     3     2     1     2     2     3     1     2     2     2
[2,]    2    1    2    1    3    2    4    2    1     2     2     1     1     2     1     2     3     2     3     3
[3,]    3    4    1    3    1    3    1    2    2     2     1     3     4     2     3     1     2     2     1     1

我不期待这个矩阵。有什么帮助值得赞赏吗?


我想从多项分布生成大小为 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 rmultinom() 函数从 R 中的多项分布生成随机数 的相关文章

随机推荐