1 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\times2\):

\[ \boldsymbol{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \] Dalam analisis data, matriks adalah alat fundamental untuk merepresentasikan dataset multivariat. Matriks digunakan secara luasdalam machine learning, statistika, simulasi komputasi, dan penyelesaian sistem persamaan linear.

2 Inisialisasi Matriks di R

Di R, fungsi matrix() digunakan untuk membuat objek matriks. Secara default, R akan mengisi matriksberdasarkan 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

3 Operasi-Operasi Matriks

Operasi aritmetika dasar dapat diterapkan pada matriks dengan beberapaaturan spesifik.

4 Penjumlahan dan Pengurangan

Penjumlahan dan pengurangan matriks dilakukan dengan menjumlahkan ataumengurangkan entri-entri yang bersesuaian posisinya. Syarat utama untukoperasi ini adalah kedua matriksharus 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

5 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,]    1    1    0
## [2,]    0    0    0
## [3,]    3    0    1

6 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.3. Properti Matriks

#1.3.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}\]

# Transpose matriks X dan Y

transX = t(X) 
transY = t(Y)

cat("Transpose X:\n") 
## Transpose X:
print(transX) 
##      [,1] [,2] [,3]
## [1,]    7    8    9
## [2,]    1    2    3
## [3,]    4    5    1
cat("\nTranspose Y:\n")
## 
## Transpose Y:
print(transY)
##      [,1] [,2] [,3]
## [1,]    2    8    6
## [2,]    7    1    3
## [3,]    4    5    9

7 Determinan Matriks

Determinan adalah sebuah nilai skalar yang dapat dihitung dari entri-entri sebuah matriks persegi.Determinan memberikan informasi penting tentang matriks, salah satunyaadalah 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 \]

Perhitungan determinan untuk matriks berordo lebih tinggi lebih kompleks.

# Menghitung determinan matriks X dan Y

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

8 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:

Matriks tersebut harus persegi (ordo \(n \times n\)).

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

9 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"); print(X) 
## Matriks X:
##      [,1] [,2] [,3]
## [1,]    7    1    4
## [2,]    8    2    5
## [3,]    9    3    1
cat("\nSeluruh entri pada kolom ke-2:\n");print(X[, 2])
## 
## Seluruh entri pada kolom ke-2:
## [1] 1 2 3
cat("\nSeluruh entri pada baris ke-3:\n"); print(X[3, ])
## 
## Seluruh entri pada baris ke-3:
## [1] 9 3 1
cat("\nEntri pada baris ke-1, kolom ke-3:\n"); print(X[1, 3])
## 
## Entri pada baris ke-1, kolom ke-3:
## [1] 4
cat("\nEntri pada baris 1-2 dan kolom 2-3:\n"); print(X[1:2, 2:3])
## 
## Entri pada baris 1-2 dan kolom 2-3:
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5

#2. Nilai Eigen dan Vektor Eigen

10 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"); print(eigX$values)
## Nilai Eigen dari X:
## [1] 12.6570080 -3.3620111  0.7050031
cat("\nVektor Eigen dari X:\n"); print(eigX$vectors)
## 
## Vektor Eigen dari X:
##            [,1]       [,2]       [,3]
## [1,] -0.5124962 -0.3041221 -0.3127775
## [2,] -0.6486906 -0.3662852  0.9123587
## [3,] -0.5626262  0.8794003  0.2641437

11 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:

\(\boldsymbol{U}\): Matriks ortogonal \(m \times m\) (left-singular vectors).

\(\boldsymbol{\Sigma}\): Matriks diagonal \(m \times n\) berisi singular values.

\(\boldsymbol{V^T}\) : Transpose dari matriks ortogonal \(n \times n\) (right-singular vectors).

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

# Menjalankan SVD pada matriks X

svd_X <- svd(X)

cat("Matriks U:\n"); print(svd_X$u)
## Matriks 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"); print(svd_X$d)
## 
## Singular Values (diagonal Sigma):
## [1] 15.4452307  3.3324345  0.5828613
cat("\nMatriks V:\n"); print(svd_X$v)
## 
## Matriks 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)

12 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) 

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.

13 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) 

14 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) 

15 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))
##             Wyoming Illinois Mississippi Kansas New York Kentucky
## Wyoming        0.00     1.72        2.82   1.42     1.87     2.87
## Illinois       1.72     0.00        3.66   2.29     0.47     3.88
## Mississippi    2.82     3.66        0.00   3.21     3.66     2.54
## Kansas         1.42     2.29        3.21   0.00     2.15     2.05
## New York       1.87     0.47        3.66   2.15     0.00     3.70
## Kentucky       2.87     3.88        2.54   2.05     3.70     0.00

16 Jarak Minkowski

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

#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.

17 Vektor Rata-Rata Sebuah vektor

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

18 Matriks Varians-Kovarians

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

# 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

19 Matriks Korelasi

Matriks Korelasi adalah versi standar dari matriks kovarians. Dengan menormalkan nilainya menjadi antara -1 dan 1, matriks ini memungkinkan kita untuk menilai kekuatan dan arah hubungan linear antar variabel secara murni, tanpa terpengaruh oleh perbedaan skala atau varians masing-masing variabel. \[ \boldsymbol{R} = \boldsymbol{D_s^{-1}} \boldsymbol{S} \boldsymbol{D_s^{-1}} \]

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

Interpretasi: Nilai korelasi yang mendekati 1 (seperti antara BB dan PM sebesar 0.96) menunjukkan hubungan linear positif yang sangat kuat. Artinya, semakin besar berat badan (BB) kadal, semakin besar pula panjang moncongnya (PM).

20 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.

21 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.