What I guess you want is something like (this is for zero-truncation):
rZeroTruncNormal1d<-function(mu, sig, invalidSign) #sig holds standard
deviation!
{
val<-rnorm(1, mu, sig)
while(val * invalidSign > 0)
{
val<-rnorm(1, mu, sig)
}
return(val)
}
Nick Sabbe
--
ping: nick.sabbe at ugent.be
link: http://biomath.ugent.be
wink: A1.056, Coupure Links 653, 9000 Gent
ring: 09/264.59.36
-- Do Not Disapprove
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On
Behalf Of Sally Luo
Sent: maandag 25 oktober 2010 2:01
To: r-help at r-project.org
Subject: [R] if statement and truncated distribution
Hi R helpers,
I am trying to use the if statement to generate a truncated random variable
as follows:
if (y[i]==0) { v[i] ~ rnorm(1,0,1) | (-inf ,0) }
if (y[i]==1) { v[i] ~ rnorm(1,0,1) | (0, inf) }
I guess I cannot use " | ( , ) " to restrict the range of a variable
in R.
Could you let me know how to write the code correctly in R?
Many thanks for your help.
Maomao
[[alternative HTML version deleted]]
______________________________________________
R-help at 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.