Praktikum 1 Analisis Data Multivariat
Penjelasan, Rumus, Contoh, Implementasi dari Praktikum 1
Disusun oleh Fathia Salwadifina
Matriks adalah sekumpulan bilangan yang disusun secara teratur berdasarkan baris dan kolom, lalu ditempatkan di dalam tanda kurung. Tanda kurung yang digunakan bisa berupa kurung biasa “( )” atau kurung siku “[ ]”. Setiap matriks biasanya diberi nama dengan huruf kapital, misalnya A, B, atau C. Jika sebuah matriks terdiri dari n baris dan p kolom, maka matriks tersebut memiliki ukuran (ordo) n × p. Berikut contoh matriks berukuran 2 x 2:
\[
A = \begin{bmatrix}
3 & 8 \\
7 & 5
\end{bmatrix}
\]
Operasi matriks adalah aturan-aturan perhitungan yang bisa dilakukan terhadap matriks, mirip dengan operasi hitung pada bilangan tetapi mengikuti kaidah khusus. Operasi ini digunakan untuk mengolah data, menyelesaikan persamaan, atau melakukan transformasi.
Sebelum kita masuk ke perhitungan dari berbagai operasi matriks, kita akan menyiapkan sebuah dataset terlebih dahulu.
# input data #
X = matrix(c(4.5, 7.2, 5.9,
6.8, 9.1, 8.3,
7.4, 6.6, 8.7), nrow = 3, ncol = 3); X
## [,1] [,2] [,3]
## [1,] 4.5 6.8 7.4
## [2,] 7.2 9.1 6.6
## [3,] 5.9 8.3 8.7
Matriks X adalah matriks dengan ordo 3x3 yang terdiri dari 3 baris dan 3 kolom.
Pada syntax tersebut nrow melambangkan berapa baris yang diinginkan.
Begitu juga dengan ncol, syntax ini melambangkan berapa kolom yang
digunakan.
Dalam R kita bisa secara default matriks yang kita
buat akan turun ke bawah terlebih dahulu yang berarti kita akan
memasukkan elemen berdasarkan kolom. Jika kita ingin memasukkan baris
terlebih dahulu maka gunakan syntax byrow =TRUE.
Y = matrix(c(5.6, 8.2, 7.9,
6.3, 9.5, 8.1,
7.8, 6.4, 9.2), nrow = 3, ncol = 3, byrow = TRUE); Y
## [,1] [,2] [,3]
## [1,] 5.6 8.2 7.9
## [2,] 6.3 9.5 8.1
## [3,] 7.8 6.4 9.2
Matriks Y adalah matriks dengan ordo 3x3 yang disusun berdasarkan barisnya terlebih dahulu.
Karena sudah berhasil menginput data dalam matriks, selanjutnya kita akan melakukan operasi-operasi matriks yang ada. Operasi matriks antara lain adalah sebagai berikut:
Dua matriks bisa dijumlahkan jika ukurannya sama. Penjumlahan dilakukan dengan menjumlahkan elemen yang bersesuaian.
\[ (A + B)_{ij} = a_{ij} + b_{ij} \] Contoh:
# Penjumlahan matriks X dan Y
X + Y
## [,1] [,2] [,3]
## [1,] 10.1 15.0 15.3
## [2,] 13.5 18.6 14.7
## [3,] 13.7 14.7 17.9
Pengurangan matriks adalah operasi dalam aljabar linear yang dilakukan dengan cara mengurangkan elemen-elemen pada posisi yang bersesuaian dari dua matriks. Operasi ini hanya dapat dilakukan jika kedua matriks memiliki ordo atau ukuran yang sama.
\[ (A - B)_{ij} = a_{ij} - b_{ij} \] Contoh:
X - Y
## [,1] [,2] [,3]
## [1,] -1.1 -1.4 -0.5
## [2,] 0.9 -0.4 -1.5
## [3,] -1.9 1.9 -0.5
Y - X
## [,1] [,2] [,3]
## [1,] 1.1 1.4 0.5
## [2,] -0.9 0.4 1.5
## [3,] 1.9 -1.9 0.5
Perkalian matriks adalah operasi yang mengalikan baris matriks pertama dengan kolom matriks kedua, dengan syarat jumlah kolom matriks pertama sama dengan jumlah baris matriks kedua. Operasi ini tidak komutatif dan banyak digunakan dalam transformasi linear, sistem persamaan, serta pemodelan matematika. Dalam R, perkalian matriks umumnya dibagi menjadi tiga jenis:
X %*% Y
## [,1] [,2] [,3]
## [1,] 125.76 148.86 158.71
## [2,] 149.13 187.73 191.31
## [3,] 153.19 182.91 193.88
Y %*% X
## [,1] [,2] [,3]
## [1,] 130.85 178.27 164.29
## [2,] 144.54 196.52 179.79
## [3,] 135.46 187.64 180.00
Misalkan ada matriks X dan Y, jika ingin mengalikan elemen X1 dengan Y1 maka hanya mengunakaan * saja.
X*Y
## [,1] [,2] [,3]
## [1,] 25.20 55.76 58.46
## [2,] 45.36 86.45 53.46
## [3,] 46.02 53.12 80.04
2*Y
## [,1] [,2] [,3]
## [1,] 11.2 16.4 15.8
## [2,] 12.6 19.0 16.2
## [3,] 15.6 12.8 18.4
Transpose adalah operasi yang menukar baris menjadi kolom dan kolom menjadi baris pada suatu matriks. Operasi ini berguna untuk menganalisis simetri, menyusun ulang data, serta mendukung berbagai perhitungan dalam aljabar linear seperti dot product dan turunan matriks.
\[ X = \begin{bmatrix} x_{11} & x_{12} & x_{13} \\ x_{21} & x_{22} & x_{23} \\ x_{31} & x_{32} & x_{33} \end{bmatrix} ,\quad X^\top = \begin{bmatrix} x_{11} & x_{21} & x_{31} \\ x_{12} & x_{22} & x_{32} \\ x_{13} & x_{23} & x_{33} \end{bmatrix} \]
transX = t(X); transX
## [,1] [,2] [,3]
## [1,] 4.5 7.2 5.9
## [2,] 6.8 9.1 8.3
## [3,] 7.4 6.6 8.7
transY = t(Y); transY
## [,1] [,2] [,3]
## [1,] 5.6 6.3 7.8
## [2,] 8.2 9.5 6.4
## [3,] 7.9 8.1 9.2
Invers matriks adalah kebalikan dari sebuah matriks persegi, yaitu matriks yang apabila dikalikan dengan matriks asal akan menghasilkan matriks identitas. Tidak semua matriks memiliki invers, dan syarat utamanya adalah determinan matriks tidak bernilai nol. Invers banyak digunakan untuk menyelesaikan sistem persamaan linear. Invers dari matriks \(\boldsymbol{A}\) dilambangkan dengan \(\boldsymbol{A}^{-1}\)
\[ A^{-1} = \frac{1}{\det(A)} \cdot \text{adj}(A) \]
dan memenuhi:
\[ \boldsymbol{A} \times \boldsymbol{A}^{-1} = \boldsymbol{A}^{-1} \times \boldsymbol{A} = \boldsymbol{I} \] di mana \(\boldsymbol{I}\) adalah matriks identitas.
Contoh:
inv_X = solve(X); inv_X
## [,1] [,2] [,3]
## [1,] -3.7598273 -0.3483891 3.462309
## [2,] 3.6534608 0.6952366 -3.634962
## [3,] -0.9357176 -0.4270079 1.234777
inv_Y = solve(Y); inv_Y
## [,1] [,2] [,3]
## [1,] -1.4268518 0.9983147 0.34628039
## [2,] -0.2094535 0.4052644 -0.17695209
## [3,] 1.3554289 -1.1283204 -0.06179279
Determinan matriks adalah suatu nilai skalar yang dihitung dari elemen-elemen matriks persegi (jumlah baris = kolom). Nilai ini menunjukkan sifat penting matriks, seperti apakah matriks memiliki invers, serta berperan sebagai faktor skala dalam transformasi linear. Dengan demikian, determinan membantu memahami invertibilitas dan karakteristik transformasi dari suatu matriks. Determinan matriks \(\boldsymbol{A}\) dilambangkan dengan \(\det(\boldsymbol{A})\) atau ∣\(\boldsymbol{A}\)∣.
\[ \det(A) = \begin{vmatrix} a & b \\ c & d \end{vmatrix} = ad - bc \\det(A) = \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} = a(ei - fh) - b(di - fg) + c(dh - eg) \]
Contoh:
det(X)
## [1] -6.487
det(Y)
## [1] -24.922
Eigen dan dekomposisi matriks adalah konsep penting dalam aljabar linear yang digunakan untuk memahami struktur dan sifat suatu matriks. Eigen value dan eigen vector menggambarkan bagaimana sebuah matriks mentransformasikan ruang vektor, sedangkan dekomposisi matriks memecah matriks menjadi bentuk yang lebih sederhana untuk mempermudah analisis. Keduanya sangat berguna dalam analisis data multivariat, seperti Principal Component Analysis (PCA), Factor Analysis, kompresi data, pengenalan pola, hingga penyelesaian sistem persamaan linier.
Eigen value dan eigen vector adalah konsep dalam aljabar linear yang menunjukkan bagaimana sebuah matriks mentransformasikan ruang vektor. Keduanya sangat penting dalam analisis data multivariat, misalnya pada Principal Component Analysis (PCA), Factor Analysis, dan pemodelan sistem dinamis.
eigX = eigen(X); eigX
## eigen() decomposition
## $values
## [1] 21.7402839 0.8936224 -0.3339063
##
## $vectors
## [,1] [,2] [,3]
## [1,] -0.5033593 0.4098465 -0.7552169
## [2,] -0.6075373 -0.7623696 0.6475368
## [3,] -0.6144329 0.5008178 -0.1017031
eigY = eigen(Y); eigY
## eigen() decomposition
## $values
## [1] 23.083566 1.812198 -0.595764
##
## $vectors
## [,1] [,2] [,3]
## [1,] -0.5457291 -0.1890448 -0.77432167
## [2,] -0.6011932 -0.6346123 -0.02413495
## [3,] -0.5837350 0.7493526 0.63233176
Eigen value adalah nilai skalar yang muncul dalam transformasi linier, eigen value menggambarkan seberapa besar suatu matriks dapat memperbesar atau memperkecil panjang vektor tertentu tanpa mengubah arahnya.
Eigen value sangat berguna dalam analisis data multivariat seperti Principal Component Analysis (PCA) untuk menentukan seberapa besar kontribusi tiap komponen utama.
eigvalX = eigX$values; eigvalX
## [1] 21.7402839 0.8936224 -0.3339063
eigvalY = eigY$values; eigvalY
## [1] 23.083566 1.812198 -0.595764
Eigen vektor adalah vektor khusus yang arahnya tidak berubah ketika dikalikan dengan suatu matriks, hanya panjangnya yang bertambah atau berkurang sesuai dengan eigen value yang terkait.
Eigen vector banyak digunakan dalam PCA atau Factor Analysis untuk menentukan arah atau sumbu baru yang mewakili variasi terbesar pada data.
eigvecX = eigX$vectors; eigvecX
## [,1] [,2] [,3]
## [1,] -0.5033593 0.4098465 -0.7552169
## [2,] -0.6075373 -0.7623696 0.6475368
## [3,] -0.6144329 0.5008178 -0.1017031
eigvecY = eigY$vectors; eigvecY
## [,1] [,2] [,3]
## [1,] -0.5457291 -0.1890448 -0.77432167
## [2,] -0.6011932 -0.6346123 -0.02413495
## [3,] -0.5837350 0.7493526 0.63233176
SVD adalah teknik pemfaktoran matriks menjadi tiga matriks (U, Σ, dan Vᵀ), yang sangat berguna untuk kompresi data, pengenalan pola, atau mereduksi dimensi pada data besar.
\[ \boldsymbol{a} = \begin{bmatrix} 2 & 5 & -1 \\ -4 & 3 & 6 \\ -7 & -2 & 4 \\ 1 & -3 & 8 \end{bmatrix} \]
a <- matrix(c(2,5,-1,-4,3,6,7,-2,4,1,-3,8), 4, 3, byrow=TRUE)
a
## [,1] [,2] [,3]
## [1,] 2 5 -1
## [2,] -4 3 6
## [3,] 7 -2 4
## [4,] 1 -3 8
svd_result <- svd(a)
singular_value <- svd_result$d ; singular_value
## [1] 11.213495 8.588523 5.873227
U <- svd_result$u ; U
## [,1] [,2] [,3]
## [1,] 0.1627455 -0.0335601 -0.8779175
## [2,] -0.3229368 0.7764528 -0.3147144
## [3,] -0.5437180 -0.6201328 -0.3167235
## [4,] -0.7573615 0.1069112 0.1729214
V <- svd_result$v ; V
## [,1] [,2] [,3]
## [1,] -0.2627325 -0.8624242 -0.4326617
## [2,] 0.2857662 0.3587450 -0.8886167
## [3,] -0.9215798 0.3571085 -0.1521977
Matriks jarak adalah matriks yang berisi nilai jarak antara semua pasangan objek dalam dataset, sehingga membantu menganalisis kedekatan, kemiripan, atau perbedaan antar objek dalam ruang data.
Sebelum kita masuk ke perhitungan dari berbagai jenis matriks jarak, kita akan menyiapkan sebuah dataset terlebih dahulu.
Pada kasus ini, kita akan menggunakan random sampling dari dataset bawaan. Proses ini dilakukan agar analisis lebih fleksibel dan tidak selalu menggunakan data penuh.
library(factoextra) # Library untuk memvisualisasikan jarak antar data
set.seed(987) #Menentukan seed agar hasil sampling konsisten
ss <- sample(1:50, 15) # ambil 15 data secara acak dari 50 observasi
df <- USArrests[ss, ]
# Melakukan standardisasi data (penting bila skala antar variabel berbeda)
df.scaled <- scale(df)
df.scaled
## Murder Assault UrbanPop Rape
## Washington -0.87419078 -0.41645232 0.5587028 0.74899841
## Missouri 0.29036177 -0.02229573 0.2762126 1.03235216
## New Hampshire -1.31672075 -1.46753657 -1.0420749 -1.61700540
## New York 0.77947384 0.88545886 1.7828270 0.73483072
## Virginia 0.17390651 -0.28506679 -0.3829312 -0.03022440
## Minnesota -1.17697444 -1.28837449 -0.1004410 -0.85195027
## Iowa -1.29342970 -1.47948071 -0.9479115 -1.36198702
## Illinois 0.61643648 0.82573816 1.5003368 0.43730929
## Idaho -1.20026550 -0.71505580 -1.2304017 -0.95112409
## Louisiana 1.78098903 0.82573816 -0.1004410 0.18229091
## Alabama 1.26858591 0.67046435 -0.8537481 0.04061404
## Kentucky 0.45339913 -0.84644133 -1.4187285 -0.65360265
## Arizona 0.08074231 1.36322442 1.2178466 1.42904741
## Delaware -0.43166081 0.69435263 0.4645394 -0.72444109
## New Mexico 0.84934699 1.25572717 0.2762126 1.58489197
## attr(,"scaled:center")
## Murder Assault UrbanPop Rape
## 7.753333 179.866667 67.066667 20.913333
## attr(,"scaled:scale")
## Murder Assault UrbanPop Rape
## 4.293495 83.723070 10.619838 7.058315
Jarak Euclidean adalah ukuran jarak lurus terpendek antara dua titik dalam ruang, mirip jarak yang diukur dengan penggaris, umum digunakan dalam geometri maupun machine learning.
Jarak Euclidean umum dipakai dalam K-Means Clustering, Nearest Neighbor, dan visualisasi data karena intuitif dan mudah dipahami.
\[ \boldsymbol{d} = \sqrt{(q_1 - p_1)^2 + (q_2 - p_2)^2 +...+(q_n - p_n)^2} \]
Contoh aplikasi: Menghitung kesamaan pola detak jantung antar pasien serta dalam image processing untuk mendeteksi tepi pada gambar.
Jarak Chebyshev adalah ukuran jarak yang ditentukan oleh perbedaan terbesar di antara koordinat dua titik.
Jarak Chebyshev sering digunakan pada optimasi jalur di grid, perhitungan kedekatan dalam ruang diskrit, atau untuk membatasi deviasi maksimum antar variabel dalam analisis data.
\[ \boldsymbol{d = max(|q_1-p_1|, |q_2-p_2|,..., |q_n-p_n|)} \]
Contoh aplikasi: Menghitung langkah minimum raja pada papan catur serta optimasi pergerakan robot di ruang berbentuk grid.
Jarak Manhattan (city-block distance) adalah ukuran jarak yang dihitung dengan menjumlahkan nilai mutlak perbedaan setiap koordinat antar dua titik. Metode ini sering digunakan pada data berbentuk diskrit atau dalam ruang grid, misalnya untuk menghitung jarak tempuh di jalan berbentuk kotak-kotak.
\[ d_{\text{Manhattan}}(x,y) = \sum_{i=1}^p |x_i - y_i| \]
Contoh aplikasi: Menentukan jalur terpendek taksi di kota dengan pola jalan kotak-kotak serta mengoptimalkan pergerakan karakter dalam permainan strategi berbasis peta grid.
Jarak Mahalanobis adalah ukuran jarak yang memperhitungkan varians dan korelasi antar variabel, sehingga lebih tepat digunakan pada data multivariat dibandingkan jarak biasa. Jarak ini menyesuaikan skala tiap variabel dan bisa mendeteksi perbedaan yang tidak terlihat dengan metode jarak standar.
\[ d_{\text{Mahalanobis}}(x,y) = \sqrt{(x - y)^T S^{-1} (x - y)} \]
dengan \(S\) adalah matriks kovarians dari data.
Contoh aplikasi: Mendeteksi transaksi keuangan yang tidak wajar pada sistem fraud detection serta mengidentifikasi sampel produk cacat dalam quality control industri berbasis analisis multivariat.
Jarak Minkowski adalah ukuran jarak umum dalam ruang vektor yang merupakan perluasan dari jarak Euclidean dan Manhattan. Perhitungan jarak ini menggunakan parameter \(q\), sehingga dapat menyesuaikan cara mengukur kedekatan antar titik.
\[ d_{\text{Minkowski}}(x,y;q) = \left( \sum_{i=1}^p |x_i - y_i|^q \right)^{\frac{1}{q}} \]
catatan: - \(q=1\) ⟶ Jarak
Manhattan
- \(q=2\) ⟶ Jarak Euclidean
- \(q \to \infty\) ⟶ Jarak
Chebyshev
Contoh aplikasi: Digunakan dalam algoritma K-Nearest Neighbor (KNN) untuk mengukur kedekatan antar data serta dalam machine learning ketika diperlukan fleksibilitas dalam memilih metrik jarak sesuai karakteristik dataset.
Matriks statistik adalah matriks yang digunakan untuk merepresentasikan informasi atau hubungan antar variabel dalam analisis statistik. Beberapa jenis matriks statistik yang sering dipakai antara lain:
Vektor rata-rata adalah vektor yang memuat nilai rata-rata dari setiap variabel dalam suatu dataset multivariat. Jika terdapat \(p\) variabel dan \(n\) pengamatan, maka vektor rata-rata akan memiliki \(p\) elemen, di mana masing-masing elemen merepresentasikan rata-rata dari satu variabel.
Misal kita mempunyai dataset sebagai berikut :
# input data burung
BB = c(15.2, 18.4, 16.7, 20.1, 14.9, 13.8, 19.5, 17.2, 21.0, 16.3)
PM = c(25, 28, 27, 30, 24, 23, 29, 26, 31, 27)
RTB = c(85, 92, 88, 95, 83, 80, 94, 87, 98, 89)
bird = as.matrix(cbind(BB, PM, RTB)); bird
## BB PM RTB
## [1,] 15.2 25 85
## [2,] 18.4 28 92
## [3,] 16.7 27 88
## [4,] 20.1 30 95
## [5,] 14.9 24 83
## [6,] 13.8 23 80
## [7,] 19.5 29 94
## [8,] 17.2 26 87
## [9,] 21.0 31 98
## [10,] 16.3 27 89
Matriks rata-rata adalah matriks yang dibentuk dengan menduplikasi vektor rata-rata ke seluruh baris hingga ukurannya sama dengan matriks data asli. Setiap baris identik berisi rata-rata tiap variabel. Matriks ini berguna untuk proses centering (memusatkan data) dengan cara dikurangkan dari matriks data, yang menjadi langkah penting dalam perhitungan kovarians, korelasi, serta analisis multivariat seperti PCA dan analisis faktor.
Jika \(X\) adalah matriks data berukuran \(m \times n\), maka vektor rata-rata:
\[ \bar{x} = \begin{bmatrix} \bar{x}_1 \\ \bar{x}_2 \\ \vdots \\ \bar{x}_p \end{bmatrix} = \frac{1}{n} \sum_{i=1}^n x_i \]
Contoh:
# vektor rata-rata dengan colMeans
vecMeans = as.matrix(colMeans(bird)); vecMeans
## [,1]
## BB 17.31
## PM 27.00
## RTB 89.10
# vektor rata-rata dengan fungsi mean untuk tiap variabel
vecRata = matrix(c(mean(BB), mean(PM), mean(RTB)), nrow=3, ncol=1); vecRata
## [,1]
## [1,] 17.31
## [2,] 27.00
## [3,] 89.10
Matriks kovarians adalah matriks yang menunjukkan hubungan variabilitas antar variabel, di mana setiap elemen merepresentasikan kovarians antara sepasang variabel. Matriks ini menjadi dasar penting dalam analisis multivariat seperti Principal Component Analysis (PCA), Discriminant Function Analysis (DFA), dan MANOVA.
\[ S = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})(x_i - \bar{x})^T \]
atau dalam bentuk matriks:\
\[ S = \begin{bmatrix} s_{11} & s_{12} & \cdots & s_{1p} \\ s_{21} & s_{22} & \cdots & s_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ s_{p1} & s_{p2} & \cdots & s_{pp} \end{bmatrix} \]
Contoh:
# Matriks korelasi untuk dataset bird
korel = cor(bird); korel
## BB PM RTB
## BB 1.0000000 0.9762771 0.9808605
## PM 0.9762771 1.0000000 0.9949973
## RTB 0.9808605 0.9949973 1.0000000
Matriks korelasi adalah matriks berukuran \(p×p\) yang menampilkan koefisien korelasi antar variabel dalam suatu dataset. Nilai diagonal selalu 1, sedangkan elemen lainnya menunjukkan arah dan kekuatan hubungan antar variabel, dengan rentang nilai dari -1 hingga 1.
Contoh:
# Matriks korelasi untuk dataset bird
korel = cor(bird); korel
## BB PM RTB
## BB 1.0000000 0.9762771 0.9808605
## PM 0.9762771 1.0000000 0.9949973
## RTB 0.9808605 0.9949973 1.0000000
Matriks standardisasi diperoleh dengan menstandarkan setiap variabel, yaitu mengurangi rata-rata dan membagi dengan simpangan baku. Matriks ini penting agar semua variabel memiliki skala yang sama sebelum analisis multivariat, sehingga tidak ada variabel yang mendominasi hasil analisis.
Untuk data \(X\), matriks data terstandardisasi \(Z\):
\[ Z = (X - \mathbf{1}\bar{x}^T) D_s^{-1} \]
dengan \(\mathbf{1}\) adalah vektor satuan, dan
\[ D_s = \text{diag}(\sqrt{s_{11}}, \sqrt{s_{22}}, \dots, \sqrt{s_{pp}}) \]
Contoh:
# Jumlah observasi
n = nrow(bird); n
## [1] 10
# Membuat vektor 1 (ukuran n x 1)
u = matrix(1, n, 1); u
## [,1]
## [1,] 1
## [2,] 1
## [3,] 1
## [4,] 1
## [5,] 1
## [6,] 1
## [7,] 1
## [8,] 1
## [9,] 1
## [10,] 1
# Menghitung vektor rata-rata (xbar)
xbar = cbind((1/n) * t(u) %*% bird); xbar
## BB PM RTB
## [1,] 17.31 27 89.1
# Menghitung matriks deviasi
D = bird - u %*% xbar; D
## BB PM RTB
## [1,] -2.11 -2 -4.1
## [2,] 1.09 1 2.9
## [3,] -0.61 0 -1.1
## [4,] 2.79 3 5.9
## [5,] -2.41 -3 -6.1
## [6,] -3.51 -4 -9.1
## [7,] 2.19 2 4.9
## [8,] -0.11 -1 -2.1
## [9,] 3.69 4 8.9
## [10,] -1.01 0 -0.1
# Menghitung matriks kovarians
S = (1/(n-1)) * t(D) %*% D; S
## BB PM RTB
## BB 5.707667 6.022222 13.27667
## PM 6.022222 6.666667 14.55556
## RTB 13.276667 14.555556 32.10000
# Matriks diagonal berisi akar varians
Ds = diag(sqrt(diag(S))); Ds
## [,1] [,2] [,3]
## [1,] 2.389072 0.000000 0.000000
## [2,] 0.000000 2.581989 0.000000
## [3,] 0.000000 0.000000 5.665686
# Matriks korelasi (standarisasi kovarians)
R = solve(Ds) %*% S %*% solve(Ds); R
## [,1] [,2] [,3]
## [1,] 1.0000000 0.9762771 0.9808605
## [2,] 0.9762771 1.0000000 0.9949973
## [3,] 0.9808605 0.9949973 1.0000000