— RANGKUMAN MATERI —

1. Operasi Matriks

Teori

Matriks adalah susunan bilangan berbentuk baris dan kolom. Operasi dasar:

- Penjumlahan / pengurangan: dilakukan antar elemen posisi sama.
- Perkalian matriks: \(C = A \times B\), hanya jika kolom A = baris B.
Rumus: \(c_{ij} = \sum_{k=1}^n a_{ik} b_{kj}\)
- Perkalian elemen (Hadamard product): \(C = A \odot B\).
- Transpose: \(A^T\), menukar baris jadi kolom.
- Inverse: \(A^{-1}\) hanya ada jika \(\det(A) \neq 0\).
- Determinan: memberi informasi apakah matriks singular.

Syntax & Output

X = matrix(c(7.2, 6.5, 8.0,
             5.8, 7.3, 6.9,
             8.4, 7.1, 9.0), nrow = 3, ncol = 3, byrow = TRUE) ;X
##      [,1] [,2] [,3]
## [1,]  7.2  6.5  8.0
## [2,]  5.8  7.3  6.9
## [3,]  8.4  7.1  9.0
Y = matrix(c(6.9, 7.8, 8.2,
             7.5, 6.4, 7.1,
             8.7, 7.9, 6.8), nrow = 3, ncol = 3, byrow = TRUE) ;Y
##      [,1] [,2] [,3]
## [1,]  6.9  7.8  8.2
## [2,]  7.5  6.4  7.1
## [3,]  8.7  7.9  6.8
# Penjumlahan Matriks
X + Y
##      [,1] [,2] [,3]
## [1,] 14.1 14.3 16.2
## [2,] 13.3 13.7 14.0
## [3,] 17.1 15.0 15.8
Y + X
##      [,1] [,2] [,3]
## [1,] 14.1 14.3 16.2
## [2,] 13.3 13.7 14.0
## [3,] 17.1 15.0 15.8
# Pengurangan Matriks
X - Y
##      [,1] [,2] [,3]
## [1,]  0.3 -1.3 -0.2
## [2,] -1.7  0.9 -0.2
## [3,] -0.3 -0.8  2.2
Y - X
##      [,1] [,2] [,3]
## [1,] -0.3  1.3  0.2
## [2,]  1.7 -0.9  0.2
## [3,]  0.3  0.8 -2.2
# Perkalian antar Matriks
X %*% Y
##        [,1]   [,2]   [,3]
## [1,] 168.03 160.96 159.59
## [2,] 154.80 146.47 146.31
## [3,] 189.51 182.06 180.49
Y %*% X
##        [,1]   [,2]   [,3]
## [1,] 163.80 160.01 182.82
## [2,] 150.76 145.88 168.06
## [3,] 165.58 162.50 185.31
# Perkalian antar Elemen Matriks
X*Y
##       [,1]  [,2]  [,3]
## [1,] 49.68 50.70 65.60
## [2,] 43.50 46.72 48.99
## [3,] 73.08 56.09 61.20
2*X
##      [,1] [,2] [,3]
## [1,] 14.4 13.0 16.0
## [2,] 11.6 14.6 13.8
## [3,] 16.8 14.2 18.0
# Transpose Matriks
transX = t(X); transX
##      [,1] [,2] [,3]
## [1,]  7.2  5.8  8.4
## [2,]  6.5  7.3  7.1
## [3,]  8.0  6.9  9.0
transY = t(Y); transY
##      [,1] [,2] [,3]
## [1,]  6.9  7.5  8.7
## [2,]  7.8  6.4  7.9
## [3,]  8.2  7.1  6.8
# Invers Matriks
inv_X = solve(X); inv_X
##           [,1]       [,2]       [,3]
## [1,] -4.961401  0.5047506  4.0231591
## [2,] -1.710214  0.7125891  0.9738717
## [3,]  5.979810 -1.0332542 -4.4121140
inv_Y = solve(Y); inv_Y
##            [,1]       [,2]       [,3]
## [1,] -0.4734998  0.4422345  0.1092402
## [2,]  0.4056956 -0.9198780  0.4712397
## [3,]  0.1344785  0.5028817 -0.5401740
# Determinan Matriks
det(X)
## [1] -3.368
det(Y)
## [1] 26.547

Cara Lain Penulisan Pembuatan Matriks

## Menamakan Matriks X dan Y sebagai
## Matriks Skor Kinerja Karyawan

# Matriks X: skor kinerja 3 karyawan di 3 proyek
nilai_X <- c(7.2, 6.5, 8.0,
             5.8, 7.3, 6.9,
             8.4, 7.1, 9.0)

X <- matrix(nilai_X, nrow = 3, ncol = 3, byrow = TRUE,
            dimnames = list(c("Karyawan_A","Karyawan_B","Karyawan_C"),
                            c("Proyek1","Proyek2","Proyek3"))) ; X
##            Proyek1 Proyek2 Proyek3
## Karyawan_A     7.2     6.5     8.0
## Karyawan_B     5.8     7.3     6.9
## Karyawan_C     8.4     7.1     9.0
# Matriks Y: skor penilaian alternatif
nilai_Y <- c(6.9, 7.8, 8.2,
             7.5, 6.4, 7.1,
             8.7, 7.9, 6.8)

Y <- matrix(nilai_Y, nrow = 3, ncol = 3, byrow = TRUE,
            dimnames = list(c("Karyawan_A","Karyawan_B","Karyawan_C"),
                            c("Proyek1","Proyek2","Proyek3"))) ; Y
##            Proyek1 Proyek2 Proyek3
## Karyawan_A     6.9     7.8     8.2
## Karyawan_B     7.5     6.4     7.1
## Karyawan_C     8.7     7.9     6.8

Interpretasi

Hasil operasi matriks memberikan gambaran tentang skor kinerja tiga karyawan pada tiga proyek berbeda. Pada operasi penjumlahan X+Y, terlihat bahwa skor digabungkan antar dua matriks menghasilkan nilai yang lebih besar, dan sifat komutatif terbukti karena X+Y=Y+X. Sebaliknya, pengurangan X−Y dan Y−X menghasilkan nilai yang berbeda, menegaskan sifat tidak komutatif pada operasi pengurangan. Pada perkalian matriks X%∗%Y dan Y%∗%X, hasilnya berbeda karena urutan memengaruhi kombinasi linear antar baris dan kolom, ini menunjukkan bahwa perkalian matriks juga tidak komutatif. Untuk perkalian antar elemen X∗Y, skor tiap proyek dikalikan langsung sesuai posisinya, sedangkan 2∗X menunjukkan skala nilai ganda dari matriks X. Operasi transpose t(X) dan t(Y) menukar baris menjadi kolom, yang berguna untuk mengubah sudut pandang data. Invers matriks solve(X) dan solve(Y) dapat dihitung karena determinan keduanya tidak nol (meskipun det(X) = −3.368 relatif kecil, sedangkan det(Y) = 26.547), menandakan bahwa matriks X dan Y tidak singular dan dapat digunakan dalam penyelesaian sistem persamaan linear. Secara konteks dalam kasus yang diangkat, berarti skor kinerja karyawan dapat ditransformasi atau dianalisis lebih lanjut, misalnya membandingkan efektivitas karyawan berdasarkan kombinasi proyek.


2. Pemanggilan Elemen Matriks

Teori

Matriks dapat diakses dengan indeks [baris, kolom]:

  • \(A[i,j]\): elemen baris $i$, kolom \(j\).
  • \(A[i,]\): semua kolom pada baris \(i\).
  • \(A[,j]\): semua baris pada kolom \(j\).

Syntax

A <- matrix(21:40, nrow=4, ncol=5)
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
A[,2]       # kolom ke-2
## [1] 25 26 27 28
A[3,]       # baris ke-3
## [1] 23 27 31 35 39
A[3,2]      # elemen baris 3 kolom 2
## [1] 27
A[c(1,3),2] # elemen (1,2) dan (3,2)
## [1] 25 27

Interpretasi

Matriks A berukuran 4 × 5 dengan elemen dari 21 hingga 40. Dari matriks ini, pemanggilan kolom ke-2 dengan sintaks A[,2] menghasilkan vektor [25,26,27,28], yaitu seluruh nilai pada kolom kedua. Pemanggilan baris ke-3 dengan A[3,] menghasilkan [23,27,31,35,39], yaitu semua elemen pada baris ketiga. Jika hanya satu elemen tertentu yang ingin diambil, misalnya baris ke-3 kolom ke-2 (A[3,2]), hasilnya adalah 27. Selain itu, pemanggilan bisa dilakukan pada beberapa posisi sekaligus, misalnya A[c(1,3),2] mengambil elemen baris ke-1 kolom ke-2 (25) dan baris ke-3 kolom ke-2 (27). Dengan demikian, teknik indexing ini memungkinkan pemanggilan praktis ke seluruh baris, seluruh kolom, elemen tunggal, maupun elemen tertentu yang dipilih dari sebuah matriks.


3. Eigen Value & Eigen Vector

Teori

  • Eigenvalue ( \(\lambda\) ): besarnya variasi yang dijelaskan komponen.
  • Eigenvector ( \(v\) ): arah komponen (sumbu baru). Rumus: \(Av = \lambda v\)

Syntax

eigX = eigen(X)
eigX$values
## [1] 22.1778779  1.4284363 -0.1063142
eigX$vectors
##            [,1]       [,2]       [,3]
## [1,] -0.5669190  0.2689477 -0.6486550
## [2,] -0.5180512 -0.8332857 -0.1807867
## [3,] -0.6404888  0.4830135  0.7392989

Interpretasi

Matriks X memiliki tiga eigen value yaitu 22.18, 1.43, dan −0.11, yang menunjukkan bahwa variasi data paling besar dijelaskan oleh komponen pertama, sedangkan komponen kedua hanya berkontribusi kecil dan komponen ketiga nyaris tidak signifikan. Eigen vector yang menyertainya menunjukkan arah kombinasi linear variabel asal, misalnya eigen vector pertama (−0.57,−0.52,−0.64) merepresentasikan arah dominan variasi data. Artinya, dalam konteks skor kinerja karyawan, terdapat satu kombinasi skor proyek yang paling menentukan perbedaan antar karyawan, sementara kombinasi lainnya memiliki pengaruh jauh lebih kecil.


4. Singular Value Decomposition (SVD)

Teori

SVD memecah matriks \(A_{m \times n}\) menjadi: \(A = U \Sigma V^T\)

  • \(U\): matriks ortogonal (\(AA^T\)).
  • \(\Sigma\): singular values.
  • \(V\): matriks ortogonal (\(A^TA\)).

Syntax

A <- matrix(c(5,-3,6,2,-4,8,-2,5,-1,7,3,9), 4, 3, byrow = TRUE)
svd_result <- svd(A)
svd_result$d
## [1] 16.07076  7.41936  3.11187
svd_result$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
svd_result$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

Interpretasi

Hasil dekomposisi SVD matriks A menghasilkan tiga singular value yaitu 16.07, 7.42, dan 3.11, yang menggambarkan besarnya kontribusi masing-masing komponen dalam menjelaskan struktur data, dengan komponen pertama jauh lebih dominan dibandingkan dua lainnya. Matriks U menunjukkan kombinasi linear dari baris-baris A dalam basis baru, sementara matriks V merepresentasikan kombinasi linear kolom-kolom A. Dengan demikian, SVD ini memperlihatkan bahwa informasi dalam matriks A terutama dapat diringkas oleh komponen utama pertama, sedangkan dua komponen berikutnya berfungsi sebagai penyesuaian terhadap variasi yang lebih kecil.


5. Matriks Jarak

Teori

Jenis ukuran jarak:

A. Euclidean: \(d(x,y) = \sqrt{\sum (x\_i - y\_i)^2}\)

Jarak Euclidean adalah jarak paling umum dan intuitif, didefinisikan sebagai akar kuadrat dari jumlah kuadrat perbedaan antar koordinat. Konsepnya sama seperti jarak lurus yang diukur dengan penggaris di bidang dua atau tiga dimensi. Jarak ini cocok digunakan pada data yang berskala seragam. Namun, jika ada variabel dengan skala besar, Euclidean bisa bias karena variabel tersebut akan mendominasi hasil perhitungan.

B. Manhattan: \(d(x,y) = \sum |x_i - y_i|\)

Jarak Manhattan disebut juga city block distance, karena menghitung jarak seperti bergerak di sepanjang jalan kota berbentuk grid hanya melalui jalur horizontal dan vertikal tanpa diagonal. Nilainya diperoleh dari jumlah perbedaan absolut antar koordinat. Ukuran ini lebih tahan terhadap outlier dibanding Euclidean, sehingga banyak digunakan dalam analisis teks (berdasarkan frekuensi kata) maupun sistem transportasi dalam kota.

C. Chebyshev: \(d(x,y) = \max |x_i - y_i|\)

Jarak Chebyshev mengukur perbedaan dengan melihat selisih terbesar dari semua dimensi. Dengan kata lain, jarak ini ditentukan oleh dimensi dengan perbedaan paling ekstrem. Ukuran ini sering dipakai dalam quality control multivariat, misalnya ketika hanya dimensi terburuk dari sebuah produk yang dianggap kritis.

D. Mahalanobis: \(d(x,y) = \sqrt{(x-y)^T S^{-1} (x-y)}\)

Jarak Mahalanobis memperhitungkan varians dan korelasi antar variabel. Tidak seperti Euclidean yang mengasumsikan semua variabel independen dan setara, Mahalanobis menyesuaikan skala dengan matriks kovarians data. Dengan cara ini, dapat dibedakan jarak yang “nyata” pada data berkorelasi. Ukuran ini banyak digunakan untuk deteksi outlier multivariat dan analisis diskriminan, misalnya dalam mendeteksi transaksi keuangan yang mencurigakan.

E. Minkowski: generalisasi, \(p=1\) (Manhattan), \(p=2\) (Euclidean).

Jarak Minkowski merupakan generalisasi dari Euclidean dan Manhattan. Terdapat parameter p yang dapat diatur: jika p=1 hasilnya sama dengan Manhattan, jika p=2 sama dengan Euclidean, dan jika p→∞ hasilnya mendekati Chebyshev. Karena sifat fleksibelnya, Minkowski digunakan ketika peneliti ingin menyesuaikan ukuran jarak dengan karakteristik data tertentu.

Syntax

A. Jarak Euclidean

Contoh aplikasi:

- Menghitung jarak antar dua kota berdasarkan koordinat GPS.

- Clustering (misalnya K-Means).

# Contoh data sederhana: tinggi dan berat 5 orang
df <- data.frame(
  Tinggi = c(165, 170, 175, 180, 160),
  Berat  = c(55, 70, 65, 80, 50)
)

# Skala agar perbandingan fair
df.scaled <- scale(df)

# Euclidean Distance

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
dist.eucl <- dist(df.scaled, method = "euclidean"); dist.eucl
##           1         2         3         4
## 2 1.4067506                              
## 3 1.5171534 0.7585767                    
## 4 2.8259450 1.5171534 1.4067506          
## 5 0.7585767 2.0992898 2.2757301 3.5659206
fviz_dist(dist.eucl)

B. Jarak Manhattan

Contoh aplikasi:

- Jalur pergerakan robot di gudang (hanya bisa maju, mundur, kiri, kanan).

- Mengukur jarak antar dokumen berdasarkan frekuensi kata.

# Manhattan Distance
dist.man <- dist(df.scaled, method = "manhattan"); dist.man
##          1        2        3        4
## 2 1.889017                           
## 3 2.102619 1.051309                  
## 4 3.991636 2.102619 1.889017         
## 5 1.051309 2.940327 3.153928 5.042946
fviz_dist(dist.man)

C. Jarak Chebyshev

Contoh aplikasi:

- Jarak langkah raja dalam catur.

- Quality control: mengecek dimensi produk (panjang, lebar, tinggi) → fokus pada dimensi terburuk.

# Chebyshev Distance (maximum)
dist.cheb <- dist(df.scaled, method = "maximum"); dist.cheb
##           1         2         3         4
## 2 1.2565617                              
## 3 1.2649111 0.6324555                    
## 4 2.0942695 1.2649111 1.2565617          
## 5 0.6324555 1.6754156 1.8973666 2.5298221
fviz_dist(dist.cheb)

D. Jarak Mahalanobis

Contoh aplikasi:

- Deteksi outlier (misalnya transaksi keuangan yang mencurigakan).

- Analisis diskriminan: memisahkan kelompok dengan varians berbeda.

library(StatMatch)
## Warning: package 'StatMatch' was built under R version 4.4.3
## Loading required package: proxy
## Warning: package 'proxy' was built under R version 4.4.3
## 
## 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
## Warning: package 'survey' was built under R version 4.4.3
## 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
## Warning: package 'lpSolve' was built under R version 4.4.2
## Loading required package: dplyr
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Mahalanobis Distance
dist.mah <- mahalanobis.dist(df.scaled); dist.mah
##           [,1]     [,2]     [,3]     [,4]      [,5]
## [1,] 0.0000000 1.897367 1.549193 2.097618 0.7745967
## [2,] 1.8973666 0.000000 2.756810 1.549193 1.8439089
## [3,] 1.5491933 2.756810 0.000000 1.897367 2.3237900
## [4,] 2.0976177 1.549193 1.897367 0.000000 2.5690465
## [5,] 0.7745967 1.843909 2.323790 2.569047 0.0000000
dist.mah_matrix <- as.matrix(dist.mah); dist.mah_matrix
##           [,1]     [,2]     [,3]     [,4]      [,5]
## [1,] 0.0000000 1.897367 1.549193 2.097618 0.7745967
## [2,] 1.8973666 0.000000 2.756810 1.549193 1.8439089
## [3,] 1.5491933 2.756810 0.000000 1.897367 2.3237900
## [4,] 2.0976177 1.549193 1.897367 0.000000 2.5690465
## [5,] 0.7745967 1.843909 2.323790 2.569047 0.0000000

E. Jarak Minkowski

Contoh aplikasi:

- Fleksibel dipakai untuk memilih ukuran jarak sesuai kebutuhan algoritma.

# Data random: 5 observasi dengan 3 variabel
set.seed(42)
data <- matrix(runif(15, min = 1, max = 10), nrow = 5, ncol = 3)
colnames(data) <- c("X1", "X2", "X3"); data
##            X1       X2       X3
## [1,] 9.233254 5.671864 5.119676
## [2,] 9.433679 7.629295 7.472010
## [3,] 3.575256 2.211999 9.412050
## [4,] 8.474029 6.912931 3.298859
## [5,] 6.775710 7.345583 5.160635
# Pilih 2 titik
p1 <- data[1, ]; p1
##       X1       X2       X3 
## 9.233254 5.671864 5.119676
p2 <- data[2, ]; p2
##       X1       X2       X3 
## 9.433679 7.629295 7.472010
# Fungsi Minkowski
minkowski_distance <- function(x, y, p) {
  sum(abs(x - y)^p)^(1/p)
}

# Hitung dengan p=1,2,3,∞
dist_p1 <- minkowski_distance(p1, p2, p=1); dist_p1
## [1] 4.51019
dist_p2 <- minkowski_distance(p1, p2, p=2); dist_p2
## [1] 3.066787
dist_p3 <- minkowski_distance(p1, p2, p=3); dist_p3
## [1] 2.737947
dist_inf <- max(abs(p1 - p2)); dist_inf
## [1] 2.352334

Interpretasi

  • Hasil perhitungan jarak Euclidean menunjukkan bahwa individu 1 dan 5 memiliki jarak terdekat (0,76) sehingga profil tinggi dan berat mereka paling mirip, diikuti pasangan 2 dan 3 (0,76) serta 3 dan 4 (1,41), sedangkan jarak terbesar muncul antara individu 4 dan 5 (3,57) yang berarti keduanya paling berbeda; secara keseluruhan matriks jarak ini menggambarkan tingkat kemiripan relatif antarindividu berdasarkan kombinasi tinggi dan berat setelah distandardisasi.

  • Hasil perhitungan jarak Manhattan menunjukkan bahwa individu 1 dan 5 kembali menjadi pasangan paling mirip (1,05), sementara individu 4 dan 5 memiliki jarak terbesar (5,04) sehingga keduanya paling berbeda. Pola ini konsisten dengan Euclidean Distance, tetapi nilai jarak Manhattan umumnya lebih besar karena menjumlahkan selisih absolut tiap variabel, sehingga memberikan penekanan lebih pada perbedaan total tinggi dan berat antar individu.

  • Hasil perhitungan jarak Chebyshev menunjukkan bahwa individu 1 dan 5 kembali paling mirip dengan jarak 0,63, sedangkan individu 4 dan 5 paling berbeda dengan jarak 2,53 berbeda dengan Euclidean dan Manhattan yang menjumlahkan perbedaan, Chebyshev hanya mengambil selisih maksimum pada satu variabel, sehingga interpretasinya menekankan perbedaan terbesar yang muncul di antara tinggi atau berat tanpa memperhatikan akumulasi selisih pada variabel lain.

  • Hasil perhitungan jarak Mahalanobis menunjukkan bahwa individu 1 dan 5 memiliki kemiripan paling tinggi (jarak 0,77), sementara perbedaan terbesar muncul antara individu 2 dan 3 (jarak 2,76) berbeda dengan Euclidean, Manhattan, atau Chebyshev, Mahalanobis memperhitungkan kovariansi antarvariabel, sehingga hasilnya lebih sensitif terhadap pola hubungan antara tinggi dan berat, bukan hanya selisih nilai mentahnya.

  • Hasil perhitungan Minkowski menunjukkan bahwa jarak antara titik 1 dan 2 bervariasi tergantung nilai pp: pada p=1 (Manhattan) jarak relatif besar (4,51), pada p=2p=2 (Euclidean) mengecil menjadi 3,07, pada p=3p=3 lebih kecil lagi (2,74), dan pada p=∞ Chebyshev hanya ditentukan oleh selisih maksimum antar-koordinat yaitu 2,35. Hal ini menegaskan bahwa semakin besar nilai p, jarak Minkowski lebih menekankan pada perbedaan terbesar daripada penjumlahan keseluruhan selisih.

6. Vektor Rata-Rata, Kovarians, dan Korelasi

Teori

  • Rata-rata: \(\bar{x} = \frac{1}{n}\sum x_i\)
  • Kovarians: \(Cov(X,Y) = \frac{1}{n-1}\sum (x_i-\bar{x})(y_i-\bar{y})\)
  • Korelasi: \(Cor(X,Y) = \frac{Cov(X,Y)}{\sigma\_X \sigma\_Y}\)

Syntax

# Data: Berat Badan (kg), Jam Belajar (per minggu), Nilai Ujian
BB  <- c(55, 60, 62, 58, 65, 70, 72, 68, 75, 80)
JB  <- c(10, 12, 14, 11, 13, 15, 16, 14, 18, 20)
NU  <- c(65, 70, 72, 68, 75, 80, 82, 78, 85, 90)

mahasiswa <- cbind(BB, JB, NU); mahasiswa
##       BB JB NU
##  [1,] 55 10 65
##  [2,] 60 12 70
##  [3,] 62 14 72
##  [4,] 58 11 68
##  [5,] 65 13 75
##  [6,] 70 15 80
##  [7,] 72 16 82
##  [8,] 68 14 78
##  [9,] 75 18 85
## [10,] 80 20 90
# Rata-rata tiap variabel
colMeans(mahasiswa)
##   BB   JB   NU 
## 66.5 14.3 76.5
# Kovarians antar variabel
cov(mahasiswa)
##          BB        JB       NU
## BB 63.16667 23.944444 63.16667
## JB 23.94444  9.566667 23.94444
## NU 63.16667 23.944444 63.16667
# Korelasi antar variabel
cor(mahasiswa)
##           BB        JB        NU
## BB 1.0000000 0.9740482 1.0000000
## JB 0.9740482 1.0000000 0.9740482
## NU 1.0000000 0.9740482 1.0000000

Interpretasi

Hasil analisis menunjukkan bahwa rata-rata berat badan mahasiswa adalah 66,5 kg, rata-rata jam belajar 14,3 jam per minggu, dan rata-rata nilai ujian 76,5. Nilai kovarians antarvariabel relatif besar dan positif, misalnya antara berat badan dan nilai ujian sebesar 63,17, yang berarti peningkatan berat badan cenderung diikuti kenaikan nilai ujian, demikian pula dengan jam belajar. Korelasi juga sangat kuat dan positif, dengan nilai 1,00 antara berat badan dan nilai ujian (hubungan linier sempurna) serta 0,97 antara jam belajar dan kedua variabel lainnya. Secara keseluruhan, data ini menggambarkan adanya hubungan linier yang sangat erat antar ketiga variabel, di mana mahasiswa dengan berat badan lebih tinggi umumnya memiliki jam belajar lebih banyak dan nilai ujian yang lebih tinggi.


— IMPLEMENTASI (STUDI KASUS) —

Data nilai 5 mahasiswa pada 3 mata kuliah: Matematika, Statistika, Pemrograman.

nilai <- matrix(c(
  80, 85, 78, 90, 88,   # Matematika
  75, 82, 79, 85, 80,   # Statistika
  85, 88, 80, 92, 86    # Pemrograman
), nrow = 5, ncol = 3)

colnames(nilai) <- c("Matematika", "Statistika", "Pemrograman")
rownames(nilai) <- paste("Mhs", 1:5, sep="")
nilai
##      Matematika Statistika Pemrograman
## Mhs1         80         75          85
## Mhs2         85         82          88
## Mhs3         78         79          80
## Mhs4         90         85          92
## Mhs5         88         80          86

1. Operasi Matriks

bobot <- matrix(c(
  0.4, 0.3, 0.3,
  0.3, 0.5, 0.2,
  0.2, 0.2, 0.6
), nrow=3, ncol=3, byrow=TRUE)

nilai + 5        # menambah semua nilai 5 poin
##      Matematika Statistika Pemrograman
## Mhs1         85         80          90
## Mhs2         90         87          93
## Mhs3         83         84          85
## Mhs4         95         90          97
## Mhs5         93         85          91
nilai %*% bobot  # perkalian matriks
##      [,1] [,2] [,3]
## Mhs1 71.5 78.5 90.0
## Mhs2 76.2 84.1 94.7
## Mhs3 70.9 78.9 87.2
## Mhs4 79.9 87.9 99.2
## Mhs5 76.4 83.6 94.0
det(bobot)       # determinan
## [1] 0.05
solve(bobot)     # invers
##      [,1] [,2] [,3]
## [1,]  5.2 -2.4 -1.8
## [2,] -2.8  3.6  0.2
## [3,] -0.8 -0.4  2.2

2. Pemanggilan Elemen Matriks

nilai[1,]     # semua nilai Mhs1
##  Matematika  Statistika Pemrograman 
##          80          75          85
nilai[,2]     # semua nilai Statistika
## Mhs1 Mhs2 Mhs3 Mhs4 Mhs5 
##   75   82   79   85   80
nilai[3,1]    # nilai Matematika Mhs3
## [1] 78
nilai[2:4, ]  # subset mahasiswa 2-4
##      Matematika Statistika Pemrograman
## Mhs2         85         82          88
## Mhs3         78         79          80
## Mhs4         90         85          92

3. Eigen Value & Eigen Vector

eig_nilai <- eigen(cov(nilai))
eig_nilai$values
## [1] 51.333892  5.008961  2.757147
eig_nilai$vectors
##           [,1]       [,2]       [,3]
## [1,] 0.6940163  0.1420581  0.7058051
## [2,] 0.4368001 -0.8623831 -0.2559318
## [3,] 0.5723172  0.4859166 -0.6605589

4. Singular Value Decomposition (SVD)

svd_nilai <- svd(scale(nilai))
svd_nilai$d
## [1] 3.193294 1.144567 0.702028
svd_nilai$u
##            [,1]        [,2]        [,3]
## [1,] -0.4465918  0.70271013 -0.28966072
## [2,]  0.1881718 -0.12179775 -0.31587282
## [3,] -0.5401021 -0.67662526 -0.00106076
## [4,]  0.6773060 -0.07247966 -0.25899352
## [5,]  0.1212161  0.16819255  0.86558781
svd_nilai$v
##           [,1]       [,2]       [,3]
## [1,] 0.5973539  0.2329929  0.7673869
## [2,] 0.5529789 -0.8126910 -0.1837051
## [3,] 0.5808464  0.5340857 -0.6143043

5. Matriks Jarak

dist.eucl <- dist(scale(nilai), method="euclidean")
dist.man <- dist(scale(nilai), method="manhattan")
dist.cheb <- dist(scale(nilai), method="maximum")

library(StatMatch)
dist.mah <- mahalanobis.dist(scale(nilai))

dist.eucl
##           Mhs1      Mhs2      Mhs3      Mhs4
## Mhs2 2.2359765                              
## Mhs3 1.6194562 2.4208463                    
## Mhs4 3.6970458 1.5634788 3.9527105          
## Mhs5 2.0783765 0.9185944 2.4009970 1.9627759
dist.man
##          Mhs1     Mhs2     Mhs3     Mhs4
## Mhs2 3.552685                           
## Mhs3 2.612507 4.003820                  
## Mhs4 6.252902 2.700217 6.704036         
## Mhs5 3.142005 1.582877 3.593140 3.110897
dist.cheb
##           Mhs1      Mhs2      Mhs3      Mhs4
## Mhs2 1.8912013                              
## Mhs3 1.1410887 1.8257419                    
## Mhs4 2.7017161 0.9768308 2.7386128          
## Mhs5 1.5629293 0.5860985 1.9536617 1.3693064
dist.mah[1:5,1:5]
##          Mhs1      Mhs2     Mhs3      Mhs4     Mhs5
## Mhs1 0.000000 2.0817542 2.824606 2.7313045 2.787626
## Mhs2 2.081754 0.0000000 1.936309 0.9897875 2.436741
## Mhs3 2.824606 1.9363090 0.000000 2.7666614 2.758361
## Mhs4 2.731304 0.9897875 2.766661 0.0000000 2.554872
## Mhs5 2.787626 2.4367410 2.758361 2.5548716 0.000000

6. Vektor Rata-Rata, Kovarians, dan Korelasi

colMeans(nilai)
##  Matematika  Statistika Pemrograman 
##        84.2        80.2        86.2
cov(nilai)
##             Matematika Statistika Pemrograman
## Matematika       26.20      14.45       19.45
## Statistika       14.45      13.70       11.20
## Pemrograman      19.45      11.20       19.20
cor(nilai)
##             Matematika Statistika Pemrograman
## Matematika   1.0000000  0.7627056   0.8671982
## Statistika   0.7627056  1.0000000   0.6905691
## Pemrograman  0.8671982  0.6905691   1.0000000

7. Interpretasi & Kesimpulan

Hasil analisis matriks nilai mahasiswa menunjukkan bahwa rata-rata nilai tertinggi ada pada mata kuliah Pemrograman (86,2), disusul Matematika (84,2), dan Statistika (80,2), yang menggambarkan kecenderungan performa mahasiswa lebih baik pada aspek praktis. Kovarians dan korelasi menunjukkan hubungan positif cukup kuat antar mata kuliah, dengan korelasi tertinggi antara Matematika dan Pemrograman (0,867), yang menandakan mahasiswa yang kuat di Matematika cenderung juga berprestasi di Pemrograman. Perhitungan eigenvalue dari matriks kovarians menghasilkan satu komponen utama dominan (51,33) yang mengindikasikan adanya dimensi latar belakang yang menjelaskan sebagian besar variasi nilai, sedangkan SVD memperkuat bahwa pola dominan nilai mahasiswa cukup terkonsentrasi pada satu arah utama. Analisis jarak (Euclidean, Manhattan, Chebyshev, dan Mahalanobis) memperlihatkan variasi kedekatan performa antar mahasiswa, misalnya Mhs2 dan Mhs5 yang paling mirip, sedangkan Mhs3 relatif lebih berbeda dari lainnya.

Secara keseluruhan, dapat disimpulkan bahwa performa mahasiswa antar mata kuliah saling terkait dengan kekuatan utama pada Matematika dan Pemrograman, serta pola nilai antar mahasiswa menunjukkan adanya kelompok dengan kedekatan performa akademik yang cukup jelas.