首页 > 解决方案 > 在具有潜在概率假设的向量中生成属于不同组的随机项目对

问题描述

假设我有一个向量id <- c(1:10),并且我想创建来自该向量的随机对,但限制是每个配对必须是唯一的,并且每个数字/id 不能与自身配对。喜欢:

1-2,2-4,3-7 等等。

我在这个 stackoverflow 答案中找到了解决这个问题的方法:

pairOff <- function(x) {   
            x <- sample(x)  # to get first column into random order  
            M <- matrix(c(x, x[(seq_along(x) + sample(seq_along(x)[- (length(x) - 1)], 1))  %% length(x) + 1]),  ncol=2)   
           return(M) 
}

返回例如:

      [,1] [,2]
 [1,]    1   10
 [2,]   10    4
 [3,]    4    9
 [4,]    9    5
 [5,]    5    2
 [6,]    2    8
 [7,]    8    6
 [8,]    6    3
 [9,]    3    7
[10,]    7    1

现在假设每个 id 属于一个组(1 或 2,但也可以 > 2):

group_ID <- c(1,1,1,1,1,2,2,2,2,2)

并且每个 id 都有可能与来自同一组或另一组的另一个 id 配对:

p_owngroup <- 0.7
p_othergroup <- 1 - p_owngroup_ID

在 pairOff 函数中,概率始终为 p = 0.5。

我的问题:如何创建一个函数来创建唯一配对(不允许与自己配对,并且每个 id 只有一个唯一的伙伴),其中每个 id 与来自同一组的 id 配对的基本概率是 p_owngroup 和与来自不同组的 id 配对是 p_othergroup?

标签: rrandomcombinations

解决方案


推荐阅读