I have run a brms model and would like to take a large number of posterior draws for prediction. The model was trained with 5000 total post-warmup draws, and that appears to be the limit of draws I get with posterior_predict. But the error message it gives suggests that I could take more draws if I allows for replacement. Any guidance on this method or what else would be best to do? Thanks!
pp <- posterior_predict(model1, newdata = dataset, seed = 7, ndraws = 30000)
Error in sample.int(length(x), size, replace, prob) :
cannot take a sample larger than the population when 'replace = FALSE'
1 Like
The key thing to keep in mind here is what the posterior_predict
function does. For each iteration (draw), it calculates the posterior-implied outcome value (i.e., the value of the outcome implied by the parameter values at the current iteration). For this reason, you cannot request more samples than draws - because there are only a fixed number of iterations with parameter values to use for generating predictions.
The error there is not brms
indicating that you can get more draws if you use replacement, that’s an error from one of the internal functions - because brms
is assuming that the ndraws
value will always be smaller than the number of sampled iterations. I’ll open an issue on the brms
github so there should be a more informative error in the future
1 Like
brms
has just updated the error for this case, if you install the github version:
if (!requireNamespace("remotes")) {
install.packages("remotes")
}
remotes::install_github("paul-buerkner/brms")
It should error more informatively
Thank you for the quick follow-up!