Perrtama, kita upload semua package yang diperlukan

library(mvtnorm)
library(ggplot2)
library(matlib)

Kemudian, kita definisikan terlebih dulu mean dan standard deviation

##Standard deviation
sigma <- matrix(c(4,2,2,3), ncol = 2, nrow = 2)
##Mean
mu <- c(1,2)

Untuk data ini kita memiliki ukuran sampel n = 1000

n <- 1000

Gunakan set.seed untuk mendapatkan angka acak

set.seed(123)

Akhirnya, kita mendapatkan data points dengan

x<- rmvnorm(n=n, mean=mu, sigma=sigma)

Untuk memplot data kita menetapkan points di sebuah data frame:

d <- data.frame(x)

menggunakan ggplot2 kita memplot data points sebagai

p2 <- ggplot(d, aes(x = X1, y = X2)) +
  geom_point(alpha = .5) +
  geom_density_2d()

p2

Pertama kita terjemahkan semua data points yang tersimpan sebagai variabel x dari -mu = [-1, -2] karena nilai tengah dari distribusinya ada pada mu = [1,2]

y <- x- mu

Kita simpan data point tersebut dalam variabel y. Kemudian kita hitung eigen vectors dari sigma.

E <- eigen(sigma)
E$vectors
##            [,1]       [,2]
## [1,] -0.7882054  0.6154122
## [2,] -0.6154122 -0.7882054

Kemudian kita inverse transpose variabel y

y <- y %*% t(inv(E$vectors))

Kita siapkan data ini sebagai “data frame” menggunakan function data.frame()

dd <- data.frame(y)

Sekarang, kita memplotnya dengan

p3 <- ggplot(dd, aes(x = X1, y = X2)) +
  geom_point(alpha = .5) +
  geom_density_2d()
p3

Sehingga menghasilkan tampilan plot seperti di atas.