Multidimensional Scaling (MDS) adalah teknik statistik yang digunakan untuk mengvisualisasikan jarak atau kemiripan antara objek dalam ruang multidimensi. MDS mengonversi jarak antara objek menjadi koordinat dalam ruang rendah dimensi (biasanya dua atau tiga dimensi) sehingga hubungan antar objek dapat dilihat secara visual.
Terdapat 2 jenis penskalaan pada MDS yaitu Metric Multidimensional Scaling berbasis kedekatan yang diukur dalam skala rasio dan Nonmetric Multidimensional Scaling berbasis kedekatan yang diukur dalam skala ordinal.
Secara garis besar, tahapan dari Metric Multidimensional Scaling:
Menghitung matriks jarak D menggunakan rumus jarak euclidian.
Setelah didapatkan matriks jarak, menghitung matriks B.
Mencari nilai eigen dan vektor eigen.
Membentuk koordinat objek.
Visualisasi dalam gambar 2 dimensi.
pacman::p_load(readxl, MASS)
Dataset
Dataset yang digunakan adalah data IKPS tahun 2022 kab/kota di Provinsi Sulawesi Selatan (BPS, 2021).
X1: Imunisasi Dasar Lengkap
X2: Penolong persalinan di fasilitas kesehatan oleh tenaga kesehatan
X3: Penggunaan alat KB Modern
X4: ASI Eksklusif
X5: Complementary Feeding
X6: Akses Air Minum Layak
X7: Akses Sanitasi Layak
X8: Pendidikan Anak Usia Dini (PAUD)
X9: Kepemilikan JKN/jamkesda
X10: Penerima KPS/KKS atau bantuan pangan
Tahapan ini adalah mengonversi data menjadi sebuah matriks jarak atau matriks similaritas. Hair dkk (2006) menjelaskan bahwa jarak Euclidean sebagai ukuran untuk menghitung jarak antara dua titik dalam ruang multidimensi. Jarak Euclidean adalah bentuk jarak yang paling umum digunakan dan merupakan dasar untuk banyak metode analisis data, termasuk clustering dan MDS (Multidimensional Scaling).
Penggunaan matriks jarak dilakukan dengan Jarak Euclidean (Euclidean Distance) yang merupakan jarak yang paling umum dan sering digunakan.
\[ d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} \] di mana \(\mathbf{x}\) dan \(\mathbf{y}\) adalah dua vektor dalam ruang n-dimensi dan \(d(\mathbf{x}, \mathbf{y})\) adalah jarak euclidean antara keduanya.
dist_matrix <- round(dist(dataku[,-c(1,2)], method = "euclidean"),2)
as.matrix(dist_matrix)
## 1 2 3 4 5 6 7 8 9 10 11 12
## 1 0.00 53.19 34.87 50.37 40.92 53.96 38.78 38.76 54.15 29.52 48.69 60.28
## 2 53.19 0.00 63.04 67.86 48.97 27.84 46.70 36.41 50.94 52.54 41.41 23.66
## 3 34.87 63.04 0.00 33.42 40.84 57.48 46.57 55.49 44.85 47.62 51.34 74.16
## 4 50.37 67.86 33.42 0.00 33.98 56.09 52.23 57.89 37.21 55.73 45.36 77.03
## 5 40.92 48.97 40.84 33.98 0.00 30.71 46.46 30.54 32.74 36.06 23.40 51.85
## 6 53.96 27.84 57.48 56.09 30.71 0.00 46.33 31.90 36.88 46.60 22.36 27.36
## 7 38.78 46.70 46.57 52.23 46.46 46.33 0.00 48.82 39.95 43.04 36.69 53.02
## 8 38.76 36.41 55.49 57.89 30.54 31.90 48.82 0.00 47.63 26.53 32.12 39.57
## 9 54.15 50.94 44.85 37.21 32.74 36.88 39.95 47.63 0.00 49.90 23.03 60.22
## 10 29.52 52.54 47.62 55.73 36.06 46.60 43.04 26.53 49.90 0.00 38.09 54.91
## 11 48.69 41.41 51.34 45.36 23.40 22.36 36.69 32.12 23.03 38.09 0.00 43.55
## 12 60.28 23.66 74.16 77.03 51.85 27.36 53.02 39.57 60.22 54.91 43.55 0.00
## 13 36.13 32.66 41.23 43.59 28.60 31.40 38.43 23.70 36.67 31.32 29.53 44.57
## 14 48.63 31.50 51.73 53.08 31.62 23.45 51.61 26.41 40.02 38.22 30.90 38.99
## 15 38.83 35.20 52.37 52.38 25.69 28.92 49.96 15.33 48.57 33.82 33.80 37.21
## 16 38.35 40.55 50.34 47.71 27.67 31.40 29.38 29.51 37.95 35.11 22.98 41.41
## 17 47.94 54.11 56.20 48.11 32.45 41.99 39.31 37.04 31.12 40.53 23.86 57.84
## 18 56.87 31.91 69.85 72.63 50.33 34.93 43.92 38.90 50.28 50.68 36.50 34.63
## 19 40.50 47.42 48.36 40.28 16.94 32.59 40.09 28.25 37.71 32.22 21.78 47.86
## 20 45.62 43.72 54.77 57.24 35.89 31.97 32.49 40.20 40.68 45.58 27.64 41.25
## 21 43.80 52.79 62.42 61.05 35.16 45.52 55.12 23.61 55.66 36.90 40.23 53.06
## 22 61.84 27.51 72.69 83.00 60.17 36.07 56.03 46.66 61.40 56.30 50.39 26.19
## 23 39.64 43.26 52.24 63.75 36.86 34.89 50.52 29.29 49.85 36.23 38.81 43.10
## 24 32.62 54.90 45.36 51.09 27.83 42.86 46.46 27.29 43.42 21.90 33.50 56.71
## 13 14 15 16 17 18 19 20 21 22 23 24
## 1 36.13 48.63 38.83 38.35 47.94 56.87 40.50 45.62 43.80 61.84 39.64 32.62
## 2 32.66 31.50 35.20 40.55 54.11 31.91 47.42 43.72 52.79 27.51 43.26 54.90
## 3 41.23 51.73 52.37 50.34 56.20 69.85 48.36 54.77 62.42 72.69 52.24 45.36
## 4 43.59 53.08 52.38 47.71 48.11 72.63 40.28 57.24 61.05 83.00 63.75 51.09
## 5 28.60 31.62 25.69 27.67 32.45 50.33 16.94 35.89 35.16 60.17 36.86 27.83
## 6 31.40 23.45 28.92 31.40 41.99 34.93 32.59 31.97 45.52 36.07 34.89 42.86
## 7 38.43 51.61 49.96 29.38 39.31 43.92 40.09 32.49 55.12 56.03 50.52 46.46
## 8 23.70 26.41 15.33 29.51 37.04 38.90 28.25 40.20 23.61 46.66 29.29 27.29
## 9 36.67 40.02 48.57 37.95 31.12 50.28 37.71 40.68 55.66 61.40 49.85 43.42
## 10 31.32 38.22 33.82 35.11 40.53 50.68 32.22 45.58 36.90 56.30 36.23 21.90
## 11 29.53 30.90 33.80 22.98 23.86 36.50 21.78 27.64 40.23 50.39 38.81 33.50
## 12 44.57 38.99 37.21 41.41 57.84 34.63 47.86 41.25 53.06 26.19 43.10 56.71
## 13 0.00 22.76 23.33 28.15 38.68 42.42 27.54 41.78 39.15 49.17 39.39 35.48
## 14 22.76 0.00 26.00 40.09 47.50 44.53 35.88 47.73 47.38 39.27 36.76 39.81
## 15 23.33 26.00 0.00 28.19 41.74 43.92 25.25 40.05 28.19 48.87 32.41 33.08
## 16 28.15 40.09 28.19 0.00 25.03 37.81 18.25 21.37 31.12 54.20 38.17 32.83
## 17 38.68 47.50 41.74 25.03 0.00 44.74 28.36 32.61 34.27 65.85 45.19 32.20
## 18 42.42 44.53 43.92 37.81 44.74 0.00 43.91 36.32 46.17 39.98 48.02 53.21
## 19 27.54 35.88 25.25 18.25 28.36 43.91 0.00 32.73 30.15 60.09 42.22 31.05
## 20 41.78 47.73 40.05 21.37 32.61 36.32 32.73 0.00 40.47 50.58 34.60 37.84
## 21 39.15 47.38 28.19 31.12 34.27 46.17 30.15 40.47 0.00 65.05 39.19 31.02
## 22 49.17 39.27 48.87 54.20 65.85 39.98 60.09 50.58 65.05 0.00 42.20 59.25
## 23 39.39 36.76 32.41 38.17 45.19 48.02 42.22 34.60 39.19 42.20 0.00 25.32
## 24 35.48 39.81 33.08 32.83 32.20 53.21 31.05 37.84 31.02 59.25 25.32 0.00
summary(dist_matrix)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 15.33 32.62 40.15 41.53 49.34 83.00
Matriks jarak menunjukkan bahwa kabupaten dengan urutan 15 dan 8 secara geografis memiliki jarak terdekat (sebesar 15.33) diantara kabupaten/kota lainnya. Sedangkan kabupaten dengan urutan 4 dan 22 memiliki jarak terjauh sebesar 83.00 diantara kabupaten/kota lainnya.
Pada tahapan ini dilakukan transformasi matriks jarak ke dalam bentuk yang dapat diolah untuk menentukan koordinat objek di ruang dimensi rendah.
Matriks Centering \(J\)
Matriks \(J\) dihitung sebagai:
\[ J = I - \frac{1}{n} \mathbf{1} \mathbf{1}^T \]
Dimana:
Matriks Centroid \(B\)
Matriks \(B\) dihitung menggunakan formula:
\[ B = -\frac{1}{2} J \cdot D^2 \cdot J \]
Dimana:
# Jumlah kab/kota
n = nrow(dataku)
# Matriks jarak yang dikuadratkan
D2 <- dist_matrix^2
# Matriks Identitas I
I <- diag(n)
# Vektor semua elemen bernilai 1
one_matrix <- matrix(rep(1,24),nrow=24,ncol=24)
# Matriks centering J
J <- I - (1/n) * D2
# Matriks B
B <- round((-0.5)*J*D2*J,2)
Matriks \(D^2\) digunakan untuk memperbesar perbedaan jarak yang akan digunakan dalam proses MDS untuk mempertahankan struktur relatif jarak.
Matriks centering \(J\) digunakan untuk mengubah matriks jarak yang dikuadratkan menjadi matriks \(B\).
Matriks \(B\) adalah bentuk transformasi dari matriks jarak yang dikuadratkan. Ini mempersiapkan data untuk langkah berikutnya dalam MDS, yaitu dekomposisi eigen.
Dekomposisi Nilai Eigen
Pada tahapan ini dilakukan dekomposisi eigen pada matriks B untuk mendapatkan koordinat dalam ruang berdimensi lebih rendah (digambarkan dari eigenvalue dan eigenvector).
Eigenvalue memberikan informasi tentang seberapa banyak variasi yang dijelaskan oleh masing-masing dimensi.
Eigenvector digunakan untuk menemukan koordinat objek di ruang dimensi rendah.
# Dekomposisi eigen
eigen_result <- eigen(B)
# Mengambil eigenvalue dan eigenvector
eigenvalues <- eigen_result$values
eigenvectors <- eigen_result$vectors
# Menyusun dimensi yang signifikan (misalnya, 2 dimensi)
k <- 2
eigenvalues <- eigenvalues[1:k]
eigenvectors <- eigenvectors[, 1:k]
# Koordinat dalam ruang 2 dimensi
# coordinates <- eigenvectors %*% diag(sqrt(eigenvalues))
Proses dekomposisi eigen ini mengubah matriks \(B\) menjadi koordinat dalam ruang dua dimensi, memungkinkan untuk memvisualisasikan data dalam ruang yang lebih sederhana.
Tahapan ini digunakan untuk mendapatkan hasil berupa koordinat objek dalam ruang baru berupa 2 dimensi (k=2).
coord_fit <- round(cmdscale(dist_matrix,k=2),2)
coord_fit
## [,1] [,2]
## [1,] 15.21 13.21
## [2,] -26.39 -10.20
## [3,] 31.53 -9.34
## [4,] 39.04 -16.94
## [5,] 13.51 0.84
## [6,] -14.66 -10.11
## [7,] 5.87 -15.37
## [8,] -6.35 16.15
## [9,] 13.83 -23.64
## [10,] 7.78 18.02
## [11,] 1.47 -9.40
## [12,] -35.37 -2.83
## [13,] 2.67 -1.94
## [14,] -8.47 -3.34
## [15,] -4.28 11.91
## [16,] 2.65 0.23
## [17,] 12.03 0.17
## [18,] -24.16 -5.88
## [19,] 9.54 2.99
## [20,] -3.73 -4.46
## [21,] 2.45 25.91
## [22,] -38.86 -7.30
## [23,] -7.46 13.79
## [24,] 12.12 17.53
Visualisasi
plot(coord_fit,pch=16,xlim=c(-35,55),ylim=c(-20,20),main="Plot 2 Dimensi",xlab="Dimensi 1",ylab="Dimensi 2",col="red")
text.default(coord_fit,pos=4,labels=dataku$`kabu`,cex=0.7)
abline(h=0,col="black")
abline(v=0,col="black")
Dari koordinat titik 24 objek didapatkan plot 2 dimensi yang dapat menentukan kemiripan kota/kabupaten di Sulawesi Selatan sesuai dengan karakteristik IKPS.
Kabupaten 7301 berada pada kuadran I karena bernilai + dan +
Kabupaten 7302 berada pada kuadran III karena bernilai - dan -
Kabupaten 7303 berada pada kuadran IV karena bernilai + dan -
dst.
Tahapan ini ditujukan untuk melihat jarak objek dari koordinat yang terbentuk.
# Menghitung jarak yang diproyeksikan dalam dua dimensi
distance_proj<-round(dist(coord_fit),2)
distance_proj
## 1 2 3 4 5 6 7 8 9 10 11 12
## 2 47.73
## 3 27.84 57.93
## 4 38.43 65.78 10.68
## 5 12.49 41.40 20.70 31.11
## 6 37.90 11.73 46.20 54.13 30.22
## 7 30.07 32.67 26.36 33.21 17.92 21.19
## 8 21.76 33.10 45.66 56.17 25.08 27.54 33.81
## 9 36.88 42.41 22.75 26.09 24.48 31.54 11.48 44.61
## 10 8.85 44.32 36.23 46.90 18.11 35.98 33.44 14.25 42.10
## 11 26.46 27.87 30.06 38.32 15.81 16.15 7.42 26.72 18.86 28.14
## 12 53.06 11.62 67.22 75.74 49.02 21.95 43.10 34.68 53.42 47.92 37.42
## 13 19.67 30.21 29.79 39.34 11.19 19.16 13.81 20.21 24.40 20.60 7.56 38.05
## 14 28.89 19.19 40.45 49.42 22.37 9.17 18.72 19.60 30.16 26.84 11.64 26.90
## 15 19.53 31.27 41.64 52.05 20.95 24.34 29.11 4.72 39.90 13.52 22.07 34.41
## 16 18.06 30.86 30.42 40.24 10.88 20.16 15.93 18.29 26.36 18.51 9.70 38.14
## 17 13.42 39.79 21.70 31.97 1.62 28.60 16.72 24.36 23.88 18.35 14.25 47.49
## 18 43.75 4.86 55.80 64.16 38.26 10.40 31.49 28.33 41.94 39.89 25.87 11.62
## 19 11.69 38.27 25.21 35.60 4.51 27.52 18.72 20.63 26.97 15.13 14.79 45.29
## 20 25.90 23.38 35.60 44.55 18.04 12.30 14.53 20.78 26.00 25.26 7.17 31.68
## 21 18.00 46.21 45.70 56.35 27.40 39.88 41.42 13.14 50.84 9.52 35.32 47.50
## 22 57.83 12.80 70.42 78.49 53.00 24.36 45.45 40.08 55.17 53.07 40.38 5.67
## 23 22.68 30.56 45.33 55.74 24.65 24.96 32.06 2.61 43.06 15.82 24.85 32.48
## 24 5.31 47.45 33.15 43.74 16.75 38.49 33.49 18.52 41.21 4.37 28.96 51.67
## 13 14 15 16 17 18 19 20 21 22 23
## 2
## 3
## 4
## 5
## 6
## 7
## 8
## 9
## 10
## 11
## 12
## 13
## 14 11.23
## 15 15.50 15.82
## 16 2.17 11.68 13.58
## 17 9.59 20.80 20.10 9.38
## 18 27.12 15.89 26.68 27.50 36.69
## 19 8.46 19.09 16.45 7.42 3.76 34.85
## 20 6.88 4.87 16.38 7.92 16.43 20.48 15.22
## 21 27.85 31.22 15.53 25.68 27.46 41.46 23.99 30.99
## 22 41.87 30.65 39.56 42.19 51.44 14.77 49.48 35.24 53.00
## 23 18.71 17.16 3.69 16.91 23.78 25.80 20.14 18.63 15.66 37.83
## 24 21.64 29.32 17.34 19.72 17.36 43.18 14.77 27.11 12.80 56.71 19.93
summary(distance_proj)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.62 17.10 26.57 28.32 38.45 78.49
Berdasarkan matriks di atas ditunjukkan urutan kabupaten 5 dan 17 memiliki jarak terdekat diantara kabupaten/kota lainnya sebesar 1.62 yang berarti 2 kabupaten tersebut memiliki karakteristik IKPS yang mirip. Kabupaten dengan urutan 4 dan 22 memiliki jarak terjauh diantara kabupaten/kota lainnya sebesar 78.49 yang berarti 2 kabupaten tersebut memiliki karakteristik IKPS yang sangat berbeda dari kabupaten/kota lainnya.
Evaluasi model MDS dilakukan dengan memeriksa fit atau kesesuaian model dengan data asli. Biasanya pemeriksaan kualitas hasil dengan menggunakan berbagai metrik seperti Stress.
Stress adalah salah satu metrik untuk mengevaluasi seberapa baik hasil MDS merepresentasikan jarak atau dissimilaritas dalam dimensi rendah. Stress mengukur kesalahan antara jarak yang dihasilkan dari konfigurasi dalam ruang berdimensi rendah dan jarak asli dari data (Johnson & Wichern, 2002).
Semakin kecil nilai stress, semakin baik representasi dimensi rendah terhadap data asli.
Rumus Stress dapat dituliskan sebagai berikut:
\[ \text{STRESS} = \sqrt{\frac{\sum_{i < j} (d_{ij} - \hat{d}_{ij})^2}{\sum_{i < j} d_{ij}^2}} \] Dimana:
Rumus ini mengukur seberapa baik jarak yang diproyeksikan (dalam ruang dimensi rendah) mencerminkan jarak asli (dalam ruang dimensi tinggi).
a<-sum((dist_matrix-distance_proj)^2)
b<-sum((dist_matrix-(sum(dist_matrix)/n))^2)
STRESS<-round(sqrt(a/b),4)
cat("STRESS :",STRESS)
## STRESS : 0.035
## R Square : 0.9988
Nilai Stress diperoleh sebesar 0.035, menunjukkan model penskalaan yang diperoleh termasuk kriteria sangat baik.
[1] Badan Pusat Statistik (BPS). (2021). Laporan Indeks Khusus Penanganan Stunting. Jakarta: BPS.
[2] Hair, J. F., dkk. (2006). Multivariate Data Analysis Sixth Edition. New Jersey: Pearson Education Inc.
[3] Johnson, N. & Wichern, D. (2002). Applied Multivariate Statistical Analysis. Prentice-Hall.
Direktorat Statistik Kesejahteraan Rakyat, BPS, saptahas@bps.go.id