Matriks merupakan elemen fundamental dalam aljabar linear yang didefinisikan sebagai sekumpulan bilangan yang disusun dalam bentuk baris dan kolom. Berbagai operasi dapat diterapkan pada matriks, seperti penjumlahan, pengurangan, perkalian, transpose, inversi, dan determinan, yang menjadi landasan dalam menyelesaikan berbagai permasalahan terkait matriks.
Selain operasi dasar, terdapat pula konsep dekomposisi matriks yang berperan penting dalam menguraikan matriks kompleks menjadi bentuk yang lebih sederhana. Salah satu metode dekomposisi yang umum digunakan adalah Singular Value Decomposition (SVD), yang mengurai suatu matriks menjadi tiga komponen utama. SVD tidak hanya mempermudah analisis data, tetapi juga memberikan solusi efisien untuk sistem persamaan linear.
Dalam konteks analisis data dan statistika multivariat, pengukuran kedekatan antar objek menjadi aspek penting. Berbagai metrik jarak digunakan untuk tujuan ini, seperti jarak Euclidean, Manhattan, Minkowski, dan Mahalanobis, yang masing-masing memiliki karakteristik dan aplikasi spesifik dalam mengukur kemiripan atau perbedaan antar data.
Penjumlahan matriks didefinisikan sebagai operasi penjumlahan elemen-elemen yang bersesuaian (memiliki indeks baris dan kolom yang identik) antara dua atau lebih matriks, dengan hasilnya membentuk suatu matriks baru yang berordo sama.
\[ A + B = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} + \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11} + b_{11} & a_{12} + b_{12} \\ a_{21} + b_{21} & a_{22} + b_{22} \end{bmatrix} \]
Pengurangan matriks dilakukan dengan mengurangkan elemen-elemen pada posisi yang sama dari dua matriks, lalu hasilnya disusun dalam satu matriks baru.
\[ A - B = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} - \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11} - b_{11} & a_{12} - b_{12} \\ a_{21} - b_{21} & a_{22} - b_{22} \end{bmatrix} \]
Perkalian matriks adalah operasi biner yang menghasilkan matriks baru dari dua matriks dengan syarat bahwa jumlah kolom matriks pertama harus sama dengan jumlah baris matriks kedua. Setiap elemen matriks hasil merupakan hasil dari dot product antara baris matriks pertama dan kolom matriks kedua.
\[ X \times Y = \begin{bmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{bmatrix} \begin{bmatrix} y_{11} & y_{12} \\ y_{21} & y_{22} \end{bmatrix} = \begin{bmatrix} x_{11}y_{11} + x_{12}y_{21} & x_{11}y_{12} + x_{12}y_{22} \\ x_{21}y_{11} + x_{22}y_{21} & x_{21}y_{12} + x_{22}y_{22} \end{bmatrix} \]
Perkalian element-wise adalah operasi yang mengalikan setiap elemen matriks pertama dengan elemen pada posisi yang sama persis di matriks kedua. Kedua matriks harus memiliki dimensi yang identik (jumlah baris dan kolom sama).
\[ C = A \circ B = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \circ \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}b_{11} & a_{12}b_{12} \\ a_{21}b_{21} & a_{22}b_{22} \end{bmatrix} \]
Perkalian skalar dengan matriks adalah operasi yang mengalikan setiap elemen matriks dengan sebuah bilangan skalar (konstanta). Operasi ini menghasilkan matriks dengan dimensi yang sama tetapi dengan setiap elemennya diperbesar atau diperkecil sesuai nilai skalar.
\[ B = kA = k \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} = \begin{bmatrix} ka_{11} & ka_{12} \\ ka_{21} & ka_{22} \end{bmatrix} \]
Transpose matriks adalah operasi yang menukar elemen-elemen baris menjadi kolom dan sebaliknya. Jika matriks A berukuran m × n, maka transpose-nya (Aᵀ) berukuran n × m.
\[ A = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{bmatrix}, \quad A^T = \begin{bmatrix} a_{11} & a_{21} \\ a_{12} & a_{22} \\ a_{13} & a_{23} \end{bmatrix} \]
Invers matriks adalah matriks yang ketika dikalikan dengan matriks aslinya menghasilkan matriks identitas. Matriks A memiliki invers (A⁻¹) jika dan hanya jika A adalah matriks persegi dan determinannya tidak nol.
\[ AA^{-1} = A^{-1}A = I \]
\[ A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}, \quad A^{-1} = \frac{1}{ad-bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix} \]
Determinan adalah nilai skalar yang dapat dihitung dari elemen-elemen matriks persegi. Determinan memberikan informasi tentang sifat-sifat matriks, seperti apakah matriks tersebut memiliki invers atau tidak.
\[ \text{det}(A) = \begin{vmatrix} a & b \\ c & d \end{vmatrix} = ad - bc \]
\[ \text{det}(A) = \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} = a\begin{vmatrix} e & f \\ h & i \end{vmatrix} - b\begin{vmatrix} d & f \\ g & i \end{vmatrix} + c\begin{vmatrix} d & e \\ g & h \end{vmatrix} \]
# Membuat matriks dari urutan angka 21 sampai 40
A <- matrix(21:40, nrow = 4, ncol = 5)
cat("Matriks A (4x5):\n")
## Matriks A (4x5):
print(A)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 21 25 29 33 37
## [2,] 22 26 30 34 38
## [3,] 23 27 31 35 39
## [4,] 24 28 32 36 40
Keterangan: - 21:40
menghasilkan urutan
angka dari 21 hingga 40 - nrow = 4
menentukan jumlah baris
= 4 - ncol = 5
menentukan jumlah kolom = 5 - Matriks diisi
secara column-major (default)
# Membuat vektor b
b <- c(4, 7, 2, 8, 5, 9, 6, 3, 1, 10, 12, 11)
cat("Vektor b:\n")
## Vektor b:
print(b)
## [1] 4 7 2 8 5 9 6 3 1 10 12 11
# Membuat matriks B dari vektor b
B <- matrix(b, nrow = 3, ncol = 4, byrow = TRUE)
cat("\nMatriks B (3x4) - byrow = TRUE:\n")
##
## Matriks B (3x4) - byrow = TRUE:
print(B)
## [,1] [,2] [,3] [,4]
## [1,] 4 7 2 8
## [2,] 5 9 6 3
## [3,] 1 10 12 11
Keterangan: - byrow = TRUE
mengisi
matriks baris per baris - Ukuran matriks: 3 baris × 4
kolom - Total elemen: 12 (sesuai panjang vektor b)
# Membuat matriks dengan nama baris dan kolom
sel <- c(15, 9, 27, 18)
nama_kolom <- c("C1", "C2")
nama_baris <- c("R1", "R2")
C <- matrix(sel, nrow = 2, ncol = 2,
byrow = TRUE,
dimnames = list(nama_baris, nama_kolom))
cat("Matriks C dengan nama baris dan kolom:\n")
## Matriks C dengan nama baris dan kolom:
print(C)
## C1 C2
## R1 15 9
## R2 27 18
# Akses berbagai komponen matriks A
cat("Matriks A:\n")
## Matriks A:
print(A)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 21 25 29 33 37
## [2,] 22 26 30 34 38
## [3,] 23 27 31 35 39
## [4,] 24 28 32 36 40
cat("\nA. Mengakses Kolom 2:\n")
##
## A. Mengakses Kolom 2:
A_col2 <- A[, 2]
print(A_col2)
## [1] 25 26 27 28
cat("\nB. Mengakses Baris 3:\n")
##
## B. Mengakses Baris 3:
A_row3 <- A[3, ]
print(A_row3)
## [1] 23 27 31 35 39
cat("\nC. Mengakses Elemen (3,2):\n")
##
## C. Mengakses Elemen (3,2):
A_32 <- A[3, 2]
print(A_32)
## [1] 27
cat("\nD. Mengakses Elemen (1,2) dan (3,2):\n")
##
## D. Mengakses Elemen (1,2) dan (3,2):
A_sub <- A[c(1, 3), 2]
print(A_sub)
## [1] 25 27
cat("\nE. Mengakses Kolom 1 sampai 3:\n")
##
## E. Mengakses Kolom 1 sampai 3:
A_cols1_3 <- A[, 1:3]
print(A_cols1_3)
## [,1] [,2] [,3]
## [1,] 21 25 29
## [2,] 22 26 30
## [3,] 23 27 31
## [4,] 24 28 32
cat("\nF. Mengakses Baris 2 sampai 4:\n")
##
## F. Mengakses Baris 2 sampai 4:
A_rows2_4 <- A[2:4, ]
print(A_rows2_4)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 22 26 30 34 38
## [2,] 23 27 31 35 39
## [3,] 24 28 32 36 40
Penjelasan Akses: - A[,2]
→ semua baris
pada kolom 2 - A[3,]
→ semua kolom pada baris 3
- A[3,2]
→ elemen spesifik baris 3 kolom 2 -
A[c(1,3),2]
→ elemen baris 1 dan 3 pada kolom 2 -
A[,1:3]
→ semua baris pada kolom 1 sampai 3 -
A[2:4,]
→ semua kolom pada baris 2 sampai 4
Sintaks | Deskripsi | Contoh |
---|---|---|
A[i,] |
Akses baris ke-i | A[3,] |
A[,j] |
Akses kolom ke-j | A[,2] |
A[i,j] |
Akses elemen (i,j) | A[3,2] |
A[c(i,k),j] |
Akses multiple baris | A[c(1,3),2] |
A[i,c(j,l)] |
Akses multiple kolom | A[3,c(2,4)] |
A[i:j,] |
Akses range baris | A[2:4,] |
A[,k:l] |
Akses range kolom | A[,1:3] |
###3.1 Definisi dan Rumus ####3.1.1 Eigen valueffdddddd Eigen value adalah suatu bilangan skalar λ yang menunjukkan seberapa besar suatu eigenvector berubah arah atau panjang ketika dikalikan dengan sebuah matriks. \[ A\mathbf{v} = \lambda\mathbf{v} \]
Untuk mencari eigenvalue, digunakan rumus: \[ \det(A - \lambda I) = 0 \] #### 3.1.2 Eigen Vector Eigenvector adalah vektor khusus yang arahnya tidak berubah ketika dikenai transformasi linear oleh sebuah matriks, hanya panjangnya saja yang bertambah atau berkurang. perubahan panjang tersebut ditentukan oleh bilangan skalar yang disebut eigenvalue. \[ (A - \lambda I)\mathbf{v} = \mathbf{0} \] #### 3.1.3 Pasangan Eigen Pasangan Eigen merupakan kombinasi dari eigenvalue dan eigen vektor yang sesuai \[(\lambda, \mathbf{v})\] ### 3.2 Contoh dan Implementasi Diberikan sebuah matriks 3x3 yaitu
A = matrix(c(6.5,8.2,7.9,
5.4,7.0,6.7,
8.1,6.9,9.2), nrow = 3, ncol = 3); A
## [,1] [,2] [,3]
## [1,] 6.5 5.4 8.1
## [2,] 8.2 7.0 6.9
## [3,] 7.9 6.7 9.2
####3.2.1 Eigen Value
eigA <- eigen(A)
eigA$values
## [1] 22.0140019 0.4816027 0.2043953
####3.2.2 Eigen Vektor
eigA$vectors
## [,1] [,2] [,3]
## [1,] 0.5268942 0.5218595 0.61121520
## [2,] 0.5752916 -0.8360039 -0.78978922
## [3,] 0.6256373 0.1695881 0.05146821
####3.2.3 Pasangan Eigen
for (i in seq_along(eigA$values)) {
cat("\nPasangan ke-", i, ":\n")
cat("Eigenvalue =", eigA$values[i], "\n")
cat("Eigenvector =\n")
print(eigA$vectors[, i])
}
##
## Pasangan ke- 1 :
## Eigenvalue = 22.014
## Eigenvector =
## [1] 0.5268942 0.5752916 0.6256373
##
## Pasangan ke- 2 :
## Eigenvalue = 0.4816027
## Eigenvector =
## [1] 0.5218595 -0.8360039 0.1695881
##
## Pasangan ke- 3 :
## Eigenvalue = 0.2043953
## Eigenvector =
## [1] 0.61121520 -0.78978922 0.05146821
Singular value decomposition (svd) adalah metode dalam aljabar linear yang memecah sebuah matriks 𝐴 menjadi tiga matriks, yaitu U dan V berisi matriks ortonormal dan sigma berisi matriks singular value. \[ A \in \mathbb{R}^{m \times n}\] dapat dituliskan sebagai: \[ A = U D V^T \]
dengan:
Diberikan matriks sebagai berikut
A <- matrix(c(5, -3, 6,
2, -4, 8,
-2, 5, -1,
7, 3, 9),
nrow = 4, ncol = 3,
byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 5 -3 6
## [2,] 2 -4 8
## [3,] -2 5 -1
## [4,] 7 3 9
####4.2.1 Singular Value Decomposition
svd_result <- svd(A)
singular_value <- svd_result$d ; singular_value
## [1] 16.07076 7.41936 3.11187
U <- svd_result$u ; U
## [,1] [,2] [,3]
## [1,] -0.5046975 0.2278362 -0.3742460
## [2,] -0.5178195 0.4138180 0.7413297
## [3,] 0.1646416 -0.6063789 0.5337354
## [4,] -0.6708477 -0.6396483 -0.1596770
V <- svd_result$v ; V
## [,1] [,2] [,3]
## [1,] -0.5341591 -0.17494276 -0.8270847
## [2,] 0.1490928 -0.98251336 0.1115295
## [3,] -0.8321330 -0.06373793 0.5509011
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.4.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
set.seed(321)
ss <- sample(1:50, 15)
df <- USArrests[ss, ]
df.scaled <- scale(df)
Euclidean → Jarak lurus (garis terpendek) antara dua titik di ruang \(p\)-dimensi [jarak lurus standar].
Contoh aplikasi: - Menghitung jarak garis lurus antar dua koordinat (GPS) - Clustering (K-Means, Hierarchical) → objek yang jaraknya dekat digabungkan
dist.eucl <- dist(df.scaled, method = "euclidean")
print("Jarak Euclidean:")
## [1] "Jarak Euclidean:"
dist.eucl
## Wyoming Illinois Mississippi Kansas New York Kentucky
## Illinois 2.4122476
## Mississippi 2.6164146 3.1543527
## Kansas 0.7934567 2.3786048 3.1993198
## New York 2.7921742 0.4095812 3.3878156 2.7128511
## Kentucky 1.0532156 2.9515362 2.3433244 1.2948587 3.2757206
## Oklahoma 0.8659748 1.8685718 2.9986711 0.5547563 2.2043102 1.4993175
## Hawaii 2.2322175 2.7203365 4.4270510 1.4800030 2.9246694 2.5403456
## Missouri 2.0625111 1.4167282 3.0563398 1.8349434 1.5351057 2.3176129
## New Mexico 3.1109091 1.5775154 3.0617092 3.1551035 1.4705638 3.4011133
## Louisiana 2.4137967 1.6360410 1.7133330 2.6879097 1.7776353 2.4609320
## South Dakota 1.5765126 3.9457686 3.4644086 1.7515852 4.3067435 1.5082173
## Iowa 1.7426214 3.9154083 4.0958166 1.6038155 4.2724405 1.9508929
## North Dakota 2.5296038 4.8794481 4.4694938 2.6181473 5.2524274 2.5546862
## Texas 2.4496576 0.8218968 2.9692463 2.3259192 0.8377979 2.6949264
## Oklahoma Hawaii Missouri New Mexico Louisiana South Dakota
## Illinois
## Mississippi
## Kansas
## New York
## Kentucky
## Oklahoma
## Hawaii 1.6491638
## Missouri 1.3724911 2.3123720
## New Mexico 2.6268378 3.7154012 1.4937447
## Louisiana 2.2916633 3.5012381 1.8909275 1.7882330
## South Dakota 2.1588538 2.9115203 3.2767510 4.4281177 3.7902169
## Iowa 2.1130016 2.3395756 3.3845451 4.6758935 4.0922753 0.9964108
## North Dakota 3.0891779 3.4578871 4.3173165 5.5131433 4.8442635 1.1604313
## Texas 1.8768374 2.5920693 1.1756214 1.5867966 1.3643137 3.8935265
## Iowa North Dakota
## Illinois
## Mississippi
## Kansas
## New York
## Kentucky
## Oklahoma
## Hawaii
## Missouri
## New Mexico
## Louisiana
## South Dakota
## Iowa
## North Dakota 1.1298867
## Texas 3.9137858 4.8837032
fviz_dist(dist.eucl)
Chebyshev → jarak ditentukan oleh selisih terbesar. Jarak maksimum di antara perbedaan koordinat. Fokus pada dimensi dengan selisih terbesar.
Contoh aplikasi: - Jarak langkah raja antara dua posisi = jarak Chebyshev - Berguna di quality control multivariat, misalnya mengecek dimensi produk (lebar, panjang, tinggi) → fokus pada dimensi terburuk
dist.cheb <- dist(df.scaled, method = "maximum")
print("Jarak Chebyshev:")
## [1] "Jarak Chebyshev:"
dist.cheb
## Wyoming Illinois Mississippi Kansas New York Kentucky
## Illinois 1.5939604
## Mississippi 2.0521063 2.7028025
## Kansas 0.5464670 1.5918822 2.2286315
## New York 1.8018683 0.3116811 2.9107104 1.6512808
## Kentucky 0.6399041 2.1483815 1.7819577 0.9702368 2.3562894
## Oklahoma 0.6530462 1.1642124 2.0962376 0.4276699 1.2474473 1.1088421
## Hawaii 1.5939604 2.4115828 2.7028025 1.1781447 2.4709814 2.1483815
## Missouri 1.8700867 0.9009342 1.8018683 1.5138797 1.1088421 1.7661930
## New Mexico 2.4489231 1.2021986 2.2262937 2.0927161 1.1088421 2.3450294
## Louisiana 1.8976467 1.1781447 1.5246578 2.0741719 1.3860526 1.6631605
## South Dakota 1.0395394 2.6334999 2.7140760 1.4553552 2.8414078 1.3018739
## Iowa 1.2473704 2.2927856 3.0671266 0.9944112 2.3521842 1.6549244
## North Dakota 1.3780473 2.7028025 3.3760458 1.5880895 2.9107104 1.9638436
## Texas 1.4693539 0.5702265 2.4948946 1.4783991 0.6296251 1.9404736
## Oklahoma Hawaii Missouri New Mexico Louisiana South Dakota
## Illinois
## Mississippi
## Kansas
## New York
## Kentucky
## Oklahoma
## Hawaii 1.2473704
## Missouri 1.2170406 1.5681228
## New Mexico 1.7958770 2.8392526 1.2711298
## Louisiana 1.9417780 2.4115828 1.4122022 1.4693539
## South Dakota 1.5939604 2.6334999 2.2856616 2.8644979 2.5596164
## Iowa 1.2912504 1.8018683 2.5082909 3.0871273 2.9126670 0.8316315
## North Dakota 1.8849287 2.7028025 3.1019693 3.6808057 3.2215862 0.8163077
## Texas 1.3460052 1.8413563 0.8164294 0.9978963 0.9702368 2.4255920
## Iowa North Dakota
## Illinois
## Mississippi
## Kansas
## New York
## Kentucky
## Oklahoma
## Hawaii
## Missouri
## New Mexico
## Louisiana
## South Dakota
## Iowa
## North Dakota 0.9009342
## Texas 2.3168942 2.7012364
fviz_dist(dist.cheb)
Manhattan → Jumlah perbedaan absolut antar koordinat, seperti berjalan di jalan kota berbentuk grid [jarak berbasis grid (jumlah selisih)].
Contoh aplikasi: - Menghitung jarak dalam gudang/grid jalan yang tidak memungkinkan jalur diagonal - Menghitung jarak antar dokumen berdasarkan frekuensi kata (NLP)
dist.man <- dist(df.scaled, method = "manhattan")
print("Jarak Manhattan:")
## [1] "Jarak Manhattan:"
dist.man
## Wyoming Illinois Mississippi Kansas New York Kentucky
## Illinois 4.6804639
## Mississippi 4.5477901 5.1034373
## Kansas 1.4950151 4.6314334 5.5975464
## New York 5.4139111 0.7334472 5.4091682 5.3648806
## Kentucky 1.9159642 5.1088324 3.8673166 2.1102578 5.8422796
## Oklahoma 1.3703957 3.6359252 5.4729270 0.9955082 4.3693724 2.8409781
## Hawaii 3.9738430 4.1009258 8.0763743 2.4788279 4.8343730 4.4465291
## Missouri 3.2505127 2.6766756 5.9782446 3.2014823 2.7867606 3.9878005
## New Mexico 5.6300548 2.7514592 5.3741207 5.5810243 2.4338278 6.0584233
## Louisiana 4.3384469 2.5485829 2.5548545 4.2894164 2.9731109 4.7668154
## South Dakota 3.0080629 7.6885267 5.4767741 3.0570933 8.4219740 2.5796943
## Iowa 3.1085028 7.7889667 7.2404771 3.1575333 8.5224139 3.3731605
## North Dakota 5.0427114 9.7231753 7.3728174 5.0917419 10.4566225 4.6143429
## Texas 4.6324690 1.5082739 5.1808752 4.5834386 1.4875431 5.0608376
## Oklahoma Hawaii Missouri New Mexico Louisiana
## Illinois
## Mississippi
## Kansas
## New York
## Kentucky
## Oklahoma
## Hawaii 2.6034473
## Missouri 2.2059740 4.4728430
## New Mexico 4.5855161 6.8523850 2.3795420
## Louisiana 3.5711187 6.1151982 3.4233902 3.0568606
## South Dakota 4.0526016 4.5379784 6.2585756 8.6381176 7.3465098
## Iowa 4.1530415 3.9256352 6.3590155 8.7385576 7.4469497
## North Dakota 6.0872501 5.6222495 8.2932241 10.6727662 9.3811583
## Texas 3.5879303 4.4687467 2.1834220 2.9573454 2.6260207
## South Dakota Iowa North Dakota
## Illinois
## Mississippi
## Kansas
## New York
## Kentucky
## Oklahoma
## Hawaii
## Missouri
## New Mexico
## Louisiana
## South Dakota
## Iowa 1.7637030
## North Dakota 2.0346485 1.9342086
## Texas 7.6405319 7.7409718 9.6751804
fviz_dist(dist.man)
Mahalanobis → Jarak antar titik yang mempertimbangkan skala (varians) dan korelasi antar variabel.
Contoh aplikasi: - Mendeteksi transaksi keuangan yang tidak wajar - Memisahkan kelompok dengan varians dan korelasi berbeda (Analisis Diskriminan)
Jarak Minkowski adalah ukuran jarak antara dua titik dalam ruang vektor yang ditentukan oleh sebuah parameter \(p\) untuk mencari jarak umum karena menjadi bentuk dasar yang mencakup berbagai jenis jarak lain.
\[p=1\]: jarak Manhattan, \[p=2\]: jarak Euclidean, \[p \to \infty\]: jarak Chebyshev
Diberikan data random 5 observasi dengan 3 variabel
data <- matrix(runif(15, min = 1, max = 10), nrow = 5, ncol = 3)
colnames(data) <- c("X1", "X2", "X3")
print("Data random:")
## [1] "Data random:"
print(data)
## X1 X2 X3
## [1,] 6.172203 6.348343 6.965909
## [2,] 7.761144 2.894541 4.948354
## [3,] 9.934501 7.392280 7.464049
## [4,] 4.877779 7.082469 1.230248
## [5,] 2.119285 9.936146 7.050970
# Tentukan dua titik yang akan dihitung jaraknya
p1 <- data[1, ];p1
## X1 X2 X3
## 6.172203 6.348343 6.965909
p2 <- data[2, ];p2
## X1 X2 X3
## 7.761144 2.894541 4.948354
####5.2.1 Impelemtasi Jarak Minkowski
minkowski_distance <- function(x, y, p) {
sum(abs(x - y)^p)^(1/p)
}
####5.2.2 Contoh penggunaan dengan p = 1 (Manhattan), p = 2 (Euclidean), p = 3 (Minkowski umum)
dist_p1 <- minkowski_distance(p1, p2, p = 1);dist_p1
## [1] 7.060297
dist_p2 <- minkowski_distance(p1, p2, p = 2);dist_p2
## [1] 4.303952
dist_p3 <- minkowski_distance(p1, p2, p = 3);dist_p3
## [1] 3.766268
dist_inf <- max(abs(p1 - p2));dist_inf
## [1] 3.453801
###6.1 Pengertian dan Rumus #### 6.1.1 Matriks Rata rata Matriks rata-rata adalah matriks yang setiap elemennya berisi nilai rata-rata dari data pada posisi yang sama di beberapa matriks atau observasi. Matriks ini membantu merangkum informasi sehingga lebih mudah melihat pola umum (tengah) dari data.
Jika \(X\) adalah matriks data berukuran \(m \times n\), maka vektor rata-rata:
\[ \bar{\mathbf{x}} = \begin{bmatrix} \bar{x}_1 \\ \bar{x}_2 \\ \vdots \\ \bar{x}_p \end{bmatrix} = \frac{1}{n}\sum_{i=1}^{n} \mathbf{x}_i \] ###6.1.2 Matriks Kovarians Matriks kovarians adalah matriks yang menunjukkan hubungan kovarians antar variabel dalam sebuah dataset. Matriks ini membantu memahami seberapa kuat dua variabel berubah bersama-sama, apakah meningkat atau menurun secara bersamaan.
\[ S = \frac{1}{n-1}\sum_{i=1}^{n} (\mathbf{x}_i - \bar{\mathbf{x}})(\mathbf{x}_i - \bar{\mathbf{x}})^T \]
\[ 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} \] #### 6.1.3 Matriks Korelasi Matriks korelasi adalah matriks yang berisi nilai koefisien korelasi antar variabel dalam suatu dataset. Matriks ini menunjukkan kekuatan dan arah hubungan linear antar variabel, dengan nilai berkisar antara -1 sampai 1.
\[ R = D^{-1} S D^{-1} \]
\[ D = \text{diag}(\sqrt{s_{11}}, \sqrt{s_{22}}, \ldots, \sqrt{s_{pp}}) \]
\[ r_{ij} = \frac{s_{ij}}{\sqrt{s_{ii} \cdot s_{jj}}} \] #### 6.1.4 Matriks Standarisasi Matriks standarisasi adalah matriks yang diperoleh dengan menstandarkan setiap variabel sehingga memiliki rata-rata nol dan standar deviasi satu. Matriks ini digunakan agar variabel dengan skala berbeda dapat dibandingkan secara adil.
Untuk data \(X\), matriks data terstandardisasi \(Z\):
\[ Z = (X - \mathbf{1}\bar{\mathbf{x}}^T) D_s^{-1} \]
dengan \(\mathbf{1}\) adalah vektor satuan, dan
\[ D_s = \text{diag}(\sqrt{s_{11}}, \sqrt{s_{22}}, \ldots, \sqrt{s_{pp}}) \]
###6.2 Contoh Implementasi
# input data kadal
BB = c(6.2,11.5,8.7,10.1,7.8,6.9,12.0,3.1,14.8,9.4)
PM = c(61,73,68,70,64,60,76,49,84,71)
RTB = c(115,138,127,123,131,120,143,95,160,128)
lizard = as.matrix(cbind(BB,PM,RTB)); lizard
## BB PM RTB
## [1,] 6.2 61 115
## [2,] 11.5 73 138
## [3,] 8.7 68 127
## [4,] 10.1 70 123
## [5,] 7.8 64 131
## [6,] 6.9 60 120
## [7,] 12.0 76 143
## [8,] 3.1 49 95
## [9,] 14.8 84 160
## [10,] 9.4 71 128
# Matriks Rata-Rata
vecMeans = as.matrix(colMeans(lizard)); vecMeans
## [,1]
## BB 9.05
## PM 67.60
## RTB 128.00
vecRata = matrix(c(mean(BB), mean(PM), mean(RTB)), nrow=3, ncol=1); vecRata
## [,1]
## [1,] 9.05
## [2,] 67.60
## [3,] 128.00
# Matriks Kovarians
varkov = cov(lizard); varkov
## BB PM RTB
## BB 10.98056 31.80000 54.96667
## PM 31.80000 94.04444 160.22222
## RTB 54.96667 160.22222 300.66667
# Matriks Korelasi
korel = cor(lizard); korel
## BB PM RTB
## BB 1.0000000 0.9895743 0.9566313
## PM 0.9895743 1.0000000 0.9528259
## RTB 0.9566313 0.9528259 1.0000000
# Matriks Standardisasi (akar dari variansi masing-masing variabel)
n = nrow(lizard);n
## [1] 10
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
xbar = cbind((1/n)*t(u)%*%lizard); xbar
## BB PM RTB
## [1,] 9.05 67.6 128
D = lizard - u %*% xbar; D
## BB PM RTB
## [1,] -2.85 -6.6 -13
## [2,] 2.45 5.4 10
## [3,] -0.35 0.4 -1
## [4,] 1.05 2.4 -5
## [5,] -1.25 -3.6 3
## [6,] -2.15 -7.6 -8
## [7,] 2.95 8.4 15
## [8,] -5.95 -18.6 -33
## [9,] 5.75 16.4 32
## [10,] 0.35 3.4 0
S = (1/(n-1))*t(D)%*%D; S
## BB PM RTB
## BB 10.98056 31.80000 54.96667
## PM 31.80000 94.04444 160.22222
## RTB 54.96667 160.22222 300.66667
Ds = diag(sqrt(diag(S))); Ds
## [,1] [,2] [,3]
## [1,] 3.313692 0.000000 0.00000
## [2,] 0.000000 9.697651 0.00000
## [3,] 0.000000 0.000000 17.33974
R = solve(Ds) %*% S %*% solve(Ds); R
## [,1] [,2] [,3]
## [1,] 1.0000000 0.9895743 0.9566313
## [2,] 0.9895743 1.0000000 0.9528259
## [3,] 0.9566313 0.9528259 1.0000000