library(mvtnorm)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(matlib)
## Warning: package 'matlib' was built under R version 4.2.3
Paket mvtnorm adalah paket R yang menyediakan fungsi untuk menghasilkan distribusi multivariat normal dan t-distribusi. Fungsi yang tersedia dalam paket ini mencakup:
dmvnorm(): menghitung nilai dari fungsi kepadatan probabilitas (pdf) distribusi multivariat normal. pmvnorm(): menghitung probabilitas kumulatif dari distribusi multivariat normal pada rentang tertentu. rmvnorm(): menghasilkan sampel acak dari distribusi multivariat normal. dt(): menghitung nilai dari fungsi kepadatan probabilitas (pdf) distribusi t multivariat. pt(): menghitung probabilitas kumulatif dari distribusi t multivariat pada rentang tertentu. rt(): menghasilkan sampel acak dari distribusi t multivariat. Fungsi-fungsi ini sangat berguna dalam analisis data multivariat, di mana beberapa variabel diamati secara bersamaan. Dalam banyak kasus, variabel-variabel ini terkait satu sama lain dan memenuhi asumsi-asumsi distribusi normal. Dalam hal ini, distribusi multivariat normal dapat digunakan untuk memodelkan distribusi variabel-variabel ini.
Misalnya, Anda dapat menggunakan dmvnorm() untuk menghitung nilai kepadatan probabilitas untuk suatu vektor observasi multivariat normal dengan rata-rata (mean) dan matriks kovariansi (covariance matrix) tertentu. Atau, Anda dapat menggunakan rmvnorm() untuk menghasilkan sampel acak dari distribusi multivariat normal dengan rata-rata dan matriks kovariansi yang diberikan.
Paket mvtnorm juga dapat digunakan untuk menghitung koefisien korelasi antara variabel-variabel dalam data multivariat normal. Dengan menggunakan koefisien korelasi, Anda dapat mengukur seberapa kuat hubungan antara dua variabel, serta mengevaluasi pengaruh variabel-variabel ini terhadap variabel lainnya.
Secara keseluruhan, paket mvtnorm sangat berguna dalam analisis data multivariat dan dapat membantu Anda menghitung statistik yang penting untuk pemodelan dan analisis data.
## Standard deviation
sigma <- matrix(c(4,2,2,3), ncol = 2, nrow = 2)
## Mean
mu <- c(1, 2)
Data ini memilik ukuran sampel n = 10000
mu
## [1] 1 2
sigma
## [,1] [,2]
## [1,] 4 2
## [2,] 2 3
n <- 1000
Ini berfungsi set.seed() nilai untuk mulai menghasilkan angka acak. Fungsi lainnya untuk mengatur nilai acak agnka dan fungsi acak dari nilai yang diperoleh sebelumnya.
set.seed(123)
Selanjutnya yaitu menghasilkan titik data b
x <- rmvnorm(n = n, mean = mu, sigma = sigma)
Untuk memplot data, kami menetapkan titik-titik dalam bingkai data
d <- data.frame(x)
Untuk plotting kita menggunakan ggplot2 contohnya adalah sebagai berikut:
p2 <- ggplot(d, aes(x = X1, y = X2)) +
geom_point(alpha = .5) +
geom_density_2d()
p2
Selanjutnya menerjemahkan semua titik data yang disimpan sebagai
variabel x dengan -mu = [−1, −2] Karena pusat distribusi ada di mu = [1,
2]
y <- x - mu
head(y)
## [,1] [,2]
## [1,] -1.2051566 0.3078223
## [2,] 2.0313693 0.9917705
## [3,] 1.2123073 3.8824405
## [4,] -0.8265117 -1.8134133
## [5,] -1.5688595 -0.1162473
## [6,] 1.5517372 1.2776175
E <- eigen(sigma)
E$vectors
## [,1] [,2]
## [1,] -0.7882054 0.6154122
## [2,] -0.6154122 -0.7882054
Vektor eigen dari sigma matriks disimpan dalam E$vektor dalam bentuk dari matriks. Setiap vektor kolom adalah vektor eigen. Kemudian kita ambil perkalian matriks, kumpulan data disimpan sebagai 10000 × 2 matriks dikalikan dengan matriks 2 × 2, transpos kebalikan dari matriks E. Kebalikan dari matriks akan dibahas di bagian selanjutnya.
y <- y %*% t(inv(E$vectors))
Menggunakan data.frame() sebagai bingkai data:
dd <- data.frame(y)
p3 <- ggplot(dd, aes(x = X1, y = X2)) +
geom_point(alpha = .5) +
geom_density_2d()
p3