【问题标题】:Creating random binary matrices with different distributions创建具有不同分布的随机二进制矩阵
【发布时间】:2014-04-10 00:41:54
【问题描述】:

我最近获得了一个函数来编写一个随机二进制矩阵,条件是对角线为 0。

fun <- function(n){
  vals <- sample(0:1, n*(n-1)/2, rep = T)
  mat <- matrix(0, n, n)
  mat[upper.tri(mat)] <- vals
  mat[lower.tri(mat)] <- vals
  mat
}

在这里,我将“样本”中的值分别输入到上下三角形。我想将其保留在任何更新的函数中,因为有时我可能希望将每个三角形的转置输入另一个。

我需要帮助的是如何更改随机矩阵中 1 的频率。我相信,这已经围绕正态分布而变化。例如在一个 9x9 的矩阵中,需要填充 81-9=72 个单元格,平均使用 36 个 1。

但是,如果我想创建概率为的矩阵,例如p=0.9 有一个 1,或者例如p=0.2 of there are a 1... - 这是怎么做到的?

我尝试了一些方法来通过添加概率函数来更改代码的 sample(0:1,) 部分,但我只得到了错误。

谢谢

【问题讨论】:

标签: r function matrix binary probability


【解决方案1】:

您应该查看sample函数的帮助页面

?sample 显示:

用法

sample(x, size, replace = FALSE, prob = NULL)

在哪里

prob
用于获取元素的概率权重向量 被采样的向量。

您将在详细信息中进一步看到

可选的 prob 参数可用于给出权重向量 获取被采样向量的元素。他们不需要总和 为一,但它们应该是非负的,而不是全为零。

所以要回答您的问题,除了 阅读手册 之外,如果您希望 x 的第一个元素的概率为 0.1,第二个元素的概率为 0.9,请使用 prob=c(0.1,0.9)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多