Home > Back-end >  rbinom is producing higher than expected amounts of success
rbinom is producing higher than expected amounts of success

Time:04-30

I was just attempting to recreate an example using the rbinom function, but the numbers of "successes" is a lot higher than I would be expecting due to the low probabilities.

numSamples <- 10000 #number of samples to be drawn from population
numTrials <- 100 #this is the sample size (size of each sample)
probs <- seq(0.001, 0.9999, 0.01) 

for (i in 1:length(probs)) {
  x <- rbinom(n = numSamples, size = numTrials, prob = probs[i])
}

Everything seems straightforward, except that I am getting the number of success to be between 97 - 100 for all of the samples. When I do a few test cases manually using the smaller probabilities such as 0.001 I get the number of successes expected: 0. So there is an issue in how my for loop is reading things. What is going wrong ?

CodePudding user response:

Here's one way to get all the samples:

res <- list()
for (i in 1:length(probs)) {
  res <- c(res,
    list(rbinom(n = numSamples, size = numTrials, prob = probs[i]))
}

You can then unlist(res) to get one long vector, or do.call(rbind, res) to collapse to a matrix. Growing a list this way and then collapsing it doesn't incur the same performance penalty as growing a vector.

  • Related