Consider the following:

        p <- rbinom(40, 1, 0.9)
        e <- rnorm(40, 0, 1)
        if(any(p==0))e[p==0] <- 3*(rchisq(sum(p==0), 1)-1)

To find out whether this is faster than what you wrote, surround it with calls to proc.time, as follows:

        start.time <- proc.time()
        p <- rbinom(40, 1, 0.9)
        e <- rnorm(40, 0, 1)
        if(any(p==0))e[p==0] <- 3*(rchisq(sum(p==0), 1)-1)
        (elapsed.time <- proc.time()-start.time)

I got 0.21 seconds for this. Similarly,

        start.time <- proc.time()
        p <- rbinom(40, 1, 0.9)
        e <- rnorm(40,0,1)*p + 3*(rchisq(40,1)-1)*(1-p)
        (elapsed.time <- proc.time()-start.time)

For this, I got 0.17 seconds. Therefore, it looks like your is faster. However, the technique I displayed above might be faster in crudely similar contexts.

Hope this helps.
Spencer Graves

Jacob van Wyk wrote:
Hallo all users of R.
I wish to simulate a simple linear regression, y=a+bx+e, (n=40, say),
where x is
N(0,1) and where
e is N(0,1), with probability 0.9, and
e is 3*(chisq(40,1)-1), say, with probability 0.1.
For e: would the following work, or is there a better way?

p <- rbinom(40,1,0.9)
e <- rnorm(40,0,1)*p + 3*(rchisq(40,1)-1)*(1-p)

Thanks for your time.
Regards
Jacob



Jacob L van Wyk
Department of Mathematics and Statistics
Rand Afrikaans University
P O Box 524
Auckland Park 2006
South Africa
Tel: +27-11-489-3080
Fax: +27-11-489-2832


______________________________________


VRYWARING\ \ Die inhoud en enige aanhegsels van hierdie elektron... [[dropped]]

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to