[R] uniform generator (default)
Alec Stephenson
a.stephenson at lancaster.ac.uk
Thu Oct 18 17:46:36 CEST 2001
Recieving digests.
> RNGkind(NULL)
[1] "Marsaglia-Multicarry" "Kinderman-Ramage"
I would appreciate it if anybody has any comments on the following.
Please do not comment on the R functions themselves, since they merely
mimic a (bivariate simplification of a) C routine called from S.
In particular, I would like to know if anything is available with regard
to the theoretical properties of the default uniform generator under
transformations such as these.
testing <-
function(n,alpha) {
sim <- matrix(0,ncol=2,nrow=n)
for(i in 1:n)
{
u <- runif(1)
# runif(1) ####
if(runif(1) < alpha) z <- -log(runif(1))-log(runif(1))
else z <- -log(runif(1))
sim[i,1] <- exp(-(z * u^alpha))
sim[i,2] <- exp(-(z * (1-u)^alpha))
}
sim
}
tmp <- testing(100000,0.5) # about 30secs 4 me
plot(tmp[,1],tmp[,2],pch=".")
testing <-
function(n,alpha) {
sim <- matrix(0,ncol=2,nrow=n)
for(i in 1:n)
{
u <- runif(1)
runif(1) ####
if(runif(1) < alpha) z <- -log(runif(1))-log(runif(1))
else z <- -log(runif(1))
sim[i,1] <- exp(-(z * u^alpha))
sim[i,2] <- exp(-(z * (1-u)^alpha))
}
sim
}
tmp <- testing(100000,0.5) # about 30secs 4 me
plot(tmp[,1],tmp[,2],pch=".")
> version
_
platform i686-pc-linux-gnu
arch i686
os linux-gnu
system i686, linux-gnu
status
major 1
minor 3.1
year 2001
month 08
day 31
language R
As an aside, the routine written specifically in R may take the form
"testing.r"<-
function(n = 1, alpha = 1, margins = "frechet")
{
if(length(n) != 1 || mode(n) != "numeric" || n <= 0 || n%%1 != 0)
stop("`n' must be a positive integer")
if(length(alpha) != 1 || mode(alpha) != "numeric" || alpha <= 0 ||
alpha > 1) stop("`alpha' must be a parameter in (0,1]")
####
u <- runif(n)
z <- rgamma(n, 1+rbinom(n,1,alpha))
sim <- z * cbind(x=u, y=1-u)^alpha
exp(-sim)
}
which doesn't have the same structured output (for obvious reasons).
Incedently, the distribution function from which these sample from is the
copula F(x,y)=exp(-(u^(1/alpha)+v^(1/alpha))^alpha) where u=-log(x) and
v=-log(y).
Thanks in advance.
Alec Stephenson tel +44 (0) 1524 593950
Department of Mathematics and Statistics fax +44 (0) 1524 592681
Lancaster University email a.stephenson at lancaster.ac.uk
Lancaster LA1 4YF
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list