Bivariate plot of a bivariate normal distribution

An example:

# Standard deviations and correlation
sig_x <- 1
sig_y <- 2
rho_xy <- 0.7

# Covariance between X and Y
sig_xy <- rho_xy * sig_x *sig_y

# Covariance matrix
Sigma_xy <- matrix(c(sig_x ^ 2, sig_xy, sig_xy, sig_y ^ 2), nrow = 2, ncol = 2)

# Load the mvtnorm package
library("mvtnorm")

# Means
mu_x <- 0
mu_y <- 0

# Simulate 1000 observations
set.seed(12345)  # for reproducibility
xy_vals <- rmvnorm(1000, mean = c(mu_x, mu_y), sigma = Sigma_xy)

# Have a look at the first observations
head(xy_vals)

# Create scatterplot
# plot(xy_vals[, 1], xy_vals[, 2], pch = 16, cex = 2, col = "blue",
#      main = "Bivariate normal: rho = 0.0", xlab = "x", ylab = "y")

library(graphics)

x <- xy_vals[, 1]
y <- xy_vals[, 2]

par(mar=c(4, 4, 2, 6)+0.4)

smoothScatter(x, y, asp=1,
              main = paste("Bivariate normal: rho = ", rho_xy),
              xlab = "x", ylab = "y")


# Add lines
abline(h = mu_y, v = mu_x)

library(fields)

n <- matrix(0, ncol=128, nrow=128)

xrange <- range(x)
yrange <- range(y)

for (i in 1:length(x)) {
  posx <- 1+floor(127*(x[i]-xrange[1])/(xrange[2]-xrange[1]))
  posy <- 1+floor(127*(y[i]-yrange[1])/(yrange[2]-yrange[1]))
  n[posx, posy] <- n[posx, posy]+1
}

image.plot( legend.only=TRUE,
            zlim= c(0, max(n)), nlevel=128,
            col=colorRampPalette(c("white", blues9))(128))


Commentaires

Posts les plus consultés de ce blog

Standard error from Hessian Matrix... what can be done when problem occurs

Install treemix in ubuntu 20.04

stepAIC from package MASS with AICc