【问题标题】:Repeated Sampling Without Replacement [closed]无需更换的重复采样[关闭]
【发布时间】:2013-04-08 15:57:10
【问题描述】:

我想从人口 1:1000 中生成 10 个随机数,生成这个数字的代码重复 10 次。我希望采样没有替换,使得 10 组 10 个随机数之间的交集为空。

首先,如果我在 r 中使用示例函数并将 replace 设置为 false 并没有多大帮助,而且 当我在网上搜索时,我发现了一个名为 urn 的功能,但我无法在 r 中下载包。所以简而言之,我想完全像下面的代码:

http://rss.acs.unt.edu/Rdoc/library/urn/html/urn.html 但手动而不是使用 urn 包

我尝试了以下代码,但生成的样本不是唯一的,我从“数据”中随机选择行

for(j in 1:10) {
    x=unique(data[,2])
    tr=sample(length(x),0.9*length(x),replace=FALSE)
}

【问题讨论】:

  • 假设你打算如何调用 urn 函数?什么论据?
  • 你能展示你的尝试吗?也许我们可以通过sample 找出您的代码有什么问题。
  • sample(1:1000, 100, replace=FALSE)有什么区别?

标签: algorithm r random sample


【解决方案1】:

考虑到@ElKamina 的评论,您可以使用sample 生成 100 个数字并将它们分配到 10 x 10 矩阵中:

matrix(sample(1:1000, 100, FALSE), ncol=10)

【讨论】:

  • 使用复制你不能确定得到相互排斥的随机数列表,对吧?
  • @ElKamina 你说得对
  • 既然 OP 要求集合是互斥的,你能稍微修改一下你的解决方案吗?先采样 100 个数字,然后将其重塑为 10X10 的矩阵。
【解决方案2】:

我喜欢样本 100 个值,最好将它们放入 10 x 10 矩阵中,但另一种选择是从完整列表中抽取第一个 10 个样本,然后使用 setdiff 计算没有已选择的 10 个的集合,从该组中选择另外 10 个,再次使用 setdiff,等等。

如果您不提前知道有多少样本或每个样本中有多少,这种方法可能会更好,但在这种情况下,您可以使用sample 随机排列 1000 个的整个列表,然后选择来自置换列表的组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 2013-02-13
    • 2012-01-02
    • 1970-01-01
    • 2021-07-19
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多