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

Generating multinomial random data in R

我正在尝试使用函数 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)

但我得到了一些非常奇怪的结果和一个包含 20 行和 50 列的数据框。 我该如何解决这个问题?

提前致谢!

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

“要绘制的随机向量数”

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

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

所以您要求 50 vectors/variables,“对象”总数等于 3000,因此每一列都绘制为总和为 3000 的向量。

colSums(a) 会导致 3000.

你想要你的 vectors/variables 作为行吗?然后这将通过转置 a:

来工作
t(a)

但是如果你想要 20 列,每一列都是它自己的变量,你需要切换你的 np(我也在 n 中替换了 rmultinom调用):

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