Tujuan utama penelitian ini untuk mengidentifikasi kemiripan dan perbedaan pola pada indeks kebahagiaan antar provinsi di 2021 menggunakan analisis DMS
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.4.2
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
library(smacof)
## Warning: package 'smacof' was built under R version 4.4.3
## Loading required package: plotrix
## Warning: package 'plotrix' was built under R version 4.4.3
## Loading required package: colorspace
## Warning: package 'colorspace' was built under R version 4.4.2
## Loading required package: e1071
## Warning: package 'e1071' was built under R version 4.4.2
##
## Attaching package: 'e1071'
## The following object is masked from 'package:ggplot2':
##
## element
##
## Attaching package: 'smacof'
## The following object is masked from 'package:base':
##
## transform
data yg digunakan menggunakan Data BPS mengenai indeks Kebahagiaan 2021 di Indonesia Dimana data terdiri dari sejumlah objek (provinsi) dan beberapa indikator numerik. Dari beberapa indikator Numerik mengukur aspek berbeda dari satu konsep untuk melihat pola kedekatan antar objek. Oleh karena itu Metode DMS dipilih untuk memvisualisasikan kemiripan
data <- read.xlsx("C:/Users/Kamal Aldimas/Downloads/Dimensi Makna Hidup Indeks Kebahagiaan, 2021.xlsx")
data
## 38.Province X2
## 1 <NA> Dimensi Makna Hidup Indeks Kebahagiaan
## 2 <NA> Kemandirian
## 3 <NA> 2021
## 4 ACEH 75.3
## 5 SUMATERA UTARA 74.58
## 6 SUMATERA BARAT 74.41
## 7 RIAU 74.75
## 8 JAMBI 75.21
## 9 SUMATERA SELATAN 75.01
## 10 BENGKULU 70.89
## 11 LAMPUNG 73.64
## 12 KEP. BANGKA BELITUNG 73.71
## 13 KEP. RIAU 77.02
## 14 DKI JAKARTA 73.48
## 15 JAWA BARAT 72.94
## 16 JAWA TENGAH 72.59
## 17 DI YOGYAKARTA 72.27
## 18 JAWA TIMUR 73.98
## 19 BANTEN 69.91
## 20 BALI 73.07
## 21 NUSA TENGGARA BARAT 70.83
## 22 NUSA TENGGARA TIMUR 73.11
## 23 KALIMANTAN BARAT 74.13
## 24 KALIMANTAN TENGAH 74.01
## 25 KALIMANTAN SELATAN 73.76
## 26 KALIMANTAN TIMUR 75.49
## 27 KALIMANTAN UTARA 76.21
## 28 SULAWESI UTARA 77.17
## 29 SULAWESI TENGAH 76.8
## 30 SULAWESI SELATAN 74.02
## 31 SULAWESI TENGGARA 75.89
## 32 GORONTALO 76.45
## 33 SULAWESI BARAT 74.09
## 34 MALUKU 80.33
## 35 MALUKU UTARA 80.67
## 36 PAPUA BARAT 77.26
## 37 PAPUA BARAT DAYA -
## 38 PAPUA 73.71
## 39 PAPUA SELATAN -
## 40 PAPUA TENGAH -
## 41 PAPUA PEGUNUNGAN -
## 42 INDONESIA 73.56
## X3 X4 X5
## 1 <NA> <NA> <NA>
## 2 Penguasaan Lingkungan Pengembangan Diri Hubungan Positif Dengan Orang Lain
## 3 2021 2021 2021
## 4 74.71 67.18 73.07
## 5 74.8 63.7 72.04
## 6 74.43 67.45 72.72
## 7 75.3 66.76 72.54
## 8 76.46 68.36 74.54
## 9 75.42 67.1 72.69
## 10 71.67 62.96 69.39
## 11 74.69 67.57 72.49
## 12 74.78 62.29 72.48
## 13 78.53 71.2 73.83
## 14 74.39 70.2 71.14
## 15 73.81 66.91 71.5
## 16 74.08 62.45 70.76
## 17 74.26 65.72 72.1
## 18 74.68 65.32 72.28
## 19 70.72 65.55 68.83
## 20 74.07 69.2 71.41
## 21 72.84 60.64 72.45
## 22 74.98 63.48 73.51
## 23 75.36 67.66 73.75
## 24 74.67 65.97 73.23
## 25 75.4 69.21 73.17
## 26 76.96 71.58 74.34
## 27 77.8 74.62 75.72
## 28 78.58 71.63 78.08
## 29 78.62 70.59 77.7
## 30 75.21 67.05 73.45
## 31 77.08 69.27 75.77
## 32 77.92 62.98 75.56
## 33 76.87 71.03 75.37
## 34 80.84 71.46 78.51
## 35 81.39 70.49 79.38
## 36 78.47 66.34 75.55
## 37 - - -
## 38 73.47 65.37 73.42
## 39 - - -
## 40 - - -
## 41 - - -
## 42 74.52 66.09 72.16
## X6 X7 X8
## 1 <NA> <NA> <NA>
## 2 Tujuan Hidup Penerimaan Diri Dimensi Makna Hidup (Total)
## 3 2021 2021 2021
## 4 74.21 77.25 73.74
## 5 74.38 75.65 72.71
## 6 73.75 76.05 73.25
## 7 75.76 76.98 73.84
## 8 78.72 78.42 75.44
## 9 76.74 76.76 74.11
## 10 73.04 72.31 70.21
## 11 76.46 77.13 73.81
## 12 74.9 77.68 72.85
## 13 79.65 78.82 76.68
## 14 75.86 75.88 73.6
## 15 74.62 75.2 72.63
## 16 74.77 76.08 72
## 17 76.36 75.43 72.86
## 18 75.65 76.21 73.19
## 19 72.59 73.4 70.28
## 20 74.25 74.9 72.92
## 21 73.73 75.46 71.18
## 22 73.79 75 72.48
## 23 75.57 76.85 74.02
## 24 77.57 77.85 74.05
## 25 76.91 78.41 74.61
## 26 78.52 77.84 75.91
## 27 79.48 78.26 77.1
## 28 79.71 79.37 77.54
## 29 79.14 80.18 77.3
## 30 75.77 77.41 73.96
## 31 76.49 78.52 75.63
## 32 79.05 80.55 75.67
## 33 79.71 79.34 76.19
## 34 81.71 80.89 79.12
## 35 81.57 81.88 79.41
## 36 79.3 80.02 76.37
## 37 - - -
## 38 71.73 74.14 72.07
## 39 - - -
## 40 - - -
## 41 - - -
## 42 75.33 76.15 73.12
data terdiri dari 38 provinsi dan 8 variabel yg dimana ada Kemandirian, Penguasaan Lingkungan, Pengembangan Diri, Hubungan Positif Dengan Orang Lain, Tujuan Hidup, Penerimaan Diri, dan Dimensi Makna Hidup (Total)
dim(data)
## [1] 42 8
head(data)
## 38.Province X2 X3
## 1 <NA> Dimensi Makna Hidup Indeks Kebahagiaan <NA>
## 2 <NA> Kemandirian Penguasaan Lingkungan
## 3 <NA> 2021 2021
## 4 ACEH 75.3 74.71
## 5 SUMATERA UTARA 74.58 74.8
## 6 SUMATERA BARAT 74.41 74.43
## X4 X5 X6
## 1 <NA> <NA> <NA>
## 2 Pengembangan Diri Hubungan Positif Dengan Orang Lain Tujuan Hidup
## 3 2021 2021 2021
## 4 67.18 73.07 74.21
## 5 63.7 72.04 74.38
## 6 67.45 72.72 73.75
## X7 X8
## 1 <NA> <NA>
## 2 Penerimaan Diri Dimensi Makna Hidup (Total)
## 3 2021 2021
## 4 77.25 73.74
## 5 75.65 72.71
## 6 76.05 73.25
str(data)
## 'data.frame': 42 obs. of 8 variables:
## $ 38.Province: chr NA NA NA "ACEH" ...
## $ X2 : chr "Dimensi Makna Hidup Indeks Kebahagiaan" "Kemandirian" "2021" "75.3" ...
## $ X3 : chr NA "Penguasaan Lingkungan" "2021" "74.71" ...
## $ X4 : chr NA "Pengembangan Diri" "2021" "67.18" ...
## $ X5 : chr NA "Hubungan Positif Dengan Orang Lain" "2021" "73.07" ...
## $ X6 : chr NA "Tujuan Hidup" "2021" "74.21" ...
## $ X7 : chr NA "Penerimaan Diri" "2021" "77.25" ...
## $ X8 : chr NA "Dimensi Makna Hidup (Total)" "2021" "73.74" ...
unique(data[[1]])
## [1] NA "ACEH" "SUMATERA UTARA"
## [4] "SUMATERA BARAT" "RIAU" "JAMBI"
## [7] "SUMATERA SELATAN" "BENGKULU" "LAMPUNG"
## [10] "KEP. BANGKA BELITUNG" "KEP. RIAU" "DKI JAKARTA"
## [13] "JAWA BARAT" "JAWA TENGAH" "DI YOGYAKARTA"
## [16] "JAWA TIMUR" "BANTEN" "BALI"
## [19] "NUSA TENGGARA BARAT" "NUSA TENGGARA TIMUR" "KALIMANTAN BARAT"
## [22] "KALIMANTAN TENGAH" "KALIMANTAN SELATAN" "KALIMANTAN TIMUR"
## [25] "KALIMANTAN UTARA" "SULAWESI UTARA" "SULAWESI TENGAH"
## [28] "SULAWESI SELATAN" "SULAWESI TENGGARA" "GORONTALO"
## [31] "SULAWESI BARAT" "MALUKU" "MALUKU UTARA"
## [34] "PAPUA BARAT" "PAPUA BARAT DAYA" "PAPUA"
## [37] "PAPUA SELATAN" "PAPUA TENGAH" "PAPUA PEGUNUNGAN"
## [40] "INDONESIA"
length(unique(data[[1]]))
## [1] 40
Disini terdapat data missing value dan memiliki data objek “indonesia” yg dimana itu mencakup seluruh provinsi yang ada di Indonesia oleh karena itu perlu di hapus keduanya
data_clean <- data[!is.na(data[[1]]) &
data[[1]] != "INDONESIA", ]
dim(data_clean)
## [1] 38 8
head(data_clean[[1]])
## [1] "ACEH" "SUMATERA UTARA" "SUMATERA BARAT" "RIAU"
## [5] "JAMBI" "SUMATERA SELATAN"
str(data_clean)
## 'data.frame': 38 obs. of 8 variables:
## $ 38.Province: chr "ACEH" "SUMATERA UTARA" "SUMATERA BARAT" "RIAU" ...
## $ X2 : chr "75.3" "74.58" "74.41" "74.75" ...
## $ X3 : chr "74.71" "74.8" "74.43" "75.3" ...
## $ X4 : chr "67.18" "63.7" "67.45" "66.76" ...
## $ X5 : chr "73.07" "72.04" "72.72" "72.54" ...
## $ X6 : chr "74.21" "74.38" "73.75" "75.76" ...
## $ X7 : chr "77.25" "75.65" "76.05" "76.98" ...
## $ X8 : chr "73.74" "72.71" "73.25" "73.84" ...
provinsi <- trimws(data_clean[[1]])
provinsi <- make.unique(provinsi)
data_num <- data_clean[, -1]
data_num <- data.frame(
lapply(data_num, function(x) {
x <- gsub(",", ".", x)
as.numeric(x)
})
)
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
rownames(data_num) <- provinsi
colSums(is.na(data_num))
## X2 X3 X4 X5 X6 X7 X8
## 4 4 4 4 4 4 4
data_num_imp <- data_num
data_num_imp[] <- lapply(data_num_imp, function(x) {
x[is.na(x)] <- mean(x, na.rm = TRUE)
x
})
any(is.na(data_num_imp))
## [1] FALSE
summary(data_num_imp)
## X2 X3 X4 X5
## Min. :69.91 Min. :70.72 Min. :60.64 Min. :68.83
## 1st Qu.:73.66 1st Qu.:74.49 1st Qu.:65.59 1st Qu.:72.46
## Median :74.50 Median :75.33 Median :67.33 Median :73.44
## Mean :74.61 Mean :75.68 Mean :67.33 Mean :73.61
## 3rd Qu.:75.44 3rd Qu.:76.94 3rd Qu.:69.25 3rd Qu.:74.49
## Max. :80.67 Max. :81.39 Max. :74.62 Max. :79.38
## X6 X7 X8
## Min. :71.73 Min. :72.31 Min. :70.21
## 1st Qu.:74.66 1st Qu.:75.92 1st Qu.:72.88
## Median :76.47 Median :77.24 Median :74.03
## Mean :76.51 Mean :77.24 Mean :74.32
## 3rd Qu.:78.67 3rd Qu.:78.42 3rd Qu.:75.66
## Max. :81.71 Max. :81.88 Max. :79.41
data_scaled <- scale(data_num_imp)
dist_matrix <- dist(data_scaled, method = "euclidean")
fviz_nbclust(data_num_imp, FUNcluster = kmeans, method = "silhouette")
fviz_nbclust(data_num_imp, FUNcluster = kmeans, method = "wss")
untuk kriteria koefisien silhoutte dan WSS gerombol terbaik yg dipilih
ada k=2
mds_result <- cmdscale(dist_matrix, k = 2, eig = TRUE)
mds_coord <- as.data.frame(mds_result$points)
colnames(mds_coord) <- c("Dimensi1", "Dimensi2")
mds_coord
## Dimensi1 Dimensi2
## ACEH -6.265481e-01 -2.138679e-02
## SUMATERA UTARA -1.701302e+00 -7.324482e-01
## SUMATERA BARAT -1.255417e+00 3.121218e-01
## RIAU -5.334955e-01 -4.818931e-02
## JAMBI 1.276041e+00 2.442367e-02
## SUMATERA SELATAN -2.454651e-01 5.875955e-02
## BENGKULU -4.737575e+00 9.846295e-02
## LAMPUNG -6.412619e-01 2.968712e-01
## KEP. BANGKA BELITUNG -1.432087e+00 -1.389908e+00
## KEP. RIAU 2.573359e+00 6.569147e-01
## DKI JAKARTA -1.069366e+00 1.378350e+00
## JAWA BARAT -2.021725e+00 5.019240e-01
## JAWA TENGAH -2.508386e+00 -8.832304e-01
## DI YOGYAKARTA -1.711119e+00 1.059566e-01
## JAWA TIMUR -1.243794e+00 -2.751510e-01
## BANTEN -4.788961e+00 8.942340e-01
## BALI -1.810740e+00 1.207800e+00
## NUSA TENGGARA BARAT -3.364086e+00 -1.309883e+00
## NUSA TENGGARA TIMUR -1.959197e+00 -7.555409e-01
## KALIMANTAN BARAT -3.650115e-01 1.757135e-01
## KALIMANTAN TENGAH -2.529557e-01 -3.459222e-01
## KALIMANTAN SELATAN 2.359245e-01 5.254420e-01
## KALIMANTAN TIMUR 1.634451e+00 1.033442e+00
## KALIMANTAN UTARA 2.883235e+00 1.697169e+00
## SULAWESI UTARA 3.634845e+00 3.588038e-01
## SULAWESI TENGAH 3.431750e+00 -1.346855e-02
## SULAWESI SELATAN -3.951161e-01 -3.745197e-02
## SULAWESI TENGGARA 1.505968e+00 7.647669e-02
## GORONTALO 1.917908e+00 -2.112203e+00
## SULAWESI BARAT 2.009385e+00 7.021740e-01
## MALUKU 5.553515e+00 -2.363530e-01
## MALUKU UTARA 5.985194e+00 -7.823501e-01
## PAPUA BARAT 2.547029e+00 -1.114885e+00
## PAPUA BARAT DAYA -4.092146e-16 -4.843092e-16
## PAPUA -2.524995e+00 -4.666762e-02
## PAPUA SELATAN -4.054200e-16 -4.836041e-16
## PAPUA TENGAH -4.054200e-16 -4.836041e-16
## PAPUA PEGUNUNGAN -4.054200e-16 -4.836041e-16
#Visualisasi MDS
plot(mds_coord$Dimensi1, mds_coord$Dimensi2,
pch = 19, col = "blue",
main = "MDS Provinsi Berdasarkan Dimensi Makna Hidup (2021)",
xlab = "Dimensi 1",
ylab = "Dimensi 2")
text(mds_coord$Dimensi1, mds_coord$Dimensi2,
labels = rownames(mds_coord),
pos = 3, cex = 0.7)
Peta MDS menunjukkan adanya pola kedekatan antar provinsi berdasarkan
dimensi makna hidup. Provinsi yang berdekatan memiliki karakteristik
makna hidup yang serupa, sedangkan provinsi yang berjauhan menunjukkan
perbedaan yang lebih besar. Dimensi pertama menjadi sumbu utama pemisah
antar provinsi, sementara dimensi kedua berperan sebagai dimensi
pelengkap.
mds_smacof <- mds(dist_matrix)
mds_smacof$stresstol
## NULL
Berdasarkan kriteria Kruskal: Stress < 0.05 → sangat baik 0.05 ≤ Stress < 0.10 → baik 0.10 – 0.20 → cukup 0.20 → buruk
Hasil analisis MDS dua dimensi menghasilkan nilai stress sebesar 0.056, yang termasuk dalam kategori baik. Hal ini menunjukkan bahwa representasi dua dimensi mampu menggambarkan struktur jarak antar provinsi secara memadai.
eig <- mds_result$eig
proporsi_ragam <- eig / sum(eig)
proporsi_ragam[1:2]
## [1] 0.85569444 0.08511402
Berdasarkan eigenvalue hasil MDS, Dimensi 1 mampu menjelaskan 85,57% variasi data dan Dimensi 2 menjelaskan 8,51%. Secara kumulatif, dua dimensi tersebut telah menjelaskan lebih dari 94% variasi data, sehingga penggunaan dua dimensi dianggap sangat memadai.
Berdasarkan hasil analisis Multi-Dimensional Scaling (MDS) terhadap data Dimensi Makna Hidup Indeks Kebahagiaan 2021, diperoleh bahwa provinsi di Indonesia memiliki pola kedekatan yang berbeda-beda berdasarkan karakteristik makna hidup masyarakatnya. Pemetaan dua dimensi mampu merepresentasikan struktur kedekatan antar provinsi dengan baik, yang ditunjukkan oleh nilai stress sebesar 0,056 dan proporsi ragam yang dijelaskan lebih dari 94%. Provinsi yang berada pada posisi berdekatan pada peta MDS memiliki profil dimensi makna hidup yang relatif serupa, sedangkan provinsi yang terpisah jauh menunjukkan karakteristik yang berbeda. Dengan demikian, metode MDS efektif digunakan untuk memvisualisasikan dan memahami pola kemiripan antar provinsi berdasarkan indikator makna hidup secara ringkas dan informatif.