Definisi Matriks

Matriks adalah sebuah susunan persegi panjang/persegi dari bilangan,simbol, atau ekspresi, yang diatur dalam baris dan kolom. Setiap item dalam matriks disebut elemen atau entri. Ukuran sebuah matriks, yang ditentukan oleh jumlah baris dan kolomnya, disebut ordo.

Sebagai contoh, matriks \(\boldsymbol{A}\) di bawah ini adalah matriks berordo \(2 \times 2\): \[\boldsymbol{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \]

Dalam analisis data, matriks adalah alat fundamental untuk merepresentasikan dataset multivariat. Matriks digunakan secara luas dalam machine learning, statistika, simulasi komputasi, dan penyelesaian sistem persamaan linear.

1.2. Inisialisasi Matriks di R

Di R, fungsi matrix() digunakan untuk membuat objek matriks. Secara default, R akan mengisi matriks berdasarkan kolom.

# Membuat matriks X berordo 3x3 (pengisian per kolom) 
X = matrix(c(7,8,9, 1,2,3, 4,5,1), nrow = 3, ncol = 3) 
cat("Matriks X:\n")
## Matriks X:
print(X) 
##      [,1] [,2] [,3]
## [1,]    7    1    4
## [2,]    8    2    5
## [3,]    9    3    1

Untuk mengisi matriks berdasarkan baris, kita dapat menggunakan argumen byrow = TRUE.

# Membuat matriks Y berordo 3x3 (pengisian per baris)
Y = matrix(c(2,7,4, 8,1,5, 6,3,9), nrow = 3, ncol = 3, byrow = TRUE)
cat("Matriks Y:\n")
## Matriks Y:
print(Y) 
##      [,1] [,2] [,3]
## [1,]    2    7    4
## [2,]    8    1    5
## [3,]    6    3    9

1.3. Operasi-Operasi Matriks

Operasi aritmetika dasar dapat diterapkan pada matriks dengan beberapa aturan spesifik.

1.3.1. Penjumlahan dan Pengurangan

Penjumlahan dan pengurangan matriks dilakukan dengan menjumlahkan atau mengurangkan entri-entri yang bersesuaian posisinya. Syarat utama untuk operasi ini adalah kedua matriks harus memiliki ordo yang sama.

# Penjumlahan Matriks 
cat("Hasil X + Y:\n") 
## Hasil X + Y:
print(X + Y)
##      [,1] [,2] [,3]
## [1,]    9    8    8
## [2,]   16    3   10
## [3,]   15    6   10
# Pengurangan Matriks 
cat("\nHasil X - Y:\n")
## 
## Hasil X - Y:
print(X - Y) 
##      [,1] [,2] [,3]
## [1,]    5   -6    0
## [2,]    0    1    0
## [3,]    3    0   -8

1.3.2. Perkalian Matriks (Dot Product)

Perkalian matriks (%*%) adalah operasi untuk menggabungkan informasi linear dari dua matriks. Aturan perkalian matriks \(\boldsymbol{A} \times \boldsymbol{B}\) adalah jumlah kolom matriks \(\boldsymbol{A}\) harus sama dengan jumlah baris matriks \(\boldsymbol{B}\). Jika \(\boldsymbol{A}\) berordo \(m \times n\) dan \(\boldsymbol{B}\) berordo \(n \times p\), maka hasil perkaliannya akan berordo \(m \times p\).

# Perkalian matriks X (3x3) dan Y (3x3)
cat("Hasil X %*% Y:\n") 
## Hasil X %*% Y:
print(X %*% Y)
##      [,1] [,2] [,3]
## [1,]   46   62   69
## [2,]   62   73   87
## [3,]   48   69   60

1.3.3. Perkalian dengan Skalar dan Antar Elemen

  • Perkalian dengan Skalar: Mengalikan setiap entri matriks dengan sebuah bilangan tunggal (skalar).
  • Perkalian Antar Elemen (*): Mengalikan entri-entri yang bersesuaian. Syaratnya, kedua matriks harus berordo sama.
# Perkalian dengan Skalar
cat("Hasil 2 * X:\n") 
## Hasil 2 * X:
print(2 * X) 
##      [,1] [,2] [,3]
## [1,]   14    2    8
## [2,]   16    4   10
## [3,]   18    6    2
# Perkalian Antar Elemen 
cat("\nHasil X * Y:\n") 
## 
## Hasil X * Y:
print(X * Y) 
##      [,1] [,2] [,3]
## [1,]   14    7   16
## [2,]   64    2   25
## [3,]   54    9    9

1.4. Properti Matriks

1.4.1. Transpose Matriks

Transpose dari sebuah matriks (\(\boldsymbol{A}'\) atau \(\boldsymbol{A}^T\)) adalah operasi menukar baris menjadi kolom dan kolom menjadi baris. Jika ordo matriks awal adalah \(m \times n\), maka ordo matriks transposenya adalah \(n \times m\). \[\boldsymbol{A}*{m \times n} \rightarrow \boldsymbol{A'}*{n \times m} \]

1.4.2. Determinan Matriks

Determinan adalah sebuah nilai skalar yang dapat dihitung dari entri-entri sebuah matriks persegi. Determinan memberikan informasi penting tentang matriks, salah satunya adalah apakah matriks tersebut memiliki invers atau tidak. Untuk matriks berordo \(2 \times 2\):

\[ \boldsymbol{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \implies \det(\boldsymbol{A}) = ad - bc \]

# Menghitung determinan matriks X dan Y
cat("Determinan X:", det(X), "\n") 
## Determinan X: -30
cat("Determinan Y:", det(Y), "\n") 
## Determinan Y: -234

1.4.3. Invers Matriks

Invers dari matriks \(\boldsymbol{A}\), dinotasikan sebagai \(\boldsymbol{A}^{-1}\), adalah sebuah matriks yang jika dikalikan dengan \(\boldsymbol{A}\) akan menghasilkan matriks identitas (\(\boldsymbol{I}\)). \[\boldsymbol{A}\boldsymbol{A}^{-1} = \boldsymbol{A}^{-1}\\boldsymbol{A} = \boldsymbol{I} \]Syarat sebuah matriks memiliki invers adalah: 1. Matriks tersebut harus persegi (ordo \(n \times n\)). 2. Determinannya tidak boleh nol (\(\det(\boldsymbol{A}) \neq 0\)). Rumus umum invers adalah: \(\boldsymbol{A}^{-1} = \frac{1}{\det(\boldsymbol{A})} \text{adj}(\boldsymbol{A})\)

# Menghitung invers matriks X dan Y menggunakan fungsi solve()
invX = solve(X) 
invY = solve(Y)
cat("Invers X:\n") 
## Invers X:
print(invX) 
##            [,1]       [,2] [,3]
## [1,]  0.4333333 -0.3666667  0.1
## [2,] -1.2333333  0.9666667  0.1
## [3,] -0.2000000  0.4000000 -0.2
cat("\nInvers Y:\n") 
## 
## Invers Y:
print(invY)
##             [,1]        [,2]        [,3]
## [1,]  0.02564103  0.21794872 -0.13247863
## [2,]  0.17948718  0.02564103 -0.09401709
## [3,] -0.07692308 -0.15384615  0.23076923

1.4.4. Memanggil Entri Matriks (Indexing)

Elemen, baris, atau kolom spesifik dari sebuah matriks dapat diakses menggunakan indeks dalam format [baris, kolom].

# Contoh-contoh indexing pada matriks X 
cat("Matriks X:\n"); 
## Matriks X:
print(X) 
##      [,1] [,2] [,3]
## [1,]    7    1    4
## [2,]    8    2    5
## [3,]    9    3    1
cat("\nSeluruh entri pada kolom ke-2:\n");
## 
## Seluruh entri pada kolom ke-2:
print(X[, 2]) 
## [1] 1 2 3
cat("\nSeluruh entri pada baris ke-3:\n");
## 
## Seluruh entri pada baris ke-3:
print(X[3, ]) 
## [1] 9 3 1
cat("\nEntri pada baris ke-1, kolom ke-3:\n"); 
## 
## Entri pada baris ke-1, kolom ke-3:
print(X[1, 3]) 
## [1] 4
cat("\nEntri pada baris 1-2 dan kolom 2-3:\n"); 
## 
## Entri pada baris 1-2 dan kolom 2-3:
print(X[1:2, 2:3])
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5

2. Nilai Eigen dan Vektor Eigen

2.1. Definisi

  • Nilai Eigen (\(\lambda\)): Dalam konteks analisis data, nilai eigen merepresentasikan besarnya varians atau informasi yang dapat dijelaskan oleh sebuah komponen atau dimensi utama.

  • Vektor Eigen (\(\boldsymbol{v}\)): Adalah vektor yang arahnya tidak berubah ketika sebuah transformasi linear (diwakili oleh sebuah matriks) diterapkan padanya.

Vektor ini menunjukkan arah dari varians yang dijelaskan oleh nilai eigen. Nilai dan vektor eigen dari sebuah matriks \(\boldsymbol{A}\) memenuhi persamaan: \[\boldsymbol{A}\boldsymbol{v} = \lambda\boldsymbol{v}\] Untuk mencarinya, kita menyelesaikan persamaan karakteristik:

\[det(\boldsymbol{A} - \lambda\boldsymbol{I}) = 0\]

# Menghitung nilai dan vektor eigen dari matriks X
eigX <- eigen(X) 
cat("Nilai Eigen dari X:\n");
## Nilai Eigen dari X:
print(eigX$values) 
## [1] 12.6570080 -3.3620111  0.7050031
cat("\nVektor Eigen dari X:\n"); 
## 
## Vektor Eigen dari X:
print(eigX$vectors)
##            [,1]       [,2]       [,3]
## [1,] -0.5124962 -0.3041221 -0.3127775
## [2,] -0.6486906 -0.3662852  0.9123587
## [3,] -0.5626262  0.8794003  0.2641437

2.2. Sifat Penting

  • Trace: Jumlah dari semua nilai eigen sebuah matriks sama dengan trace matriks tersebut (jumlah elemen diagonalnya).
  • Determinan: Perkalian dari semua nilai eigen sebuah matriks sama dengan determinan matriks tersebut.
# Bukti sifat trace 
cat("Trace X:", sum(diag(X)), "\n") 
## Trace X: 10
cat("Jumlah Nilai Eigen X:", sum(eigen(X)$values), "\n\n")
## Jumlah Nilai Eigen X: 10
# Bukti sifat determinan
cat("Determinan X:", det(X), "\n") 
## Determinan X: -30
cat("Produk Nilai Eigen X:", prod(eigen(X)$values), "\n") 
## Produk Nilai Eigen X: -30

3. Singular Value Decomposition (SVD)

SVD adalah sebuah teknik faktorisasi matriks yang menguraikan sebuah matriks \(\boldsymbol{A}\) (berordo \(m \times n\)) menjadi tiga matriks: \[\boldsymbol{A} = \boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T \]Di mana:

SVD sangat berguna dalam reduksi dimensi, kompresi data, dan sistem rekomendasi.

# Menjalankan SVD pada matriksX 
svd_X <- svd(X)
cat("Matriks U:\n");
## Matriks U:
print(svd_X$u) 
##            [,1]       [,2]         [,3]
## [1,] -0.5188909 -0.3759167 -0.767749190
## [2,] -0.6160251 -0.4582471  0.640720427
## [3,] -0.5926764  0.8054168  0.006206113
cat("\nSingular Values (diagonal Sigma):\n");
## 
## Singular Values (diagonal Sigma):
print(svd_X$d) 
## [1] 15.4452307  3.3324345  0.5828613
cat("\nMatriks V:\n"); 
## 
## Matriks V:
print(svd_X$v)
##            [,1]       [,2]       [,3]
## [1,] -0.8995997  0.2854842 -0.3304833
## [2,] -0.2284828  0.3372428  0.9132704
## [3,] -0.3721774 -0.8970875  0.2381553

Jika ketiga komponen hasil SVD ini dikalikan kembali (\(\boldsymbol{U} \text{diag}(\boldsymbol{d}) \boldsymbol{V}^T\)), maka akan menghasilkan matriks aslinya.

4. Konsep Jarak Statistik

Dalam analisis multivariat, jarak adalah ukuran kuantitatif untuk menilai kesamaan atau ketidaksamaan antara dua observasi (objek). Sebelum menghitung jarak, sangat penting untuk melakukan standardisasi (scale()) data agar variabel dengan skala yang lebih besar tidak mendominasi perhitungan.

# Persiapan data: mengambil sampel dari dataset USArrests dan melakukan standardisasi set.seed(321) 
df <- USArrests[sample(1:50, 15), ] 
df.scaled <- scale(df) 

4.1. Jarak Euclidean

Jarak Euclidean adalah metrik yang paling intuitif, merepresentasikan jarak garis lurus terpendek antara dua titik dalam ruang fitur multi-dimensi. Metrik ini bekerja di bawah asumsi bahwa ruang data bersifat homogen dan hubungan antar titik bersifat langsung (seperti “jarak burung terbang”).

\[d_{ij} = \sqrt{\sum_{k=1}^{p}(x_{ki} - x_{kj})^2}\]

Aplikasi: Sangat umum digunakan dalam algoritma clustering seperti K-Means, di mana tujuannya adalah meminimalkan jarak Euclidean total dari setiap titik ke pusat cluster-nya. Juga fundamental dalam analisis geospasial.

dist.eucl <- dist(df.scaled, method = "euclidean")
fviz_dist(dist.eucl) + labs(title = "Heatmap Jarak Euclidean")

Interpretasi: Warna yang semakin merah menunjukkan jarak yang semakin dekat (profil kriminalitas mirip), seperti antara New York dan Illinois. Warna biru menunjukkan jarak yang jauh (profil berbeda), seperti antara North Dakota dan New Mexico.

##4.2. Jarak Manhattan (City Block)

Jarak Manhattan, atau “geometri taksi”, mengukur jarak dengan menjumlahkan selisih absolut di sepanjang setiap sumbu. Ini mengasumsikan pergerakan tidak bisa dilakukan secara diagonal, melainkan hanya sepanjang “blok-blok kota”. Metrik ini lebih robust terhadap pencilan (outlier) dibandingkan Euclidean karena tidak mengkuadratkan selisih.

\[d_{ij} = \sum_{k=1}^{p}|x_{ki} - x_{kj}|\]

Aplikasi: Berguna dalam analisis data genomik di mana setiap gen dianggap sebagai dimensi terpisah, atau dalam pemrosesan gambar di mana perbandingan piksel dilakukan pada sumbu vertikal dan horizontal.

dist.man <- dist(df.scaled, method = "manhattan")
fviz_dist(dist.man) + labs(title = "Heatmap Jarak Manhattan")

4.3. Jarak Chebyshev (Maximum)

Jarak Chebyshev ditentukan oleh selisih absolut terbesar di sepanjang satu dimensi saja. Metrik ini berfokus pada skenario “kasus terburuk” atau “bottleneck”, di mana perbedaan terbesar antara dua objek adalah yang paling signifikan. \[d_{ij} = \max_{k}(|x_{ki} - x_{kj}|) \]

Aplikasi: Efektif dalam logistik pergudangan untuk mengukur waktu pergerakan overhead crane (yang bergerak serentak pada sumbu X dan Y), atau dalam teori permainan untuk mengukur jarak langkah bidak raja di papan catur.

dist.cheb <- dist(df.scaled, method = "maximum") 
fviz_dist(dist.cheb) + labs(title = "Heatmap Jarak Chebyshev") 

4.4. Jarak Mahalanobis

Jarak Mahalanobis adalah metrik yang canggih secara statistik karena ia memperhitungkan korelasi antar variabel. Metrik ini mengukur jarak dalam satuan simpangan baku dari pusat data, dengan mempertimbangkan bentuk dan orientasi sebaran data. Hasilnya, ia tidak terpengaruh oleh skala dan korelasi data, menjadikannya alat yang sangat andal untuk deteksi outlier.

\[d\_{ij} = \sqrt{(\boldsymbol{x\_i} - \boldsymbol{x\_j})^T \boldsymbol{S}^{-1} (\boldsymbol{x\_i} - \boldsymbol{x\_j})} \]

Di mana \(\boldsymbol{S}^{-1}\) adalah invers dari matriks kovarians.

Aplikasi: Sangat umum digunakan dalam deteksi anomali (misalnya, transaksi keuangan yang tidak wajar) dan analisis diskriminan untuk klasifikasi.

dist.mah <- mahalanobis.dist(df.scaled)
cat("Matriks Jarak Mahalanobis (sebagian):\n")
## Matriks Jarak Mahalanobis (sebagian):
print(round(as.matrix(dist.mah)[1:6, 1:6], 2))
##                Georgia Iowa South Carolina New Mexico Colorado Connecticut
## Georgia           0.00 3.42           3.53       4.04     3.88        3.74
## Iowa              3.42 0.00           3.43       3.71     3.36        2.46
## South Carolina    3.53 3.43           0.00       1.92     3.72        3.31
## New Mexico        4.04 3.71           1.92       0.00     2.54        3.20
## Colorado          3.88 3.36           3.72       2.54     0.00        3.93
## Connecticut       3.74 2.46           3.31       3.20     3.93        0.00

4.5. Jarak Minkowski

Jarak Minkowski adalah formula umum yang menyatukan metrik-metrik sebelumnya. Parameter \(p\) mengontrol sensitivitas jarak terhadap perbedaan antar dimensi.

  • \(p=1 \implies\) Jarak Manhattan

  • \(p=2 \implies\) Jarak Euclidean

  • \(p \to \infty \implies\) Jarak Chebyshev


5. Vektor dan Matriks Statistik

Jika data individual adalah titik-titik, maka vektor dan matriks statistik adalah cara untuk mendeskripsikan karakteristik agregat dari keseluruhan “awan data” (data cloud) tersebut secara geometris.

5.1. Vektor Rata-Rata

Vektor Rata-Rata merepresentasikan pusat massa atau sentroid dari sebaran data dalam ruang multi-dimensi. Setiap elemen dalam vektor ini adalah nilai rata-rata dari satu variabel, sehingga vektor ini secara efektif mendefinisikan “titik tengah” dari keseluruhan dataset. \[\boldsymbol{\bar{x}} = \begin{bmatrix} \bar{x}_1 \ \bar{x}_2 \ \vdots \ \bar{x}_p \end{bmatrix}\]

# Data Pengukuran Kadal 
lizard = as.matrix(cbind(
  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))) 

# Menghitung Vektor Rata-Rata 
vecMeans = colMeans(lizard) 
cat("Vektor Rata-Rata:\n") 
## Vektor Rata-Rata:
print(vecMeans)
##     BB     PM    RTB 
##   9.05  67.60 128.00

5.2. Matriks Varians-Kovarians

Matriks Varians-Kovarians memberikan deskripsi numerik tentang bentuk, sebaran, dan orientasi dari awan data.

  • Elemen Diagonal (Varians): Mengukur seberapa besar data menyebar atau “meregang” di sepanjang setiap sumbu (variabel).

  • Elemen Non-Diagonal (Kovarians): Mengukur bagaimana data “miring” atau berorientasi.

Kovarians positif menunjukkan bahwa saat satu variabel meningkat, variabel lainnya juga cenderung meningkat. Matriks ini adalah fondasi matematis untuk memahami struktur internal data.

\[\boldsymbol{S} = \frac{1}{n-1} \sum_{i=1}^{n} (\boldsymbol{x_i} - \boldsymbol{\bar{x}})(\boldsymbol{x_i} - \boldsymbol{\bar{x}})^T\]

# Menghitung Matriks Kovarians 
varkov = cov(lizard) 
cat("Matriks Varians-Kovarians:\n") 
## Matriks Varians-Kovarians:
print(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

Di mana \(\boldsymbol{D_s}\) adalah matriks diagonal dari simpangan baku.

# Menghitung Matriks Korelasi
korel = cor(lizard)
cat("Matriks Korelasi:\n")
## Matriks Korelasi:
print(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

##5.4. Perhitungan Manual

Matriks Korelasi Memahami bagaimana matriks korelasi diturunkan dari matriks kovarians dapat memperjelas hubungan antar konsep. Perhitungan manual ini menunjukkan proses standardisasi yang terjadi di balik fungsi cor().

# Perhitungan manual matriks R dari S
n <- nrow(lizard)
S <- cov(lizard) # Matriks Kovarians
Ds <- diag(sqrt(diag(S))) # Matriks diagonal simpangan baku
R <- solve(Ds) %*% S %*% solve(Ds) # Matriks Korelasi

cat("Matriks Korelasi (Hasil Perhitungan Manual):\n")
## Matriks Korelasi (Hasil Perhitungan Manual):
print(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

Perhitungan manual ini identik dengan output dari fungsi cor(), yang membuktikan validitas formula yang digunakan.

6. Kesimpulan

Laporan ini telah menguraikan konsep-konsep fundamental dalam aljabar matriks dan analisis multivariat. Dimulai dari definisi dan operasi dasar matriks, dekomposisi untuk mengekstrak informasi tersembunyi, hingga berbagai metrik jarak untuk mengukur kesamaan data. Pemahaman terhadap konsep-konsep ini, beserta implementasinya dalam R, merupakan fondasi esensial untuk dapat menerapkan teknik analisis data yang lebih canggih seperti Analisis Komponen Utama (PCA), Analisis Klaster, dan model prediktif lainnya.