On 2010-12-08 17:07, Anup Nandialath wrote:
Dear R-helpers,
My question is related to how to impose constraints when when sampling from a
distribution.
For example, suppose I'm sampling a vector from a multivariate normal
distribution
vbeta<- 100*diag(2)
mbeta<- c(1,1)
ans<- beta<- c(rmvnorm(1,mbeta,vbeta))
ans will thus be a vector with two elements.
My question is how do I place a restriction on one of the elements of the ans
vector. For example, suppose my goal is to reject any draw for ans[2] below -1
and above 1, how should I implement that in the above setting?
What's wrong with just rejecting those cases after
they've been generated. Not efficient, but easy.
Say you want 10 random points. Generate 500 (or
whatever seems reasonable), toss out the ones
you don't want, randomly select 10 from the rest.
library(mvtnorm) ## (I assume)
set.seed(31415)
tmp <- rmvnorm(500,mbeta,vbeta)
tmp1 <- tmp[which(abs(tmp[,2]) <= 1),]
ans <- tmp1[sample(nrow(tmp1),10),]
ans
Peter Ehlers
Thanks in advance for your help.
Kind Regards
Anup
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.