r, How to create two correlated variables that are distributed jointly normal (mean 0, var 1) [duplicate]

I want to create two random variables $X \sim N(0,1)$ and $Y \sim N(0,1)$ that satisfy $E(X,Y)=0.5$

That is I want to create $Z=(X,Y)^\top$ with a joint bivariate normal distribution

$Z \sim N\left( \left(\begin{array}{c} 0\\ 0 \end{array}\right) , \left(\begin{array}{cc} 1 & 0.5\\ 0.5 & 1 \end{array}\right) \right)$.

How do I code this in R?

Thanks.

• This question appears to be off-topic give that it is mostly about R code. – Andy May 11 '14 at 7:47
• What does $E(X,Y)$ mean? Did you mean $E(X \cdot Y)$? – QuantIbex May 11 '14 at 9:02
• This answer describes how this can be done using a Cholesky decomposition of the covariance matrix. Of course, you could use mvrnorm from MASS but it is less fun. – QuantIbex May 11 '14 at 9:08
• Duplicate. See here or here – Glen_b May 11 '14 at 9:25

I suppose you are looking for the mvtnorm package:

> library(mvtnorm)
> sigma <- matrix(c(1, 0.5, 0.5, 1), nrow = 2)
> x <- rmvnorm(5000, mean = c(0,0), sigma = sigma, method = "chol")
> colMeans(x)
[1] 0.02096549 0.03626787
> var(x)
[,1]      [,2]
[1,] 1.0061570 0.4920715
[2,] 0.4920715 1.0087832