Practical Application (Aplikasi Praktis)
Untuk membuat titik data untuk plot , kita perlu melakukannya dengan menghitung vektor eigen dari matriks sigma, standar deviasi untuk distribusi normal bivariat. Vektor eigen suatu matriks akan dibahas pada bab selanjutnya. Transformasi ini menggunakan vektor eigen terkait untuk principal component analysis (analisis komponen utama), salah satu yang paling populer tanpa pengawasan model pembelajaran dalam ilmu data. Untuk aplikasi praktis ini, tanpa menjelaskan secara rinci, kami menunjukkan bagaimana mentransformasikan ke titik data. Akan dijelaskan lebih detail ketika membahas vektor eigen dan eigennya pada nilai-nilai di bab selanjutnya.
Poin data dihasilkan dari bivariat distribusi normal. Distribusi normal bivariat didefinisikan dengan rata-rata dan standar deviasi, tidak seperti distribusi normal univariat, bagaimanapun, artinya didefinisikan oleh vektor dua dimensi dan standar deviasinya didefinisikan dengan matriks 2 × 2. Kami menggunakan paket R mvtnorm dan kami menggunakan matlib paket untuk operasi matriks. Pertama kita upload semua paket yang dibutuhkan.
sebelumnya install dulu packages tersebut :
install.packages(“mvtnorm”)
install.packages(“ggplot2”)
install.packages(“matlib”)
library(mvtnorm)
library(ggplot2)
library(matlib)
Packages ggplot2 adalah untuk merencanakan. Kemudian, rata-rata dan standar deviasi didefinisikan sebagai berikut :
## Standard deviation
sigma <- matrix(c(4,2,2,3), ncol = 2, nrow = 2)
## Mean
mu <- c(1, 2)
Untuk data ini kami memiliki ukuran sampel n = 10.000
n <- 1000
Fungsi set.seed() adalah untuk mengatur seed, yang merupakan nilai untuk mulai dihasilkan angka acak. Fungsi set.seed() me-reset nilai acak angka dan fungsi acak dari nilai yang diperoleh sebelumnya. Kami mengatur benih untuk mereproduksi hasil yang sama. Jika kita menetapkan benih yang sama, maka kita dapat mereproduksi angka acak yang sama:
set.seed(123)
Akhirnya, akan dihasilkan titik data dengan :
x <- rmvnorm(n = n, mean = mu, sigma = sigma)
Untuk memplot data, tetapkan titik dalam bingkai data:
d <- data.frame(x)
Menggunakan paket ggplot2 dan memplot titik data sebagai:
p2 <- ggplot(d, aes(x = X1, y = X2)) +
geom_point(alpha = .5) +
geom_density_2d()
p2
Langkah pertama yaitu merjemahkan semua titik data yang disimpan sebagai variabel x dengan -mu = [−1, −2] karena pusat distribusi berada di mu = [1, 2]
y <- x - mu
Poin data baru ini disimpan sebagai variabel y. Kemudian menghitung vektor eigen sigma.
E <- eigen(sigma)
E$vectors
## [,1] [,2]
## [1,] -0.7882054 0.6154122
## [2,] -0.6154122 -0.7882054
Vektor eigen dari matriks sigma disimpan dalam E$vectors dalam bentuk dari sebuah matriks. Setiap vektor kolom adalah vektor eigen. Kemudian kita mengambil perkalian matriks, kumpulan data disimpan sebagai 10.000 × 2 matriks dikalikan dengan matriks 2 × 2, transpos dari invers dari matriks E. Invers suatu matriks akan dibahas pada bagian selanjutnya.
y <- y %*% t(inv(E$vectors))
Untuk kumpulan data x, data ini ditetapkan sebagai “bingkai data” menggunakan fungsi data.frame():
dd <- data.frame(y)
Sekarang kita akan merencanakannya:
p3 <- ggplot(dd, aes(x = X1, y = X2)) +
geom_point(alpha = .5) +
geom_density_2d()
p3