【问题标题】:Generating multinomial random data in R在 R 中生成多项式随机数据
【发布时间】:2021-02-11 18:33:48
【问题描述】:

我正在尝试使用函数 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 列的数据框。 我该如何解决这个问题?

提前致谢!

【问题讨论】:

    标签: r random simulation multinomial


    【解决方案1】:

    ?rmultinom 提供的帮助表明,n 中的rmultinom(n, size, prob) 是:

    "要绘制的随机向量数"

    size 是: "指定典型多项式实验中放入K个盒子的物体总数"

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

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

    colSums(a) 确实会导致 3000。

    您希望将向量/变量作为行吗?那么这将通过转置a来工作:

    t(a)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-31
      • 2013-06-01
      • 2018-12-11
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多