Matriks adalah suatu himpunan bilangan atau variabel yang disusun dalam bentuk baris dan kolom (lajur) dalam bentuk persegi panjang yang di tempatkan di antara dua tanda kurung biasa ( ) atau siku [ ]. Untuk mempermudah perhitungan, analisis, dan interpretasi data, diperlukan dekomposisi matriks yaitu proses memecah sebuah matriks menjadi beberapa matriks lain yang lebih sederhana. Dekomposisi data memiliki dua jenis yaitu eigen decomposition dan singular value decomposistion (SVD). Selain itu, jarak antar objek observasi juga penting untuk mengetahui perbedaan antar objek. Beberapa ukuran jarak yang dapat dipakai yaitu Euclidean, Manhattan, Chebyshev, dan Mahalonobis.
#Operasi Matriks
##Pengertian
###Penjumlahan
Penjumlahan dalam matriks yaitu operasi yang dilakukan menjumlahkan elemen-elemen matriks X dan Y dengan posisi yang sama. \[ (A + B)_{ij} = a_{ij} + b_{ij} \]
###Pengurangan
Pengurangan dalam matriks yaitu operasi yang dilakukan dengan mengurangkan elemen-elemen pada posisi yang sama dari dua matriks yang berordo sama. \[ (A - B)_{ij} = a_{ij} - b_{ij} \]
Perkalian dalam matriks yaitu operasi yang dilakukan dengan mengalikan baris matriks pertama dengan kolom matriks kedua (dot product). \[ (AB)_{ij} = \sum_{k=1}^n a_{ik} b_{kj} \]
Transpose dalam matriks yaitu operasi yang dilakukan dengan Menukar baris menjadi kolom dan kolom menjadi baris. \[ X = \begin{bmatrix} x_{11} & x_{12} & x_{13} \\ x_{21} & x_{22} & x_{23} \\ x_{31} & x_{32} & x_{33} \end{bmatrix} ,\quad X^\top = \begin{bmatrix} x_{11} & x_{21} & x_{31} \\ x_{12} & x_{22} & x_{32} \\ x_{13} & x_{23} & x_{33} \end{bmatrix} \]
Invers dalam matriks matriks lain yang berfungsi sebagai kebalikan dari matriks asal, sehingga ketika keduanya dikalikan akan menghasilkan matriks identitas. \[ A^{-1} = \frac{1}{\det(A)} \cdot \text{adj}(A) \]
Determinan adalah bilangan skalar yang dihitung dari elemen-elemen matriks persegi, digunakan untuk mengetahui sifat matriks, misalnya apakah matriks dapat diinvers. \[ \det(A) = \begin{vmatrix} a & b \\ c & d \end{vmatrix} = ad - bc \\det(A) = \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} = a(ei - fh) - b(di - fg) + c(dh - eg) \]
##Contoh misalkan,
library(plyr)
## Warning: package 'plyr' was built under R version 4.5.1
X = matrix(c(6.5,4.2,7.9,
5.4,7.0,6.5,
7.3,6.7,8.2), nrow = 3, ncol = 3)
Y = matrix(c(7.3,6.7,8.5,
9.9,7.6,5.1,
5.4,8.2,6.2), nrow = 3, ncol = 3, byrow = TRUE)
X; Y
## [,1] [,2] [,3]
## [1,] 6.5 5.4 7.3
## [2,] 4.2 7.0 6.7
## [3,] 7.9 6.5 8.2
## [,1] [,2] [,3]
## [1,] 7.3 6.7 8.5
## [2,] 9.9 7.6 5.1
## [3,] 5.4 8.2 6.2
X + Y
## [,1] [,2] [,3]
## [1,] 13.8 12.1 15.8
## [2,] 14.1 14.6 11.8
## [3,] 13.3 14.7 14.4
X-Y
## [,1] [,2] [,3]
## [1,] -0.8 -1.3 -1.2
## [2,] -5.7 -0.6 1.6
## [3,] 2.5 -1.7 2.0
X %*% Y
## [,1] [,2] [,3]
## [1,] 140.33 144.45 128.05
## [2,] 136.14 136.28 112.94
## [3,] 166.30 169.57 151.14
Y %*% X
## [,1] [,2] [,3]
## [1,] 142.74 141.57 167.88
## [2,] 136.56 139.81 165.01
## [3,] 118.52 126.86 145.20
t(X)
## [,1] [,2] [,3]
## [1,] 6.5 4.2 7.9
## [2,] 5.4 7.0 6.5
## [3,] 7.3 6.7 8.2
t(Y)
## [,1] [,2] [,3]
## [1,] 7.3 9.9 5.4
## [2,] 6.7 7.6 8.2
## [3,] 8.5 5.1 6.2
solve(X) # inv(X)
## [,1] [,2] [,3]
## [1,] -0.9532659 -0.21818432 1.0269117
## [2,] -1.2726272 0.30077775 0.8871911
## [3,] 1.9271801 -0.02821942 -1.5706518
solve(Y) # inv(Y)
## [,1] [,2] [,3]
## [1,] 0.03460614 0.183869620 -0.19869150
## [2,] -0.22095696 -0.004178855 0.30636231
## [3,] 0.26209256 -0.154617635 -0.07084465
det(X)
## [1] -14.529
det(Y)
## [1] 153.152
#Eigen Value dan Eigen Vector
##Pengertian
###Eigen Value
Eigen Value adalah bilangan skalar khusus yang menunjukkan seberapa besar suatu vektor berubah ketika dikalikan dengan matriks tertentu. \[ A v = \lambda v \] untuk mencari eigen value, digunakan rumus : \[ \det(A - \lambda I) = 0 \]
Eigen vector adalah vektor khusus yang arahnya tidak berubah ketika dikalikan dengan suatu matriks.
\[ A v = \lambda v \]
misalkan,
X = matrix(c(6.5,4.2,7.9,
5.4,7.0,6.5,
7.3,6.7,8.2), nrow = 3, ncol = 3)
Y = matrix(c(7.3,6.7,8.5,
9.9,7.6,5.1,
5.4,8.2,6.2), nrow = 3, ncol = 3, byrow = TRUE)
X; Y
## [,1] [,2] [,3]
## [1,] 6.5 5.4 7.3
## [2,] 4.2 7.0 6.7
## [3,] 7.9 6.5 8.2
## [,1] [,2] [,3]
## [1,] 7.3 6.7 8.5
## [2,] 9.9 7.6 5.1
## [3,] 5.4 8.2 6.2
eigX = eigen(X)
eigY = eigen(Y)
eigvalX = eigX$values; eigvalX
## [1] 20.0531503 2.0077192 -0.3608695
eigvalY = eigY$values; eigvalY
## [1] 21.7100594+0.000000i -0.3050297+2.638443i -0.3050297-2.638443i
eigvecX = eigX$vectors; eigvecX
## [,1] [,2] [,3]
## [1,] -0.5564231 0.3933822 -0.4838008
## [2,] -0.5140912 -0.8381189 -0.4218863
## [3,] -0.6527661 0.3778984 0.7667781
eigvecY = eigY$vectors; eigvecY
## [,1] [,2] [,3]
## [1,] 0.5937358+0i 0.3354349-0.4098673i 0.3354349+0.4098673i
## [2,] 0.6073585+0i -0.6278092+0.0000000i -0.6278092+0.0000000i
## [3,] 0.5278196+0i 0.3219694+0.4708328i 0.3219694-0.4708328i
Value Decomposition adalah metode dekomposisi (pemfaktoran) matriks yang memecah sebuah matriks A berukuran m x n menjadi tiga matriks lain: \[ A \in \mathbb{R}^{m \times n} \] dapat dituliskan sebagai: \[ A = UDV^T \]
dengan : \[ U \in \mathbb{R}^{m \times m}, U^TU = I_m\ (ortogonal)\\V \in \mathbb{R}^{n \times n}\, \ V^TV = I_n\ (ortogonal) \\D \in \mathbb{R}^{m \times n}\\ diagonal\ dengan\ elemen\ singular\ value: \ D = \begin{bmatrix} \ D_1 & 0 & \cdots & 0 \\ 0 & \ D_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \ D_r \end{bmatrix} \]
misalkan, matriks A :
A <- matrix(c(7, -4, 9,
-3, 5, -6,
8, 2, -1,
-7, 4, 10),
nrow = 4, ncol = 3, byrow = TRUE); A
## [,1] [,2] [,3]
## [1,] 7 -4 9
## [2,] -3 5 -6
## [3,] 8 2 -1
## [4,] -7 4 10
svd_result <- svd(A)
singular_value <- svd_result$d
U <- svd_result$u; U
## [,1] [,2] [,3]
## [1,] -0.75689121 0.2921765 0.01905592
## [2,] 0.51080035 -0.1386821 0.45484505
## [3,] -0.06505582 0.4961913 0.78823880
## [4,] -0.40245054 -0.8057260 0.41404401
V <- svd_result$v; V
## [,1] [,2] [,3]
## [1,] -0.3010887 0.8794667 0.3686244
## [2,] 0.2551159 -0.2981833 0.9197840
## [3,] -0.9188370 -0.3709785 0.1345863
singular_value
## [1] 15.058462 13.725243 5.904272
Jarak Euclidean adalah jarak lurus terpendek antara dua titik dalam ruang \(p\) dimensi. \[ d_{\text{Euclidean}}(x,y) = \sqrt{\sum_{i=1}^p (x_i - y_i)^2} \]
Jarak Manhattan adalah jarak yang dihitung sebagai jumlah selisih absolut tiap koordinat. \[ d_{\text{Manhattan}}(x,y) = \sum_{i=1}^p |x_i - y_i| \]
###Jarak Chebyshev
Jarak Chebyshev adalah jarak yang ditentukan oleh selisih terbesar antar koordinat dari dua titik. \[ d_{\text{Chebyshev}}(x,y) = \max_{i=1,\dots,p} |x_i - y_i| \]
###Jarak Mahalanobis
Jarak Mahalanobis adalah jarak yang menghitung selisih antar titik dengan mempertimbangkan varians dan korelasi antar variabel.
\[ d_{\text{Mahalanobis}}(x,y) = \sqrt{(x - y)^T S^{-1} (x - y)} \]
dengan \(S\) adalah matriks kovarians dari data.
catatan: - \(q=1\) ⟶ Jarak
Manhattan
- \(q=2\) ⟶ Jarak Euclidean
- \(q \to \infty\) ⟶ Jarak
Chebyshev
##Contoh
Misalkan terdapat matriks berisikan data mahasiswa dan nilai sebagai berikut :
data <- matrix(c(
80, 75, 85,
70, 88, 82,
92, 85, 89,
65, 70, 68
), nrow = 4, byrow = TRUE)
colnames(data) <- c("Kalkulus", "ADM", "Stokastik")
rownames(data) <- paste("Mahasiswa", 1:4, sep = "")
data
## Kalkulus ADM Stokastik
## Mahasiswa1 80 75 85
## Mahasiswa2 70 88 82
## Mahasiswa3 92 85 89
## Mahasiswa4 65 70 68
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.5.1
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
dist.eucl <- dist(data, method = "euclidean"); dist.eucl
## Mahasiswa1 Mahasiswa2 Mahasiswa3
## Mahasiswa2 16.67333
## Mahasiswa3 16.12452 23.28089
## Mahasiswa4 23.21637 23.34524 37.34970
fviz_dist(dist.eucl)
dist.man <- dist(data, method = "manhattan"); dist.man
## Mahasiswa1 Mahasiswa2 Mahasiswa3
## Mahasiswa2 26
## Mahasiswa3 26 32
## Mahasiswa4 37 37 63
fviz_dist(dist.man)
dist.cheb <- dist(data, method = "maximum"); dist.cheb
## Mahasiswa1 Mahasiswa2 Mahasiswa3
## Mahasiswa2 13
## Mahasiswa3 12 22
## Mahasiswa4 17 18 27
fviz_dist(dist.cheb)
library(StatMatch)
## Warning: package 'StatMatch' was built under R version 4.5.1
## Loading required package: proxy
## Warning: package 'proxy' was built under R version 4.5.1
##
## 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.5.1
## 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 objects are masked from 'package:plyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## 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(data); dist.mah
## Mahasiswa1 Mahasiswa2 Mahasiswa3 Mahasiswa4
## Mahasiswa1 0.00000 2.44949 2.44949 2.44949
## Mahasiswa2 2.44949 0.00000 2.44949 2.44949
## Mahasiswa3 2.44949 2.44949 0.00000 2.44949
## Mahasiswa4 2.44949 2.44949 2.44949 0.00000
dist.mah_matrix <- as.matrix(dist.mah);dist.mah_matrix
## Mahasiswa1 Mahasiswa2 Mahasiswa3 Mahasiswa4
## Mahasiswa1 0.00000 2.44949 2.44949 2.44949
## Mahasiswa2 2.44949 0.00000 2.44949 2.44949
## Mahasiswa3 2.44949 2.44949 0.00000 2.44949
## Mahasiswa4 2.44949 2.44949 2.44949 0.00000
###Interpretasi
Berdasarkan perhitungan dari keempat jarak, didapatkan hasil bahwa mahasiswa 1 dan mahasiswa 2 memiliki nilai yang paling mirip, sedangkan mahasiswa 3 dan mahasiswa 4 memiliki nilai yang paling berbeda. Melalui Chebyshev, didapatkan hasil bahwa kalkulus adalah mata kuliah yang paling membedakan mahasiswa.
Matriks rata-rata adalah matriks (atau vektor kolom) yang berisi nilai rata-rata dari setiap variabel pada data. Jika \(X\) adalah matriks data berukuran \(m \times n\), maka vektor rata-rata:
\[ \bar{x} = \begin{bmatrix} \bar{x}_1 \\ \bar{x}_2 \\ \vdots \\ \bar{x}_p \end{bmatrix} = \frac{1}{n} \sum_{i=1}^n x_i \]
Matriks kovarians adalah matriks yang berisi nilai varians tiap variabel pada diagonal utama dan kovarians antar variabel pada elemen-elemen lainnya. Kovarians menunjukkan bagaimana dua variabel berubah bersama-sama.
\[ S = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})(x_i - \bar{x})^T \]
atau dalam bentuk matriks:\
\[ 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} \]
Matriks korelasi adalah matriks yang berisi nilai korelasi antar variabel dengan nilainya berada di antara (-1) sampai 1 yang menunjukkan kekuatan dan arah hubungan antar variabel. $$ R = D ^{-1} SD ^{-1}\ dengan D = (, , , ).
\atau secara elemen:\
r_{ij} = $$
Matriks standardisasi adalah matriks yang digunakan untuk menyusun data agar setiap variabel memiliki skala yang sama, biasanya dengan cara membagi data dengan akar variansnya. Untuk data \(X\), matriks data terstandardisasi \(Z\):
\[ Z = (X - \mathbf{1}\bar{x}^T) D_s^{-1} \]
dengan \(\mathbf{1}\) adalah vektor satuan, dan
\[ D_s = \text{diag}(\sqrt{s_{11}}, \sqrt{s_{22}}, \dots, \sqrt{s_{pp}}) \]
Misalkan, terdapat data jumlah penjualan minuman yang terjual di 6 toko yang berbeda dengan data sebagai berikut :
TehBotol <- c(120, 150, 100, 90, 130, 160)
KopiABC <- c(80, 95, 110, 85, 100, 120)
JusBuavita <- c(60, 75, 70, 65, 85, 95)
minuman <- as.matrix(cbind(TehBotol, KopiABC, JusBuavita)); minuman
## TehBotol KopiABC JusBuavita
## [1,] 120 80 60
## [2,] 150 95 75
## [3,] 100 110 70
## [4,] 90 85 65
## [5,] 130 100 85
## [6,] 160 120 95
rownames(minuman) <- paste("Toko", 1:6, sep="")
vecMeans = as.matrix(colMeans(minuman)); vecMeans
## [,1]
## TehBotol 125.00000
## KopiABC 98.33333
## JusBuavita 75.00000
vecRata = matrix(c(mean(TehBotol), mean(KopiABC), mean(JusBuavita)), nrow=3, ncol=1); vecRata
## [,1]
## [1,] 125.00000
## [2,] 98.33333
## [3,] 75.00000
varkov = cov(minuman); varkov
## TehBotol KopiABC JusBuavita
## TehBotol 750 190.0000 260
## KopiABC 190 226.6667 160
## JusBuavita 260 160.0000 170
korel = cor(minuman); korel
## TehBotol KopiABC JusBuavita
## TehBotol 1.0000000 0.4608177 0.7281456
## KopiABC 0.4608177 1.0000000 0.8150827
## JusBuavita 0.7281456 0.8150827 1.0000000
n = nrow(minuman); n
## [1] 6
u = matrix(1,n,1); u
## [,1]
## [1,] 1
## [2,] 1
## [3,] 1
## [4,] 1
## [5,] 1
## [6,] 1
xbar = cbind((1/n)*t(u)%*%minuman); xbar
## TehBotol KopiABC JusBuavita
## [1,] 125 98.33333 75
D = minuman - u %*% xbar; D
## TehBotol KopiABC JusBuavita
## Toko1 -5 -18.333333 -15
## Toko2 25 -3.333333 0
## Toko3 -25 11.666667 -5
## Toko4 -35 -13.333333 -10
## Toko5 5 1.666667 10
## Toko6 35 21.666667 20
S = (1/(n-1))*t(D)%*%D; S
## TehBotol KopiABC JusBuavita
## TehBotol 750 190.0000 260
## KopiABC 190 226.6667 160
## JusBuavita 260 160.0000 170
Ds = diag(sqrt(diag(S))); Ds
## [,1] [,2] [,3]
## [1,] 27.38613 0.00000 0.0000
## [2,] 0.00000 15.05545 0.0000
## [3,] 0.00000 0.00000 13.0384
R = solve(Ds) %*% S %*% solve(Ds); R
## [,1] [,2] [,3]
## [1,] 1.0000000 0.4608177 0.7281456
## [2,] 0.4608177 1.0000000 0.8150827
## [3,] 0.7281456 0.8150827 1.0000000
###Interpretasi
Berdasarkan perhitungan yang telah dilakukan, didapatkan hasil bahwa Teh Botol merupakan produk minuman yang paling laris, sedangkan Jus Buavita merupakan produk minuman yang paling sedikit terjual. Toko 6 merupakan toko dengan penjualan terbanyak, sedangkan toko 4 merupakan toko dengan penjualan terendah. Penjualan minuman produk Kopi ABC dan Jus Buavita memiliki pola penjualan yang paling mirip.