创建具有不同分布的随机二进制矩阵

时间:2014-04-10 00:41:55

标签: r function matrix binary probability

我最近帮助获得了一个写随机二进制矩阵的函数,条件是对角线为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
}

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

我想要帮助的是如何在随机矩阵中改变1的频率。我认为,这已经在正常分布范围内变化。例如在9x9矩阵中,要填充的是81-9 = 72个单元格,平均使用的1个是36个。

但是,如果我想创建具有例如概率的矩阵。 p = 0.9,存在1,或者例如p = 0.2有1 ... - 这是怎么做的?

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

由于

1 个答案:

答案 0 :(得分:1)

您应该查看sample 功能

帮助页面

?sample显示:

  

用法

     

样本(x,size,replace = FALSE, prob = NULL

,其中

  

<强>概率
  用于获得元素的概率权重向量   正在采样的矢量。

以及详细信息中的下方,您将看到

  

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

所以要回答你的问题,除了阅读手册之外,如果你希望prob=c(0.1,0.9)的第一个元素为0.1,第二个元素为0.9,则使用x。 / p>