MATRIKS

Matriks adalah susunan angka-angka di dalam kotak yang dibagi ke dalam baris dan kolom. Misalkan terdapat matriks yang terdiri dari m baris dan n kolom, maka matriks tersebut berukuran m x n.

\[ A = \begin{bmatrix} 2 & 5 & 3 \\ 4 & 1 & 6 \\ 10 & 8 & 9 \end{bmatrix} \] Matriks A di atas merupakan matriks persegi yang berukuran 3 x 3 dan berisi 9 elemen. Setiap elemen dituliskan sebagai \(a_{ij}\) dengan \(i\) menyatakan baris dan \(j\) menyatakan kolom.

Operasi Matriks

# 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

Penjumlahan

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

Pengurangan

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

Perkalian

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

Transpose

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

Invers

inv_X = solve(X); inv_X
##      [,1] [,2] [,3]
## [1,]   -6   38  -33
## [2,]   -1    8   -7
## [3,]    6  -39   34
inv_Y = solve(Y); inv_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

Determinan

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

Contoh Lain Pembuatan Matriks

Membuat Matriks A

Berikut contoh pembuatan matriks berukuran 4×5 dengan elemen berupa bilangan bulat dari 21 sampai 40.

A <- matrix(11:30, nrow=4, ncol=5) ; A
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   11   15   19   23   27
## [2,]   12   16   20   24   28
## [3,]   13   17   21   25   29
## [4,]   14   18   22   26   30

Membuat Matriks B

Matriks B dibuat dari sebuah vektor berisi 12 elemen. Penyusunan matriks dilakukan per baris (byrow=TRUE) dengan ukuran 3×4.

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

Membuat Matriks C

Selain angka, matriks juga bisa diberi nama pada baris dan kolom. Contoh berikut menggunakan data sel yang disusun ke dalam matriks 2×2 dengan nama baris dan kolom tertentu.

sel <- c(15,9,27,18)
nama_kolom <- c("C1", "C2")
nama_baris <- c("R1", "R2")
C <- matrix(sel, nrow=2, ncol=2,
            byrow=TRUE, dimnames=list(nama_baris,
                                      nama_kolom)) ; C
##    C1 C2
## R1 15  9
## R2 27 18

Memanggil Komponen Matriks

A
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   11   15   19   23   27
## [2,]   12   16   20   24   28
## [3,]   13   17   21   25   29
## [4,]   14   18   22   26   30
A[,2]         # Kolom 2
## [1] 15 16 17 18
A[3,]         # Baris 3
## [1] 13 17 21 25 29
A[3,2]        # Sel(3, 2)
## [1] 17
A[c(1,3),2]   # Sel(1,2) dan sel(3,2)
## [1] 15 17
A[,1:3]       # kolom(1,2,3)
##      [,1] [,2] [,3]
## [1,]   11   15   19
## [2,]   12   16   20
## [3,]   13   17   21
## [4,]   14   18   22
A[2:4,]       # baris(2,3,4)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   12   16   20   24   28
## [2,]   13   17   21   25   29
## [3,]   14   18   22   26   30

VEKTOR RATA-RATA

Vektor rata-rata adalah sebuah vektor yang elemen-elemennya merupakan nilai rata-rata dari masing-masing variabel.

Berikut merupakan contoh dengan menggunakan data kadal.

# input data kadal
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

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

Matriks Kovarians

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

Matriks Korelasi

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

Matriks Standardisasi (Akar dari Variansi Masing-Masing Variabel)

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

EIGEN VALUE

Jika A adalah matriks n x n maka vektor tidak-nol x di Rn disebut vektor eigen dari A jika Ax sama dengan perkalian suatu skalar λ dengan x, yaitu \[ Ax = \lambda x \] Skalar λ disebut nilai eigen dari A dan x dinamakan vektor eigen yang berkoresponden dengan λ.

Eigen value menunjukkan jumlah variasi (informasi) yang dapat dijelaskan oleh satu komponen, sedangkan eigen vector menunjukkan jumlah variasi (informasi) yang dijelaskan suatu komponen lainnya, gabungan dari eigen value. Eigen Value dan eigen vector ini sangat berguna dalam analisis data multivariat misalnya Principal Komponen Analysis, Factor Analysis, dll.

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

SINGULAR VALUE DECOMPOSITION (SVD)

SVD memecah sebuah matriks𝐴berukuran m×n menjadi tiga matriks. SVD merupakan salah satu teknik untuk memecah matriks menjadi beberapa matriks.

library(MASS)
a <- matrix(c(5,-3,6,2,-4,8,-2,5,-1,7,3,9), 4, 3, byrow=TRUE)
a
##      [,1] [,2] [,3]
## [1,]    5   -3    6
## [2,]    2   -4    8
## [3,]   -2    5   -1
## [4,]    7    3    9
svd_result <- svd(a)
singular_value <- svd_result$d ; singular_value
## [1] 16.07076  7.41936  3.11187
U <- svd_result$u ; 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
V <- svd_result$v ; 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

KONSEP JARAK

Dalam analisis multivariat, konsep digunakan untuk mengukur seberapa jauh suatu titik data dengan titik lainnya.

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

Jarak Euclidean

Jarak euclidean adalah jarak lurus (garis terpendek) antara dua titik di ruang 𝑝-dimensi. Karena itu, sering disebut juga sebagai jarak lurus standar.

Contoh Aplikasi:

  • GPS → Menghitung jarak garis lurus antar dua koordinat.

  • Clustering (K-Means, Hierarchical) → objek dengan jarak yang dekat akan dikelompokkan ke dalam cluster yang sama.

Rumus jarak Euclidean antara dua titik \(x\) dan \(y\) dalam ruang \(p\)-dimensi adalah:

\[ d(x, y) = \sqrt{\sum_{i=1}^{p} (x_i - y_i)^2} \]

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)

Jarak Chebyshev

Jarak chebyshev adalah jarak yang ditentukan oleh selisih terbesar di antara koordinat. Dengan kata lain, jarak ini berfokus pada dimensi dengan selisih terbesar.

Contoh Aplikasi:

  • Catur (Langkah Raja) → jarak Chebyshev menggambarkan jumlah langkah minimum yang dibutuhkan raja untuk berpindah dari satu kotak ke kotak lain (karena raja bisa bergerak ke semua arah, termasuk diagonal).

  • Quality Control Multivariat → digunakan untuk mengecek kualitas produk dengan banyak dimensi (misalnya panjang, lebar, tinggi). Fokusnya ada pada dimensi terburuk (yang selisihnya paling besar dari standar).

Rumus jarak Chebyshev antara dua titik \(x\) dan \(y\) adalah:

\[ d(x, y) = \max_{i=1,2,\dots,p} \; |x_i - y_i| \]

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)

Jarak Manhattan

Jarak manhattan adalah jarak yang dihitung dengan menjumlahkan perbedaan absolut antar koordinat, seperti berjalan di jalan kota berbentuk grid [jarak berbasis grid (jumlah selisih)].

Contoh Aplikasi:

  • Menghitung jarak dalam gudang/grid jalan yang tidak memungkinkan jalur diagonal.

  • Menghitung jarak antar dokumen berdasarkan frekuensi kata (NLP).

Rumus jarak Manhattan antara dua titik \(x\) dan \(y\) adalah:

\[ d(x, y) = \sum_{i=1}^{p} |x_i - y_i| \]

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)

Jarak Mahalanobis

Jarak mahalanobis adalah jarak antar titik yang mempertimbangkan skala (varians) dan korelasi antar variabel.

Contoh Aplikasi:

  • Misalnya mendeteksi transaksi keuangan yang tidak wajar.

  • Memisahkan kelompok dengan varians dan korelasi berbeda (Analisis Diskriminan).

Rumus jarak Mahalanobis antara titik \(x\) dan rata-rata \(\mu\) dengan matriks kovarians \(S\) adalah:

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

library(StatMatch)
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)

Jarak Minkowski

Jarak Minkowski adalah ukuran jarak di antara dua titik dalam ruang vektor yang ditentukan oleh sebuah parameter p untuk mencari jarak umum karena menjadi bentuk dasar yang mencakup berbagai jenis jarak lain.

Konsep ini merupakan bentuk umum yang mencakup berbagai jenis jarak lain:

𝑝= 1 → Jarak Manhattan

𝑝= 2 → Jarak Euclidean

𝑝→ ∞ → Jarak Chebyshev

Rumus jarak Minkowski antara dua titik \(x\) dan \(y\) dengan parameter \(p\) adalah:

\[ d(x, y) = \left( \sum_{i=1}^{p} |x_i - y_i|^p \right)^{\frac{1}{p}} \]

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

# Contoh penggunaan dengan p = 1 (Manhattan), p = 2 (Euclidean), p = 3 (Minkowski umum)
dist_p1 <- minkowski_distance(p1, p2, p = 1);dist_p1
## [1] 13.38098
dist_p2 <- minkowski_distance(p1, p2, p = 2);dist_p2
## [1] 7.726871
dist_p3 <- minkowski_distance(p1, p2, p = 3);dist_p3
## [1] 6.435156
dist_inf <- max(abs(p1 - p2));dist_inf
## [1] 4.531493