MATRIKS

Matriks adalah susunan angka-angka di dalam kotak yang dibagi ke dalam baris dan kolom. Jika suatu matriks terdiri dari \(m\) baris dan \(n\) kolom, maka matriks tersebut dikatakan berukuran (ordo) \(m \times n\).

\[ B = \begin{bmatrix} 6 & 2 & 8 \\ 4 & 7 & 3 \\ 9 & 5 & 1 \end{bmatrix} \]

Matriks \(A\) di atas merupakan matriks persegi berordo \(3 \times 3\) yang terdiri dari 9 elemen. Setiap elemen matriks dituliskan sebagai \(a_{ij}\) dengan \(i\) menyatakan baris dan \(j\) menyatakan kolom. Sebagai contoh, \(a_{12} = 4\) menunjukkan elemen pada baris ke-1 dan kolom ke-2.

Di dalam R, cara menuliskan matriks adalah dengan menggunakan fungsi matrix(). Fungsi ini membutuhkan data, jumlah baris (nrow), dan jumlah kolom (ncol). Adapun byrow adalah argumen yang menentukan cara pengisian elemen ke dalam matriks:
- Jika byrow = TRUE, maka elemen akan diisi per baris (row-wise).
- Jika byrow = FALSE, maka elemen akan diisi per kolom (column-wise), yang merupakan nilai default di R.

# Input Data

X = matrix(c(1,8,9,
             5,6,6,
             2,9,10), nrow = 3, ncol = 3); X
##      [,1] [,2] [,3]
## [1,]    1    5    2
## [2,]    8    6    9
## [3,]    9    6   10
Y = matrix(c(3,6,5,
             9,7,1,
             4,8,7), nrow = 3, ncol = 3, byrow = TRUE); Y
##      [,1] [,2] [,3]
## [1,]    3    6    5
## [2,]    9    7    1
## [3,]    4    8    7

Operasi Matriks

Penjumlahan Matriks

Operasi penjumlahan matriks dilakukan dengan menjumlahkan elemen yang seposisi (baris dan kolom yang sama) antara dua matriks yang berordo sama. Secara umum: \[ (A + B)_{ij} = a_{ij} + b_{ij} \] Dalam R, penjumlahan matriks \(X\) dan \(Y\) ditulis dengan perintah:

X + Y   # X ditambah Y
##      [,1] [,2] [,3]
## [1,]    4   11    7
## [2,]   17   13   10
## [3,]   13   14   17

Pengurangan Matriks

Operasi pengurangan matriks dilakukan dengan mengurangkan elemen yang seposisi antara dua matriks yang berordo sama. Secara umum:

\[ (A - B)_{ij} = a_{ij} - b_{ij} \]
Dalam R, pengurangan matriks \(X\) dan \(Y\) ditulis dengan perintah:

X - Y   # X dikurang Y
##      [,1] [,2] [,3]
## [1,]   -2   -1   -3
## [2,]   -1   -1    8
## [3,]    5   -2    3

Perkalian Matriks

Operasi perkalian matriks hanya dapat dilakukan jika jumlah kolom matriks pertama sama dengan jumlah baris matriks kedua. Hasilnya berupa matriks baru dengan ukuran baris matriks pertama × kolom matriks kedua. Setiap elemen hasil \(c_{ij}\) diperoleh dengan menjumlahkan hasil kali elemen baris ke-\(i\) dari matriks pertama dengan elemen kolom ke-\(j\) dari matriks kedua:

\[ c_{ij} = \sum_{k=1}^n a_{ik} \cdot b_{kj} \] dengan \(a_{ik}\) elemen matriks pertama dan \(b_{kj}\) elemen matriks kedua. Dalam R, pengurangan matriks \(X\) dan \(Y\) ditulis dengan perintah:

X %*% Y   # X dikali Y
##      [,1] [,2] [,3]
## [1,]   56   57   24
## [2,]  114  162  109
## [3,]  121  176  121
Y %*% X   # Y dikali X
##      [,1] [,2] [,3]
## [1,]   96   81  110
## [2,]   74   93   91
## [3,]  131  110  150

Perkalian Matriks dengan Skalar

Perkalian skalar–matriks adalah operasi yang mengalikan setiap elemen suatu matriks dengan bilangan real \(k\). Jika matriks \(X = [x_{ij}]\) berukuran \(m \times n\), maka hasil kali skalar adalah

\[ M = kX = [k \cdot x_{ij}], \] yang juga berukuran \(m \times n\). Demikian pula untuk matriks \(Y\):

\[ N = cY = [c \cdot y_{ij}]. \]

Berikut contoh perkalian matriks dengan skalar dalam R:

k = 2 
c = 5
M = k * X; M  # skalar k dikali matriks X
##      [,1] [,2] [,3]
## [1,]    2   10    4
## [2,]   16   12   18
## [3,]   18   12   20
N = c * Y; N  # skalar c dikali matriks Y
##      [,1] [,2] [,3]
## [1,]   15   30   25
## [2,]   45   35    5
## [3,]   20   40   35

Invers Matriks

Invers matriks adalah suatu matriks yang jika dikalikan dengan matriks asalnya akan menghasilkan matriks identitas. Jika sebuah matriks \(A\) berukuran \(n \times n\) dan memiliki invers, maka matriks tersebut disebut invertibel, dan inversnya ditulis sebagai \(A^{-1}\). Hubungan yang berlaku adalah

\[ A \cdot A^{-1} = A^{-1} \cdot A = I, \] di mana \(I\) adalah matriks identitas berukuran \(n \times n\). Tidak semua matriks memiliki invers; hanya matriks persegi dengan determinan tidak sama dengan nol yang bisa diinverskan.

Dalam R, perhitungan invers matriks dilakukan dengan fungsi solve().

inv_X = solve(X); inv_X  #Invers X
##      [,1] [,2] [,3]
## [1,]   -6   38  -33
## [2,]   -1    8   -7
## [3,]    6  -39   34
inv_Y = solve(Y); inv_Y  #Invers Y
##           [,1]        [,2]      [,3]
## [1,] -3.727273  0.18181818  2.636364
## [2,]  5.363636 -0.09090909 -3.818182
## [3,] -4.000000  0.00000000  3.000000

Transpose Matriks

Transpose matriks adalah operasi yang menukar baris menjadi kolom dan kolom menjadi baris dari suatu matriks. Jika \(A = [a_{ij}]\) adalah sebuah matriks berukuran \(m \times n\), maka transpose dari \(A\), yang ditulis \(A^T\), berukuran \(n \times m\) dengan elemen \(a_{ij}\) pada \(A\) berpindah menjadi \(a_{ji}\) pada \(A^T\).

Dalam R, transpose matriks dilakukan dengan fungsi t().

transX = t(X); transX  #Transpose Matriks X
##      [,1] [,2] [,3]
## [1,]    1    8    9
## [2,]    5    6    6
## [3,]    2    9   10
transY = t(Y); transY  #Transpose Matriks Y
##      [,1] [,2] [,3]
## [1,]    3    9    4
## [2,]    6    7    8
## [3,]    5    1    7

Determinan Matriks

Determinan adalah nilai skalar dari matriks persegi yang ditulis sebagai \(|A|\) atau \(det(A)\). Determinan dapat menunjukkan apakah suatu matriks invertibel \((det(A) \neq 0)\) dan juga berfungsi sebagai faktor skala pada transformasi linier.

Dalam R, perhitungan determinan matriks dilakukan dengan fungsi det().

det(X)  #Determinan X
## [1] -1
det(Y)  #Determinan Y
## [1] -11

Contoh Pembuatan Matriks

Membuat Matriks dengan Deret Angka

Di R, matriks bisa dibentuk langsung dari urutan bilangan menggunakan fungsi matrix().
Fungsi ini membutuhkan data yang akan dimasukkan, jumlah baris (nrow), serta jumlah kolom (ncol).
Jika data yang digunakan berupa deret angka, maka elemen-elemen matriks akan diisi sesuai urutan tersebut.
Secara default, pengisian dilakukan per kolom dari atas ke bawah, lalu berpindah ke kolom berikutnya.

A <- matrix(51:70, nrow=5, ncol=4) ; A
##      [,1] [,2] [,3] [,4]
## [1,]   51   56   61   66
## [2,]   52   57   62   67
## [3,]   53   58   63   68
## [4,]   54   59   64   69
## [5,]   55   60   65   70

Pada contoh ini, kita membuat matriks \(A\) dengan ukuran \(5 \times 4\), menggunakan angka dari 51 sampai 70. Jumlah angkanya ada 20, tepat sama dengan kapasitas matriks (5 \(\times\) 4). Angka 51 masuk ke baris 1 kolom 1, angka 52 ke baris 2 kolom 1, dan seterusnya hingga angka 70 berada di baris ke-5 kolom ke-4.

Membuat Matriks dari Vektor

Matriks juga bisa dibentuk dari sebuah vektor, yaitu kumpulan data satu dimensi. Dengan cara ini, kita bisa memilih sendiri angka-angka yang akan disusun, lalu mengatur apakah pengisiannya per baris atau per kolom.

b <- c(4,7,2,8,5,9,6,3,1,10,12,11) 
B <- matrix(b, nrow=3, ncol=4, byrow=TRUE) ; B
##      [,1] [,2] [,3] [,4]
## [1,]    4    7    2    8
## [2,]    5    9    6    3
## [3,]    1   10   12   11

Contoh di atas menunjukkan vektor b yang berisi 12 angka acak: 4, 7, 2, 8, 5, 9, 6, 3, 1, 10, 12, dan 11. Vektor ini kemudian disusun menjadi matriks \(B\) berukuran \(3 \times 4\). Karena dipakai argumen byrow=TRUE, maka pengisian dilakukan per baris: angka pertama (4) masuk ke baris 1 kolom 1, angka kedua (7) ke kolom di sebelahnya, dan seterusnya sampai seluruh elemen tersusun menjadi sebuah matriks.

Membuat Matriks dengan Nama Baris dan Kolom

Matriks di R juga dapat diberi nama pada baris maupun kolom agar elemen-elemen matriks lebih mudah dikenali, terutama ketika matriks tersebut mewakili data dengan kategori tertentu. Penamaan dilakukan dengan argumen dimnames di dalam fungsi matrix(), yang menerima daftar berisi nama baris dan nama kolom. Dengan adanya label, matriks tidak hanya menampilkan angka, tetapi juga keterangan tambahan yang membuat interpretasi lebih jelas.

isi <- c(32,45,28,39)
kol <- c("K1","K2")
bar <- c("B1","B2")
C <- matrix(isi, nrow=2, ncol=2,
            byrow=TRUE, dimnames=list(bar,kol)) ; C
##    K1 K2
## B1 32 45
## B2 28 39

Pada contoh ini, vektor sel berisi angka 15, 9, 27, dan 18. Vektor tersebut kemudian disusun ke dalam matriks \(C\) dengan ukuran \(2 \times 2\). Karena digunakan argumen byrow=TRUE, maka angka 15 akan ditempatkan pada baris pertama kolom pertama, angka 9 di sebelahnya, lalu berlanjut ke baris kedua dengan angka 27 dan 18. Selanjutnya, kita mendefinisikan nama kolom melalui nama_kolom <- c("C1", "C2") dan nama baris melalui nama_baris <- c("R1", "R2"). Nama-nama ini kemudian digabungkan dalam argumen dimnames=list(nama_baris, nama_kolom) sehingga hasil matriks \(C\) menampilkan label \(R1\) dan \(R2\) di sisi kiri sebagai penanda baris, serta label \(C1\) dan \(C2\) di bagian atas sebagai penanda kolom.

Memanggil Komponen Matriks

Setelah matriks dibuat, kita bisa mengambil bagian tertentu saja sesuai kebutuhan, misalnya baris, kolom, atau satu elemen spesifik. Pemanggilan elemen matriks dilakukan dengan tanda kurung siku [ ]. Posisi baris ditulis sebelum koma, sedangkan posisi kolom ditulis setelah koma. Jika salah satu dibiarkan kosong, maka semua baris atau semua kolom akan dipanggil.

A
##      [,1] [,2] [,3] [,4]
## [1,]   51   56   61   66
## [2,]   52   57   62   67
## [3,]   53   58   63   68
## [4,]   54   59   64   69
## [5,]   55   60   65   70
A[,3]         # Kolom ke-3
## [1] 61 62 63 64 65
A[4,]         # Baris ke-4
## [1] 54 59 64 69
A[2,3]        # Elemen baris ke-2 kolom ke-3
## [1] 62
A[c(1,5),2]   # Elemen baris 1 dan 5 pada kolom ke-2
## [1] 56 60
A[,2:4]       # Semua baris dari kolom 2 sampai 4
##      [,1] [,2] [,3]
## [1,]   56   61   66
## [2,]   57   62   67
## [3,]   58   63   68
## [4,]   59   64   69
## [5,]   60   65   70
A[3:5,]       # Semua kolom dari baris 3 sampai 5
##      [,1] [,2] [,3] [,4]
## [1,]   53   58   63   68
## [2,]   54   59   64   69
## [3,]   55   60   65   70

Perintah A[,3] akan menampilkan semua baris yang ada pada kolom ketiga. Perintah A[4,] akan menampilkan seluruh isi baris keempat dari matriks. Perintah A[2,3] akan mengambil satu nilai yang berada di baris kedua dan kolom ketiga. Perintah A[c(1,5),2] akan menampilkan dua elemen, yaitu nilai pada baris pertama kolom kedua dan nilai pada baris kelima kolom kedua. Perintah A[,2:4] akan menghasilkan sebuah submatriks yang berisi semua baris dari kolom kedua hingga kolom keempat. Perintah A[3:5,] akan menampilkan semua kolom tetapi hanya untuk baris ketiga sampai baris kelima.

EIGEN VALUE & VECTOR

nilai eigen (eigenvalue) adalah suatu bilangan skalar yang menunjukkan seberapa besar sebuah vektor mengalami perubahan panjang atau arah ketika dikenai transformasi linier oleh sebuah matriks. Sementara itu, vektor eigen (eigenvector) adalah vektor tak nol yang arahnya tidak berubah walaupun dikenakan transformasi tersebut. Dengan kata lain, apabila sebuah matriks \(A\) mengalikan vektor \(v\) dan hasilnya tetap searah dengan \(v\) itu sendiri, maka \(v\) disebut sebagai vektor eigen dari \(A\), sedangkan skalar pengalinya \(\lambda\) merupakan nilai eigen yang terkait. Hubungan umum antara matriks, nilai eigen, dan vektor eigen dituliskan dalam bentuk: \[ A v = \lambda v \]

eigX = eigen(X); eigX
## eigen() decomposition
## $values
## [1] 18.90178326 -1.92920648  0.02742322
## 
## $vectors
##            [,1]       [,2]       [,3]
## [1,] -0.2623239 -0.8282409 -0.6871266
## [2,] -0.6562066  0.2945256 -0.1506428
## [3,] -0.7075161  0.4767303  0.7107487
eigY = eigen(Y); eigY
## eigen() decomposition
## $values
## [1] 16.4107337  1.1647491 -0.5754827
## 
## $vectors
##           [,1]       [,2]       [,3]
## [1,] 0.4960227  0.3544900  0.5422048
## [2,] 0.5461083 -0.6602220 -0.7045920
## [3,] 0.6750757  0.6621508  0.4577817
eigvalX = eigX$values; eigvalX
## [1] 18.90178326 -1.92920648  0.02742322
eigvalY = eigY$values; eigvalY
## [1] 16.4107337  1.1647491 -0.5754827
eigvecX = eigX$vectors; eigvecX
##            [,1]       [,2]       [,3]
## [1,] -0.2623239 -0.8282409 -0.6871266
## [2,] -0.6562066  0.2945256 -0.1506428
## [3,] -0.7075161  0.4767303  0.7107487
eigvecY = eigY$vectors; eigvecY
##           [,1]       [,2]       [,3]
## [1,] 0.4960227  0.3544900  0.5422048
## [2,] 0.5461083 -0.6602220 -0.7045920
## [3,] 0.6750757  0.6621508  0.4577817

Dalam R, perhitungan nilai eigen (eigenvalue) dan vektor eigen (eigenvector) dapat dilakukan dengan fungsi eigen(). Misalnya, untuk sebuah matriks \(X\), kita dapat memanggil fungsi eigX = eigen(X); eigX. Perintah ini akan menghasilkan keluaran berupa nilai eigen dan vektor eigen dari matriks \(X\). Hal yang sama berlaku untuk matriks \(Y\) dengan syntax eigY = eigen(Y); eigY.

Jika ingin memisahkan hasilnya, nilai eigen dapat diakses dengan menambahkan $values, sehingga ditulis eigvalX = eigX$values; eigvalX untuk mendapatkan nilai eigen dari matriks \(X\), dan eigvalY = eigY$values; eigvalY untuk matriks \(Y\). Sedangkan vektor eigen dapat diakses dengan $vectors, yaitu eigvecX = eigX$vectors; eigvecX untuk matriks \(X\), dan eigvecY = eigY$vectors; eigvecY untuk matriks $Y`.

Dengan demikian, fungsi eigen() di R memudahkan kita untuk langsung memperoleh baik nilai eigen maupun vektor eigen, serta memungkinkan kita mengakses keduanya secara terpisah sesuai kebutuhan analisis.

DEKOMPOSISI SINGULAR VALUE (SVD)

Singular Value Decomposition (SVD) merupakan salah satu teknik fundamental dalam aljabar linear yang memfaktorkan sebuah matriks \(A\) berukuran \(m \times n\) ke dalam tiga matriks: \[A = U \Sigma V^T\] Pada bentuk dekomposisi ini, \(U\) adalah matriks ortogonal berukuran \(m \times m\), \(\Sigma\) merupakan matriks diagonal berukuran \(m \times n\) yang berisi nilai singular (singular values), sedangkan \(V^T\) adalah transpose dari matriks ortogonal \(V\) yang berukuran \(n \times n\). Nilai singular yang terdapat pada \(\Sigma\) dapat dipandang sebagai akar kuadrat dari nilai eigen pada matriks \(A^TA\) maupun \(AA^T\). Dalam penerapannya, SVD memiliki cakupan penggunaan yang sangat luas baik secara teoritis maupun praktis. Pada bidang analisis data, SVD sering dijadikan dasar dalam Principal Component Analysis (PCA) yang bertujuan mereduksi dimensi data tanpa kehilangan informasi utama. Di samping itu, SVD juga berperan penting pada kompresi gambar, pengolahan sinyal, sistem rekomendasi, deteksi pola, hingga penyelesaian sistem persamaan linear yang bersifat tidak stabil. Dengan kemampuannya menguraikan matriks ke bentuk yang lebih sederhana, SVD membantu memahami struktur internal data sekaligus mempercepat berbagai proses analisis multivariat.

library(MASS)
a <- matrix(c(4,7,-2,5,1,9,-3,6,8,2,-4,10), 4, 3, byrow=TRUE)
a
##      [,1] [,2] [,3]
## [1,]    4    7   -2
## [2,]    5    1    9
## [3,]   -3    6    8
## [4,]    2   -4   10
svd_result <- svd(a)
singular_value <- svd_result$d ; singular_value
## [1] 15.95442 10.13170  6.91413
U <- svd_result$u ; U
##             [,1]       [,2]       [,3]
## [1,] -0.07091129  0.7390175 -0.4938121
## [2,]  0.60917362  0.1127123 -0.4848226
## [3,]  0.47393911  0.5187331  0.7115370
## [4,]  0.63187088 -0.4148072 -0.1217035
V <- svd_result$v ; V
##           [,1]       [,2]       [,3]
## [1,] 0.1632242  0.1119079 -0.9802216
## [2,] 0.0268857  0.9926726  0.1178064
## [3,] 0.9862226 -0.0455828  0.1590195

Pada syntax di atas, pertama-tama dipanggil library MASS yang berisi berbagai fungsi untuk analisis statistik dan aljabar linear. Selanjutnya, dibuat sebuah matriks a berukuran \(4 \times 3\) dengan perintah matrix(c(...), 4, 3, byrow=TRUE), di mana elemen-elemen matriks dimasukkan secara baris demi baris karena digunakan argumen byrow=TRUE. Setelah matriks a terbentuk, dilakukan dekomposisi nilai singular dengan fungsi svd(a), dan hasilnya disimpan dalam objek svd_result.

Hasil SVD ini berupa tiga komponen utama: nilai singular, matriks \(U\), dan matriks \(V\). Nilai singular dapat diakses melalui svd_result$d, yang berisi diagonal dari matriks \(\Sigma\). Matriks \(U\) dapat dipanggil dengan svd_result$u, sedangkan matriks \(V\) diperoleh dengan svd_result$v. Dengan demikian, dari syntax ini kita memperoleh secara lengkap hasil faktorisasi SVD, yaitu \(A = U \Sigma V^T\).

KONSEP JARAK

Konsep jarak dalam analisis data multivariat digunakan untuk mengukur tingkat kesamaan atau perbedaan antara dua objek atau unit observasi berdasarkan sekumpulan variabel. Jarak ini tidak hanya terbatas pada perbedaan nilai tunggal, tetapi mencakup perbedaan dari banyak dimensi sekaligus. Beberapa ukuran jarak yang umum digunakan antara lain Euclidean Distance, Manhattan Distanc*, Chebyshev Distance, Minkowski Distance, hingga Mahalanobis Distance.

Untuk memudahkan analisis, hasil perhitungan jarak antar semua pasangan observasi biasanya disajikan dalam bentuk matriks jarak (distance matrix). Matriks jarak adalah matriks simetris berukuran \(n \times n\), di mana \(n\) adalah jumlah observasi, dan setiap elemen \(d_{ij}\) menunjukkan jarak antara observasi ke-\(i\) dan ke-\(j\). Elemen diagonal selalu bernilai nol karena jarak suatu objek terhadap dirinya sendiri adalah nol.

Deskripsi Syntax R untuk Pengambilan Sampel dan Standardisasi Data

set.seed(321)
ss <- sample(1:50, 15)
df <- USArrests[ss, ]
df.scaled <- scale(df); df.scaled
##                  Murder     Assault   UrbanPop        Rape
## Wyoming      -0.3721741 -0.02296746 -0.3418930 -0.62039386
## Illinois      0.4221896  1.02244775  1.2520675  0.62633064
## Mississippi   1.6799322  1.14124493 -1.4507350 -0.39776448
## Kansas       -0.5486994 -0.56943449  0.0739228 -0.26418686
## New York      0.5766492  1.08184634  1.4599754  0.93801176
## Kentucky      0.2677300 -0.64071280 -0.8963140 -0.51650015
## Oklahoma     -0.4163054 -0.14176464  0.2125281  0.03265231
## Hawaii       -0.7031590 -1.38913505  1.2520675  0.06233622
## Missouri      0.1132704  0.17898775  0.3511333  1.24969289
## New Mexico    0.6428462  1.45011760  0.3511333  1.82852926
## Louisiana     1.5254725  1.02244775  0.0739228  0.35917539
## South Dakota -1.0341439 -0.91394632 -1.3814324 -1.03596869
## Iowa         -1.3871944 -1.27033787 -0.5498008 -1.25859806
## North Dakota -1.6961136 -1.40101477 -1.4507350 -1.85227639
## Texas         0.9296998  0.45222127  1.0441596  0.84896001
## attr(,"scaled:center")
##     Murder    Assault   UrbanPop       Rape 
##   8.486667 162.933333  64.933333  19.780000 
## attr(,"scaled:scale")
##    Murder   Assault  UrbanPop      Rape 
##  4.531929 84.177081 14.429467  6.737655

Pada syntax di atas, fungsi set.seed(321) digunakan terlebih dahulu untuk menetapkan seed dari generator bilangan acak. Hal ini bertujuan agar hasil pengambilan sampel dapat direproduksi (selalu sama setiap kali kode dijalankan).

Selanjutnya, perintah ss <- sample(1:50, 15) digunakan untuk mengambil 15 sampel acak dari angka 1 sampai 50. Hasilnya berupa sebuah vektor ss yang berisi indeks-indeks terpilih.

Kemudian, df <- USArrests[ss, ] berfungsi untuk memilih 15 baris data dari dataset bawaan R bernama USArrests sesuai dengan indeks yang ada pada ss. Dengan demikian, df merupakan subset dari dataset USArrests yang hanya berisi 15 observasi hasil sampel acak tersebut.

Terakhir, df.scaled <- scale(df); df.scaled digunakan untuk melakukan standardisasi pada setiap variabel dalam data df. Fungsi scale() menstandarkan data dengan cara mengurangi setiap nilai dengan rata-rata variabelnya, lalu membaginya dengan standar deviasi variabel tersebut. Hasilnya, setiap variabel dalam df.scaled akan memiliki rata-rata nol dan standar deviasi satu. Standardisasi ini penting untuk analisis multivariat, karena semua variabel menjadi berada pada skala yang sama sehingga tidak ada variabel yang mendominasi perhitungan jarak akibat perbedaan satuan.

Jarak Euclidean

Jarak Euclidean merupakan ukuran jarak yang paling sering digunakan dalam analisis data multivariat. Secara intuitif, jarak ini adalah panjang garis lurus yang menghubungkan dua titik dalam ruang berdimensi banyak. Jika terdapat dua observasi \(x = (x_1, x_2, \dots, x_p)\) dan \(y = (y_1, y_2, \dots, y_p)\) dengan \(p\) variabel, maka jarak Euclidean antara keduanya dirumuskan sebagai: \[ d(x, y) = \sqrt{ \sum_{i=1}^p (x_i - y_i)^2 } \] Rumus tersebut menghitung perbedaan kuadrat tiap pasangan variabel, menjumlahkannya, lalu diambil akar kuadratnya. Nilai jarak Euclidean tidak pernah negatif, dan bernilai nol hanya jika kedua observasi identik.

library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
dist.eucl <- dist(df.scaled, method = "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)

Perintah dist.eucl <- dist(df.scaled, method = "euclidean") berfungsi menghitung jarak Euclidean antar semua pasangan baris pada data df.scaled. Hasil yang diperoleh berupa sebuah matriks jarak. Nilai kecil menunjukkan dua observasi lebih mirip (berdekatan), sedangkan nilai besar menandakan perbedaan yang jauh. Selanjutnya, fviz_dist(dist.eucl) menampilkan visualisasi jarak dalam bentuk heatmap. Pada grafik ini, warna terang biasanya menggambarkan jarak kecil (lebih mirip), sementara warna gelap menggambarkan jarak besar (lebih berbeda).

Interpretasinya: -Jika ada beberapa observasi yang memiliki jarak Euclidean rendah satu sama lain, maka mereka cenderung membentuk suatu kelompok (cluster). -Jika terdapat observasi dengan jarak besar terhadap hampir semua observasi lain, maka kemungkinan besar data tersebut cukup berbeda dan dapat dianggap sebagai outlier.

Jarak Chebyshev

Jarak Chebyshev adalah ukuran jarak yang menilai selisih terbesar di antara semua dimensi dari dua titik dalam ruang berdimensi banyak.

Jika terdapat dua observasi \(x = (x_1, x_2, \dots, x_p)\) dan \(y = (y_1, y_2, \dots, y_p)\), maka rumus jaraknya adalah:

\[ d(x, y) = \max_i |x_i - y_i| \]

Dengan kata lain, jarak Chebyshev hanya melihat dimensi yang perbedaannya paling besar, lalu menjadikannya ukuran jarak. Karena itu, matrik ini juga disebut:Maximum metric (jarak maksimum) atau Chessboard distance (jarak papan catur), karena menyerupai langkah terpanjang yang bisa dilakukan dalam satu arah untuk mencapai posisi lain.

dist.cheb <- dist(df.scaled, method = "maximum"); 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)

Fungsi dist.cheb <- dist(df.scaled, method = "maximum") dipakai untuk menghitung jarak Chebyshev antar observasi pada dataset df.scaled. Dalam jarak ini, yang diambil hanyalah perbedaan terbesar di antara seluruh variabel dari dua observasi. Jadi, jika ada satu variabel yang nilainya jauh berbeda, maka variabel tersebut yang menentukan nilai jarak.

Output dist.cheb berupa matriks jarak, di mana: nilai kecil berarti tidak ditemukan perbedaan ekstrem antar variabel (observasi cukup serupa), nilai besar menunjukkan adanya gap besar di salah satu variabel.

Perintah fviz_dist(dist.cheb) berfungsi menampilkan hasil dalam bentuk heatmap. Pada tampilan ini, warna terang biasanya menunjukkan jarak yang kecil (observasi mirip), sedangkan warna gelap menandakan adanya jarak yang besar (observasi berbeda jauh pada setidaknya satu variabel).

Interpretasi: -Dua observasi bisa terlihat serupa di sebagian besar variabel, tetapi jarak Chebyshev tetap tinggi jika ada satu variabel dengan selisih besar. -Metode ini lebih sesuai bila fokus analisis ada pada selisih maksimum antar variabel, bukan pada keseluruhan rata-rata perbedaan.

Jarak Manhattan

Jarak Manhattan, sering disebut juga taxicab distance atau L1 norm, adalah ukuran jarak antar dua titik yang dihitung dengan cara menjumlahkan semua selisih absolut dari setiap variabel. Nama “Manhattan” diambil dari gambaran jalan berbentuk kotak-kotak di kota besar, di mana jarak yang ditempuh kendaraan hanya mengikuti jalur horizontal dan vertikal, bukan garis lurus diagonal. Secara matematis, untuk dua observasi \(x = (x_1, x_2, \dots, x_p)\) dan \(y = (y_1, y_2, \dots, y_p)\), jaraknya didefinisikan sebagai: \[ d(x, y) = \sum_{i=1}^p |x_i - y_i| \] Dengan kata lain, perbedaan pada setiap variabel dihitung, lalu seluruhnya dijumlahkan untuk menghasilkan nilai jarak total.

dist.man <- dist(df.scaled, method = "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)

Perintah dist.man <- dist(df.scaled, method = "manhattan") menghitung jarak Manhattan antar observasi dalam data df.scaled. Hasil dist.man berupa matriks jarak, yang berisi nilai total selisih absolut untuk tiap pasangan observasi. Perintah fviz_dist(dist.man) menampilkan heatmap dari matriks jarak tersebut, dengan warna terang menandakan jarak yang kecil (mirip) dan warna gelap menandakan jarak yang lebih besar (berbeda).

Interpretasi: -Jika ada banyak perbedaan kecil pada berbagai variabel, jarak Manhattan bisa tetap besar karena semua selisih dijumlahkan. -Sebaliknya, beberapa perbedaan besar pada sedikit variabel juga akan membuat jarak ini tinggi. -Jarak Manhattan sesuai dipakai bila analisis ingin melihat total akumulasi perbedaan antar observasi, bukan hanya perbedaan terbesar (Chebyshev) atau garis lurus terpendek (Euclidean).

Jarak Mahalanobis

Jarak Mahalanobis adalah ukuran jarak antar observasi yang memperhitungkan hubungan antar variabel. Berbeda dengan Euclidean atau Manhattan yang menganggap semua variabel independen dan memiliki skala yang sama, Mahalanobis menggunakan informasi kovarian sehingga hasil perhitungan lebih akurat ketika variabel saling berkorelasi.Karena sifatnya ini, jarak Mahalanobis banyak digunakan untuk:mendeteksi outlier multivariat, mengukur kedekatan antar observasi pada data dengan variabel yang saling berhubungan, serta analisis diskriminan dan klasifikasi. Secara matematis, untuk sebuah observasi \(x\) dengan vektor rata-rata \(\mu\), jarak Mahalanobis terhadap pusat data dirumuskan sebagai:

\[ D_M(x) = \sqrt{ (x - \mu)^T S^{-1} (x - \mu) } \]

di mana \(S^{-1}\) adalah invers dari matriks kovarian \(S\). Untuk jarak antar dua observasi \(x\) dan \(y\), formulanya ditulis sebagai:

\[ D_M(x, y) = \sqrt{ (x - y)^T S^{-1} (x - y) } \]

library(StatMatch)
## Loading required package: proxy
## 
## Attaching package: 'proxy'
## The following objects are masked from 'package:stats':
## 
##     as.dist, dist
## The following object is masked from 'package:base':
## 
##     as.matrix
## Loading required package: survey
## Loading required package: grid
## Loading required package: Matrix
## Loading required package: survival
## 
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
## 
##     dotchart
## Loading required package: lpSolve
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
dist.mah <- mahalanobis.dist(df.scaled); dist.mah
##               Wyoming  Illinois Mississippi    Kansas  New York Kentucky
## Wyoming      0.000000 1.7186109    2.820779 1.4195095 1.8695558 2.867847
## Illinois     1.718611 0.0000000    3.658323 2.2905255 0.4722069 3.878642
## Mississippi  2.820779 3.6583235    0.000000 3.2139075 3.6566922 2.544477
## Kansas       1.419510 2.2905255    3.213907 0.0000000 2.1522535 2.048031
## New York     1.869556 0.4722069    3.656692 2.1522535 0.0000000 3.698342
## Kentucky     2.867847 3.8786421    2.544477 2.0480310 3.6983422 0.000000
## Oklahoma     1.146496 1.8980286    3.237573 0.6499978 1.7772007 2.505941
## Hawaii       3.466671 3.6449604    4.722203 2.2108491 3.3748818 2.753554
## Missouri     3.198071 3.6796400    3.956918 2.2592572 3.3618939 2.642756
## New Mexico   3.281318 3.5101406    4.057258 3.1016653 3.2869855 3.870023
## Louisiana    2.284940 2.5550539    1.688058 2.2700723 2.4136664 2.119635
## South Dakota 1.826205 3.3564158    3.087365 1.6274307 3.3404110 2.261154
## Iowa         1.327907 2.6329606    3.559587 1.1128197 2.6839965 2.621704
## North Dakota 1.582582 3.1919907    3.553572 1.9466491 3.3317039 3.040465
## Texas        2.540604 2.4769381    3.093919 1.7462066 2.1399545 2.108949
##               Oklahoma   Hawaii Missouri New Mexico Louisiana South Dakota
## Wyoming      1.1464956 3.466671 3.198071   3.281318  2.284940     1.826205
## Illinois     1.8980286 3.644960 3.679640   3.510141  2.555054     3.356416
## Mississippi  3.2375727 4.722203 3.956918   4.057258  1.688058     3.087365
## Kansas       0.6499978 2.210849 2.259257   3.101665  2.270072     1.627431
## New York     1.7772007 3.374882 3.361894   3.286985  2.413666     3.340411
## Kentucky     2.5059414 2.753554 2.642756   3.870023  2.119635     2.261154
## Oklahoma     0.0000000 2.705865 2.203038   2.660216  2.350208     1.672866
## Hawaii       2.7058650 0.000000 3.193764   4.645567  3.383255     3.551072
## Missouri     2.2030382 3.193764 0.000000   1.836797  3.256319     2.505784
## New Mexico   2.6602159 4.645567 1.836797   0.000000  3.676879     3.026024
## Louisiana    2.3502077 3.383255 3.256319   3.676879  0.000000     3.021642
## South Dakota 1.6728664 3.551072 2.505784   3.026024  3.021642     0.000000
## Iowa         1.3299426 2.790197 3.145245   3.792086  2.954252     1.518854
## North Dakota 1.9813596 3.780966 3.590548   3.950259  3.434074     1.304743
## Texas        1.9635201 2.082005 2.576037   3.501666  1.527269     3.090805
##                  Iowa North Dakota    Texas
## Wyoming      1.327907     1.582582 2.540604
## Illinois     2.632961     3.191991 2.476938
## Mississippi  3.559587     3.553572 3.093919
## Kansas       1.112820     1.946649 1.746207
## New York     2.683996     3.331704 2.139954
## Kentucky     2.621704     3.040465 2.108949
## Oklahoma     1.329943     1.981360 1.963520
## Hawaii       2.790197     3.780966 2.082005
## Missouri     3.145245     3.590548 2.576037
## New Mexico   3.792086     3.950259 3.501666
## Louisiana    2.954252     3.434074 1.527269
## South Dakota 1.518854     1.304743 3.090805
## Iowa         0.000000     1.045923 2.734770
## North Dakota 1.045923     0.000000 3.563193
## Texas        2.734770     3.563193 0.000000
dist.mah_matrix <- as.matrix(dist.mah)

Fungsi mahalanobis.dist() dari package StatMatch menghitung jarak Mahalanobis antar semua pasangan observasi dalam data df.scaled.Perintah dist.mah <- mahalanobis.dist(df.scaled) menyimpan hasil dalam format objek jarak.dist.mah_matrix <- as.matrix(dist.mah) mengubah hasil menjadi matriks sehingga mudah ditampilkan dan dianalisis. Setiap elemen \(d_{ij}\) pada matriks mewakili jarak Mahalanobis antara observasi ke-\(i\) dan ke-\(j\).

Interpretasi: -Jika \(d_{ij}\) bernilai kecil, berarti observasi ke-\(i\) dan ke-\(j\) mirip, bahkan setelah menyesuaikan efek korelasi antar variabel. -Jika \(d_{ij}\) bernilai besar, berarti kedua observasi tersebut berbeda signifikan, bisa jadi salah satunya merupakan outlier multivariat. -Elemen diagonal bernilai nol karena jarak suatu observasi dengan dirinya sendiri = 0.

Jarak Minkowski

Jarak Minkowski merupakan generalisasi dari jarak Euclidean dan Manhattan. Ukuran ini menggunakan parameter \(q\) (atau \(p\)) untuk menyesuaikan bentuk perhitungannya. Secara matematis, jarak Minkowski antara dua observasi \(x = (x_1, x_2, \dots, x_p)\) dan \(y = (y_1, y_2, \dots, y_p)\) didefinisikan sebagai:

\[ d(x,y) = \left( \sum_{i=1}^p |x_i - y_i|^q \right)^{1/q} \] -Jika \(q = 1\), jarak Minkowski sama dengan jarak Manhattan. -Jika \(q = 2\), jarak Minkowski sama dengan jarak Euclidean. -Jika \(q \to \infty\), jarak Minkowski mendekati jarak Chebyshev. Dengan demikian, Minkowski bersifat fleksibel, di mana nilai parameter \(q\) menentukan karakteristik metriknya.

set.seed(123)
# 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,] 3.588198 1.410008 9.611500
## [2,] 8.094746 5.752949 5.080007
## [3,] 4.680792 9.031771 7.098136
## [4,] 8.947157 5.962915 6.153701
## [5,] 9.464206 5.109533 1.926322
# Tentukan dua titik yang akan dihitung jaraknya
p1 <- data[1, ];p1
##       X1       X2       X3 
## 3.588198 1.410008 9.611500
p2 <- data[2, ];p2
##       X1       X2       X3 
## 8.094746 5.752949 5.080007
# Fungsi jarak Minkowski
minkowski_distance <- function(x, y, p) {
  sum(abs(x - y)^p)^(1/p)
}

Interpretasi: 1. set.seed(123) digunakan untuk mengatur seed agar hasil data acak dapat direproduksi. 2. data <- matrix(runif(15, min = 1, max = 10), nrow = 5, ncol = 3) menghasilkan sebuah matriks acak berukuran 5 observasi \(\times\) 3 variabel dengan nilai antara 1 hingga 10. Kolom dinamai X1, X2, dan X3. 3. p1 <- data[1, ] dan p2 <- data[2, ] memilih observasi pertama dan observasi kedua dari dataset sebagai dua titik yang akan dihitung jaraknya. 4. Dibuat fungsi minkowski_distance <- function(x, y, p) { sum(abs(x - y)^p)^(1/p) }. Fungsi ini menghitung jarak Minkowski antara dua vektor x dan y, dengan parameter pangkat p.

VEKTOR RATA-RATA

Dalam analisis multivariat, vektor rata-rata adalah vektor yang berisi nilai rata-rata dari setiap variabel dalam sebuah dataset. Jika terdapat data dengan \(n\) observasi dan \(p\) variabel, maka vektor rata-rata ditulis sebagai:

\[ \bar{x} = \begin{bmatrix} \bar{x}_1 \\ \bar{x}_2 \\ \vdots \\ \bar{x}_p \end{bmatrix} = \begin{bmatrix} \frac{1}{n}\sum_{i=1}^n x_{i1} \\ \frac{1}{n}\sum_{i=1}^n x_{i2} \\ \vdots \\ \frac{1}{n}\sum_{i=1}^n x_{ip} \end{bmatrix} \] dengan \(\bar{x}_j\) menyatakan rata-rata dari variabel ke-\(j\).

Makna: -Vektor rata-rata merepresentasikan titik pusat data (center) dari semua observasi pada ruang berdimensi \(p\). -Untuk data dua dimensi, vektor rata-rata adalah koordinat dari rata-rata sumbu-\(x\) dan rata-rata sumbu-\(y\). -Pada dimensi yang lebih tinggi, vektor rata-rata dapat dianggap sebagai pusat massa atau (centroid). dari data.

Kegunaan: -Menjadi acuan dalam perhitungan jarak Mahalanobis, karena sering digunakan sebagai titik pusat pembanding. -Berperan sebagai pusat klaster dalam metode pengelompokan data clustering (misalnya algoritma K-Means). -Digunakan dalam pembentukan matriks kovarian dan juga menjadi dasar dalam analisis komponen utama (PCA).

Sebagai contoh, pada data yang berisi 10 ekor kadal dengan tiga variabel pengukuran berikut: BB: Berat badan (gram) PM: Panjang moncong (mm) RTB: Rata-rata panjang tubuh (mm)

Data dapat dituliskan dalam bentuk matriks pada R sebagai berikut:

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

Dalam analisis multivariat, matriks rata-rata adalah bentuk representasi vektor yang berisi nilai tengah dari setiap variabel pada data. Pada contoh data kadal dengan tiga variabel, yaitu berat badan (BB), panjang moncong (PM), dan rata-rata panjang tubuh (RTB), kita dapat menghitung rata-rata masing-masing variabel, lalu menyusunnya menjadi sebuah vektor berukuran \(3 \times 1\). Secara matematis dituliskan sebagai: \[ \bar{x} = \begin{bmatrix} \bar{BB} \\ \bar{PM} \\ \bar{RTB} \end{bmatrix} = \begin{bmatrix} \frac{1}{n}\sum_{i=1}^n BB_i \\ \frac{1}{n}\sum_{i=1}^n PM_i \\ \frac{1}{n}\sum_{i=1}^n RTB_i \end{bmatrix} \]

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

Perintah vecMeans = as.matrix(colMeans(lizard)) menghitung rata-rata setiap kolom pada matriks lizard, lalu mengubah hasilnya ke dalam bentuk matriks kolom. Dengan demikian, vecMeans adalah vektor rata-rata yang berisi nilai rata-rata dari variabel BB, PM, dan RTB.

Perintah kedua, vecRata = matrix(c(mean(BB), mean(PM), mean(RTB)), nrow=3, ncol=1), menghitung rata-rata dari masing-masing vektor variabel secara terpisah (mean(BB), mean(PM), dan mean(RTB)), lalu menyusunnya kembali menjadi sebuah matriks berukuran \(3 \times 1\).

Kedua cara ini menghasilkan output yang sama, yaitu sebuah vektor rata-rata:

\[ \bar{x} = \begin{bmatrix} \bar{BB} \\ \bar{PM} \\ \bar{RTB} \end{bmatrix} \] -Nilai pertama (\(\bar{BB}\)) mewakili rata-rata berat badan dari semua kadal. -Nilai kedua (\(\bar{PM}\)) mewakili rata-rata panjang moncong kadal. -Nilai ketiga (\(\bar{RTB}\)) mewakili rata-rata panjang tubuh rata-rata.

Dengan demikian, baik vecMeans maupun vecRata sama-sama menyajikan titik pusat (centroid) dari seluruh data kadal. Perbedaan syntax hanya pada cara penulisan, tetapi hasil akhirnya identik.

Matriks Kovarians

Dalam analisis multivariat, matriks kovarians digunakan untuk menggambarkan hubungan linier antar variabel dalam suatu dataset. Kovarians menunjukkan apakah dua variabel cenderung meningkat bersama (positif), bergerak berlawanan arah (negatif), atau tidak memiliki pola hubungan yang jelas (mendekati nol). Jika terdapat \(p\) variabel, maka matriks kovarians berbentuk persegi berukuran \(p \times p\): \[ 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} \]

dengan:
- \(s_{jj} = \text{Var}(X_j)\) → varians dari variabel ke-\(j\) (diagonal).
- \(s_{jk} = \text{Cov}(X_j, X_k)\) → kovarian antara variabel \(j\) dan \(k\) (elemen luar diagonal).

Secara umum, kovarians dihitung dengan rumus:

\[ \text{Cov}(X,Y) = \frac{1}{n-1}\sum_{i=1}^n (X_i - \bar{X})(Y_i - \bar{Y}) \]

Untuk data kadal (lizard) dengan variabel BB, PM, dan RTB, matriks kovarian dapat dihitung dengan:

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

Hasil perintah ini adalah sebuah matriks berukuran \(3 \times 3\) di mana: Elemen diagonal (\(s_{11}, s_{22}, s_{33}\)) → masing-masing adalah varians tiap variabel. -\(s_{11}\) = Var(BB), menggambarkan seberapa besar variasi berat badan kadal. -\(s_{22}\) = Var(PM), menunjukkan variasi panjang moncong. -\(s_{33}\) = Var(RTB), menunjukkan variasi panjang tubuh rata-rata. Elemen luar diagonal (\(s_{12}, s_{13}, s_{23}\) dan simetrisnya) → kovarians antar variabel. -\(s_{12}\) = Cov(BB, PM), mengukur keeratan hubungan linier antara berat badan dan panjang moncong. -\(s_{13}\) = Cov(BB, RTB), menunjukkan hubungan antara berat badan dan panjang tubuh. -\(s_{23}\) = Cov(PM, RTB), menunjukkan hubungan antara panjang moncong dan panjang tubuh. Dengan demikian, matriks kovarians tidak hanya memberikan informasi mengenai penyebaran tiap variabel secara individu, tetapi juga memperlihatkan keterkaitan antar variabel dalam data.

Matriks Korelasi

Dalam analisis multivariat, matriks korelasi digunakan untuk melihat hubungan linier relatif antar variabel dalam bentuk koefisien korelasi Pearson. Berbeda dengan kovarians yang masih bergantung pada satuan pengukuran, korelasi sudah dinormalisasi sehingga nilainya selalu berada pada rentang \([-1, 1]\). Secara matematis, korelasi antara dua variabel \(X\) dan \(Y\) dituliskan sebagai:

\[ r_{XY} = \frac{\text{Cov}(X,Y)}{\sqrt{\text{Var}(X)} \cdot \sqrt{\text{Var}(Y)}} \]

Dengan demikian, matriks korelasi untuk \(p\) variabel berbentuk:

\[ R = \begin{bmatrix} 1 & r_{12} & \cdots & r_{1p} \\ r_{21} & 1 & \cdots & r_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ r_{p1} & r_{p2} & \cdots & 1 \end{bmatrix} \]

Untuk data kadal (lizard), kita dapat menghitung matriks korelasi dengan:

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

Hasil korel adalah matriks \(3 \times 3\) dengan nilai korelasi antar pasangan variabel.

  • Diagonal matriks bernilai 1, karena setiap variabel berkorelasi sempurna dengan dirinya sendiri.
  • Nilai luar diagonal adalah koefisien korelasi antar dua variabel: \(r \approx +1\) → hubungan sangat kuat dan searah. \(r \approx -1\) → hubungan sangat kuat tetapi berlawanan arah. \(r \approx 0\) → hubungan linier lemah atau tidak ada.

Interpretasi pada data kadal: - cor(BB, PM) menunjukkan keeratan hubungan antara berat badan dan panjang moncong. Korelasi positif berarti kadal yang lebih berat cenderung memiliki moncong lebih panjang. - cor(BB, RTB) menggambarkan hubungan antara berat badan dan panjang tubuh. Jika nilainya tinggi dan positif, kadal yang lebih berat biasanya memiliki tubuh lebih panjang. - cor(PM, RTB) menunjukkan hubungan antara panjang moncong dan panjang tubuh. Nilai positif berarti semakin panjang moncongnya, semakin panjang pula tubuh kadal.

Matriks Standardisasi (Akar dari Variansi Masing-Masing Variabel)

Matriks standardisasi merupakan matriks diagonal yang berisi akar kuadrat dari variansi masing-masing variabel. Matriks ini digunakan untuk menormalisasi data sehingga setiap variabel memiliki skala yang sebanding.

Jika terdapat \(p\) variabel, maka matriks standardisasi \(D\) berbentuk:

\[ D = \begin{bmatrix} \sqrt{\text{Var}(X_1)} & 0 & \cdots & 0 \\ 0 & \sqrt{\text{Var}(X_2)} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sqrt{\text{Var}(X_p)} \end{bmatrix} \]

Matriks korelasi (\(R\)) dapat diturunkan dari matriks kovarian (\(S\)) melalui matriks standardisasi (\(D\)):

\[ R = D^{-1} S D^{-1} \]

dengan \(D\) adalah matriks diagonal dari akar variansi tiap variabel.

Perhitungan di R untuk data lizard:

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

Interpretasi:

  1. n = nrow(lizard); n : Menghitung banyaknya observasi pada data lizard (jumlah baris).

  2. u = matrix(1, n, 1); u : Membentuk vektor kolom berisi angka 1 sebanyak \(n\) baris. Vektor ini digunakan untuk mempermudah operasi aljabar dalam menghitung rata-rata.

  3. xbar = cbind((1/n)*t(u)%*%lizard); xbar : Menghitung vektor rata-rata dari data lizard menggunakan pendekatan matriks.

  4. D = lizard - u %*% xbar; D : Membentuk matriks deviasi, yaitu selisih setiap observasi terhadap vektor rata-rata.

  5. S = (1/(n-1))*t(D)%*%D; S : Menghitung matriks kovarian dari data lizard dengan pendekatan manual melalui matriks deviasi.

  6. `Ds = diag(sqrt(diag(S))); Ds : Membentuk matriks standardisasi, yaitu matriks diagonal yang berisi akar kuadrat dari variansi masing-masing variabel (standar deviasi).

    • \(Ds_{11}\) = standar deviasi berat badan (BB).
    • \(Ds_{22}\) = standar deviasi panjang moncong (PM).
    • \(Ds_{33}\) = standar deviasi panjang tubuh rata-rata (RTB).
  7. R = solve(Ds) %*% S %*% solve(Ds); R : Menghasilkan matriks korelasi dengan menormalkan kovarian menggunakan matriks standardisasi. Rumus yang dipakai: \(R = D^{-1} S D^{-1}\). Hasil \(R\) identik dengan matriks korelasi yang dihitung dengan cor(lizard).

  • Matriks standardisasi Ds adalah jembatan antara kovarian dan korelasi.
  • Kovarian (\(S\)) masih bergantung pada satuan pengukuran (gram, milimeter), sedangkan korelasi (\(R\)) sudah bebas dari satuan berkat pembagian dengan standar deviasi (\(Ds\)).
  • Dengan standardisasi, kita dapat membandingkan kekuatan hubungan antar variabel secara adil meskipun variabel memiliki skala yang berbeda.

Hasil akhirnya:

  • Ds = berisi standar deviasi tiap variabel.

  • R = matriks korelasi yang menunjukkan kekuatan dan arah hubungan antar variabel setelah menormalkan efek skala.