4

R では、sample() を適用するときに、replace が true の場合、妥当な値が250を超えると Walker のエイリアス メソッドが使用されます。sample() が常にエイリアスメソッドを使用するようにする方法はありますか? ありがとう!

4

1 に答える 1

1

1つのオプションは、結果のベクトルが250要素より長くなるように、ベクトルxとベクトルの両方を十分な回数複製することです。prob確かにハックですが、楽しいものです!

sampleWalker <- function(x, size, prob) {
    nx <- length(x)
    nrep <- 251 %/% nx + 1
    sample(x = rep(x, nrep), size = size, replace = TRUE, prob = rep(prob, nrep))
}

sampleWalker(1:3, 10, prob = 1:3)
#  [1] 3 1 2 3 3 2 2 1 2 3
# Warning message:
# In sample.int(length(x), size, replace, prob) :
#   Walker's alias method used: results are different from R < 2.2.0
于 2012-12-14T03:34:31.197 に答える