Pada bagian pertama, dilakukan pemanggilan library mvtnorm, ggplot2, dan matlib dengan menggunakan fungsi library().
library(mvtnorm)
library(ggplot2)
library(matlib)
================================================================================================================================
Kemudian, pada bagian selanjutnya, dibuat sebuah matriks sigma dengan elemen (4,2,2,3) dan ukuran 2x2 yang akan digunakan sebagai matriks kovariansi, serta sebuah vektor mu dengan elemen (1,2) yang akan digunakan sebagai vektor mean.
sigma <- matrix(c(4,2,2,3), ncol = 2, nrow = 2)
mu <- c(1, 2)
================================================================================================================================
Selanjutnya, dibuat sebanyak 1000 nilai acak dari distribusi multivariat normal (MVN) menggunakan fungsi rmvnorm() dari package mvtnorm. Nilai acak tersebut disimpan dalam variabel x dan dijadikan sebuah data frame d.
n <- 1000
set.seed(123)
x <- rmvnorm(n = n, mean = mu, sigma = sigma)
d <- data.frame(x)
================================================================================================================================
Pada bagian selanjutnya, data x yang telah dibuat akan diplot dengan menggunakan ggplot() dan diatur agar menampilkan distribusi 2 dimensi dengan geom_density_2d() dan geom_point().
p2 <- ggplot(d, aes(x = X1, y = X2)) +
geom_point(alpha = .5) +
geom_density_2d()
p2
Selanjutnya, vektor y dibuat dengan melakukan pengurangan antara setiap nilai dalam x dengan mu.
y <- x - mu
================================================================================================================================
Untuk melakukan transformasi linear, dilakukan perhitungan eigenvector dan eigenvalue dari sigma menggunakan fungsi eigen() dan hanya eigenvector yang digunakan untuk melakukan transformasi linear terhadap y.
E <- eigen(sigma)
E$vectors
## [,1] [,2]
## [1,] -0.7882054 0.6154122
## [2,] -0.6154122 -0.7882054
================================================================================================================================
Kemudian, y akan dikalikan dengan inverse eigenvector dari sigma dan data dd dibuat dari hasil transformasi y.
y <- y %*% t(inv(E$vectors))
dd <- data.frame(y)
================================================================================================================================
Terakhir, data dd diplot menggunakan ggplot() dengan geom_density_2d() dan geom_point().
p3 <- ggplot(dd, aes(x = X1, y = X2)) +
geom_point(alpha = .5) +
geom_density_2d()
p3