在R中生成多项式随机数据

在R中生成多项式随机数据,r,random,simulation,multinomial,R,Random,Simulation,Multinomial,我试图使用函数rmultinom从R中的多项式分布生成数据,但我遇到了一些问题。 事实上,我想要一个50行20列的数据框,结果的总和等于3乘以n*p 我正在使用以下代码: p <- 20 n <- 50 N <- 3*(n*p) prob_true <- rep(1/p, p) a <- rmultinom(50, N, prob_true) p在?rmultinom上提供的帮助说明rmultinom(n,size,prob)中的n是: “要绘制的随机向量数” 而

我试图使用函数rmultinom从R中的多项式分布生成数据,但我遇到了一些问题。 事实上,我想要一个50行20列的数据框,结果的总和等于3乘以n*p

我正在使用以下代码:

p <- 20
n <- 50
N <- 3*(n*p)
prob_true <- rep(1/p, p)
a <- rmultinom(50, N, prob_true)

p在
?rmultinom
上提供的帮助说明
rmultinom(n,size,prob)
中的
n
是:

“要绘制的随机向量数”

size
是: “指定在典型多项式实验中放入K个框中的对象总数”

帮助说明输出为: 对于rmultinom(),是一个整数K x n矩阵,其中每列都是根据所需多项式定律生成的随机向量,因此求和为大小

因此,您需要50个向量/变量,其中“对象”的总数等于3000,因此每列被绘制为一个向量,总和为3000

colSums(a)
确实会导致
3000

是否希望向量/变量作为行?那么,只需将
a
转置即可:

t(a)
但是如果您想要20列,每个列都是它自己的变量,那么您需要切换
n
p
(我还在
rmultinom
调用中的
n
子目录中):

n
n <- 20
p <- 50
N <- 3*(n*p)
prob_true <- rep(1/p, p)
a <- rmultinom(n, N, prob_true)