【问题标题】:Random sampling with sample() gives unexpected results使用 sample() 进行随机抽样会产生意想不到的结果
【发布时间】:2018-05-19 15:22:27
【问题描述】:

在 R 中执行随机抽样时请考虑以下事项:

n <- 10
k <- 10 
p <- 0.10 # proportion of the k objects to subsample
probs <- c(0.30, 0.30, 0.30, rep(0.10/7, 7)) # probabilities for each of the k objects

这里,n和k的角色是无关的;但是,有一个条件是 n >= k。

x <- sort(sample(k, size = ceiling(p * k), replace = FALSE)) # works
y <- sample(x, size = n, replace = TRUE, prob = probs[x]) # throws error

我想知道为什么上面分配给 y 的函数调用会引发错误。

我收到的错误是:

Error in sample.int(x, size, replace, prob) : 
incorrect number of probabilities

我的想法是 sample() 的“大小”参数(即 n*p)在第二个函数调用(y 变量)中无法计算为 1,但我找不到任何记录此错误的内容在 sample() 的帮助文件中。

我知道在某些情况下上限()可能会出现奇怪的行为,但我不相信这可能是问题所在。

上述代码运行时,x设置为整数数据类型,如1L、2L等,导致y求值出错。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: r sample


    【解决方案1】:

    如果 x 是单个值,sample(x) 从值 1 到 x(请参阅帮助的 Details 部分)进行采样,或者如果 x 不是整数,则从 1 到 floor(x) .所以prob 参数必须是长度为x 的向量。在您的代码中,probs[x] 始终是长度为 1 的向量,这会导致错误。

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 2021-03-10
      • 1970-01-01
      • 2017-01-09
      • 2017-03-19
      • 2021-10-04
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多