data_komponen_IPM <- read_excel("D:/PKL/LAPORAN PKL/[Metode Baru] DATA Indeks Pembangunan Manusia Menurut Kabupaten_Kota, 2024.xlsx")
View(data_komponen_IPM)
Data<-data_komponen_IPM[,c(1:4)]
Data
## # A tibble: 35 × 4
## Kabupaten_Kota UHH RLS Pengeluaran_per_Kapita
## <chr> <dbl> <dbl> <dbl>
## 1 3301 Kabupaten Cilacap 74.6 7.4 11868
## 2 3302 Kabupaten Banyumas 74.3 7.91 12960
## 3 3303 Kabupaten Purbalingga 73.6 7.36 11343
## 4 3304 Kabupaten Banjarnegara 74.7 6.87 10595
## 5 3305 Kabupaten Kebumen 74.0 7.87 10176
## 6 3306 Kabupaten Purworejo 75.5 8.65 11584
## 7 3307 Kabupaten Wonosobo 72.4 6.9 11980
## 8 3308 Kabupaten Magelang 74.4 7.83 10926
## 9 3309 Kabupaten Boyolali 76.4 8.17 14195
## 10 3310 Kabupaten Klaten 77.3 9.29 13513
## # ℹ 25 more rows
colnames(data_komponen_IPM)
## [1] "Kabupaten_Kota" "UHH" "RLS"
## [4] "Pengeluaran_per_Kapita"
describe(Data)
## vars n mean sd median trimmed mad
## Kabupaten_Kota* 1 35 18.00 10.25 18.00 18.00 13.34
## UHH 2 35 75.45 1.83 75.24 75.56 1.78
## RLS 3 35 8.32 1.38 7.87 8.18 0.86
## Pengeluaran_per_Kapita 4 35 12463.20 1818.02 11830.00 12245.62 1375.85
## min max range skew kurtosis se
## Kabupaten_Kota* 1.00 35.00 34.00 0.00 -1.30 1.73
## UHH 70.29 78.26 7.97 -0.50 0.15 0.31
## RLS 6.41 11.48 5.07 0.98 0.00 0.23
## Pengeluaran_per_Kapita 10017.00 17096.00 7079.00 0.99 0.33 307.30
Kabupaten_Kota <- data_komponen_IPM$Kabupaten_Kota
Data <- data_komponen_IPM %>%
dplyr::select(
UHH,
RLS,
Pengeluaran_per_Kapita
)
stopifnot(length(Kabupaten_Kota) == nrow(Data))
par(mfrow = c(2, 2))
for (i in 1:ncol(Data)) {
var_name <- colnames(Data)[i]
b <- boxplot(Data[[i]], main = var_name, ylab =
"Jumlah", col = "skyblue", outline = TRUE)
outlier_values <- b$out
outlier_indices <- which(Data[[i]] %in%
outlier_values & !is.na(Data[[i]]))
if (length(outlier_indices) > 0) {
print(paste("Outlier untuk", var_name, ":"))
print(Kabupaten_Kota[outlier_indices])
text(x = rep(1.1, length(outlier_indices)),
y = Data[[i]][outlier_indices],
labels = Kabupaten_Kota[outlier_indices],
pos = 4, cex = 0.9, col = "red", offset =
0.5)
}
}
## [1] "Outlier untuk UHH :"
## [1] "3329 Kabupaten Brebes"
## [1] "Outlier untuk Pengeluaran_per_Kapita :"
## [1] "3373 Kota Salatiga" "3374 Kota Semarang"
Kesimpulan :
Dari output grafik Box-Plot dapat disimpulkan bahwa terdapat variabel yang memiliki outlier, yaitu variabel Umur Harapan Hidup (UHH) dan Pengeluaran per Kapita.
Data_VIF <- Data
dummy_y <- rnorm(nrow(Data_VIF))
Model_VIF <- lm(dummy_y~.,data=Data_VIF)
# Nilai VIF
vif(Model_VIF)
## UHH RLS Pengeluaran_per_Kapita
## 2.453590 4.865981 2.960606
Kesimpulan :
Berdasarkan output nilai VIF, diperoleh nilai VIF (2.45359) < 10 untuk X1, VIF (4.865981) < 10 untuk X2, VIF (2.960606) < 10 untuk X3, artinya tidak terjadi Multikolinearitas atau tidak ada hubungan antara variabel X1, X2, dan X3. Sehingga dapat disimpulkan Asumsi Non-Multikolinearitas terpenuhi.
# Bertujuan untuk menyetarakan skala antar variabel (dengan nilai rata-rata = 0 dan standar deviasi = 1) agar tidak terjadi dominasi oleh variabel yang memiliki satuan lebih besar.
Data_scaled <- scale(Data)
Data_scaled
## UHH RLS Pengeluaran_per_Kapita
## [1,] -0.48143399 -0.66954128 -0.32738914
## [2,] -0.60742695 -0.29872800 0.27326433
## [3,] -1.03470744 -0.69862467 -0.61616485
## [4,] -0.43213239 -1.05489625 -1.02760148
## [5,] -0.81558924 -0.32781140 -1.25807200
## [6,] 0.03349378 0.23931479 -0.48360305
## [7,] -1.67015022 -1.03308370 -0.26578366
## [8,] -0.54716945 -0.35689479 -0.84553527
## [9,] 0.54294359 -0.10968594 0.95257480
## [10,] 1.01404772 0.70464909 0.57744140
## [11,] 1.40298253 1.22815018 0.16215444
## [12,] 0.76206179 -0.46595752 -1.00614957
## [13,] 1.34820298 0.68283655 0.14785316
## [14,] 0.40051677 -0.32054055 0.78480987
## [15,] -0.11441100 -0.74952061 -0.50340481
## [16,] -0.33352920 -0.77133316 -0.84553527
## [17,] -0.26231579 -0.42960328 -0.34829101
## [18,] 0.60867905 -0.36416564 -0.34884105
## [19,] 0.89353271 0.74827418 0.03839342
## [20,] 0.41695063 -0.03697746 -0.40384595
## [21,] 0.18687652 -0.02970661 -0.47975271
## [22,] 0.37860495 -0.11695679 0.50263475
## [23,] 0.27452380 -0.57502025 -1.06940520
## [24,] -0.39378671 -0.42233243 0.44762985
## [25,] -0.22944806 -0.90220843 -0.84938561
## [26,] -0.79367742 -0.61137449 -0.41924732
## [27,] -0.79915537 -1.28029255 -1.34552978
## [28,] -1.80162113 -0.69862467 -0.82023302
## [29,] -2.82599871 -1.38935528 -0.59086260
## [30,] 1.14004069 2.26061067 0.63574660
## [31,] 1.34272502 2.12973540 2.10547743
## [32,] 1.53993140 2.29696492 2.54826685
## [33,] 1.52897549 1.98431843 2.48996166
## [34,] -0.35544102 0.74100333 1.14619204
## [35,] -0.31709534 0.69737824 1.04223278
## attr(,"scaled:center")
## UHH RLS Pengeluaran_per_Kapita
## 75.448857 8.320857 12463.200000
## attr(,"scaled:scale")
## UHH RLS Pengeluaran_per_Kapita
## 1.825499 1.375355 1818.019960
# 1. Metode Silhouette
fviz_nbclust(Data_scaled, pam, method = "silhouette")
# 2. Metode Elbow
fviz_nbclust(Data_scaled, pam, method = "wss")
Interpretasi :
Berdasarkan output grafik Metode Silhouette, terlihat bahwa nilai silhouette tertinggi terjadi saat k = 2, sehingga dapat disimpulkan bahwa jumlah cluster (k) optimal dengan metode Silhouette adalah 2. Sedangkan pada output grafik Metode Elbow, terlihat bahwa penurunan SSE tajam terjadi pada k = 1 ke k = 2 serta k = 2 ke k = 3. Setelah k = 3, penurunan mulai melandai, sehingga siku terbentuk pada saat k = 3. Jadi, dapat disimpulkan bahwa jumlah cluster (k) optimal dengan metode Elbow adalah 3.
pam.result_2<-pam(Data_scaled,2)
pam.result_3<-pam(Data_scaled,3)
print(pam.result_2)
## Medoids:
## ID UHH RLS Pengeluaran_per_Kapita
## [1,] 16 -0.3335292 -0.7713332 -0.8455353
## [2,] 10 1.0140477 0.7046491 0.5774414
## Clustering vector:
## [1] 1 1 1 1 1 1 1 1 2 2 2 1 2 2 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 2 2 2 2 2 2
## Objective function:
## build swap
## 1.048122 1.044303
##
## Available components:
## [1] "medoids" "id.med" "clustering" "objective" "isolation"
## [6] "clusinfo" "silinfo" "diss" "call" "data"
print(pam.result_3)
## Medoids:
## ID UHH RLS Pengeluaran_per_Kapita
## [1,] 16 -0.3335292 -0.7713332 -0.8455353
## [2,] 22 0.3786049 -0.1169568 0.5026347
## [3,] 31 1.3427250 2.1297354 2.1054774
## Clustering vector:
## [1] 1 2 1 1 1 2 1 1 2 2 2 1 2 2 1 1 1 2 2 2 1 2 1 2 1 1 1 1 1 3 3 3 3 2 2
## Objective function:
## build swap
## 0.8683687 0.8470971
##
## Available components:
## [1] "medoids" "id.med" "clustering" "objective" "isolation"
## [6] "clusinfo" "silinfo" "diss" "call" "data"
# Menghitung Davies-Bouldin Index menggunakan fungsi dari clusterSim
# Semakin kecil nilai DBI, semakin baik pemisahan antar klaster
dist_matrix <- dist(Data_scaled)
DBI_Medo2 <- index.DB(Data_scaled, pam.result_2$clustering, centrotypes = "medoids", d = dist_matrix)
DBI_Medo3 <- index.DB(Data_scaled, pam.result_3$clustering, centrotypes = "medoids", d = dist_matrix)
DBI_Medo2$DB
## [1] 1.02959
DBI_Medo3$DB
## [1] 1.03396
Interpretasi :
Dari hasil output dapat ditarik kesimpulan bahwa banyak klaster optimal adalah 2 karena memiliki nilai Davies Bouldin Index (1.02959) lebih rendah dibandingkan banyak klaster 3 (1.03396).
df.cluster_2<-data.frame(data_komponen_IPM,pam.result_2$clustering)
df.cluster_2
## Kabupaten_Kota UHH RLS Pengeluaran_per_Kapita
## 1 3301 Kabupaten Cilacap 74.57 7.40 11868
## 2 3302 Kabupaten Banyumas 74.34 7.91 12960
## 3 3303 Kabupaten Purbalingga 73.56 7.36 11343
## 4 3304 Kabupaten Banjarnegara 74.66 6.87 10595
## 5 3305 Kabupaten Kebumen 73.96 7.87 10176
## 6 3306 Kabupaten Purworejo 75.51 8.65 11584
## 7 3307 Kabupaten Wonosobo 72.40 6.90 11980
## 8 3308 Kabupaten Magelang 74.45 7.83 10926
## 9 3309 Kabupaten Boyolali 76.44 8.17 14195
## 10 3310 Kabupaten Klaten 77.30 9.29 13513
## 11 3311 Kabupaten Sukoharjo 78.01 10.01 12758
## 12 3312 Kabupaten Wonogiri 76.84 7.68 10634
## 13 3313 Kabupaten Karanganyar 77.91 9.26 12732
## 14 3314 Kabupaten Sragen 76.18 7.88 13890
## 15 3315 Kabupaten Grobogan 75.24 7.29 11548
## 16 3316 Kabupaten Blora 74.84 7.26 10926
## 17 3317 Kabupaten Rembang 74.97 7.73 11830
## 18 3318 Kabupaten Pati 76.56 7.82 11829
## 19 3319 Kabupaten Kudus 77.08 9.35 12533
## 20 3320 Kabupaten Jepara 76.21 8.27 11729
## 21 3321 Kabupaten Demak 75.79 8.28 11591
## 22 3322 Kabupaten Semarang 76.14 8.16 13377
## 23 3323 Kabupaten Temanggung 75.95 7.53 10519
## 24 3324 Kabupaten Kendal 74.73 7.74 13277
## 25 3325 Kabupaten Batang 75.03 7.08 10919
## 26 3326 Kabupaten Pekalongan 74.00 7.48 11701
## 27 3327 Kabupaten Pemalang 73.99 6.56 10017
## 28 3328 Kabupaten Tegal 72.16 7.36 10972
## 29 3329 Kabupaten Brebes 70.29 6.41 11389
## 30 3371 Kota Magelang 77.53 11.43 13619
## 31 3372 Kota Surakarta 77.90 11.25 16291
## 32 3373 Kota Salatiga 78.26 11.48 17096
## 33 3374 Kota Semarang 78.24 11.05 16990
## 34 3375 Kota Pekalongan 74.80 9.34 14547
## 35 3376 Kota Tegal 74.87 9.28 14358
## pam.result_2.clustering
## 1 1
## 2 1
## 3 1
## 4 1
## 5 1
## 6 1
## 7 1
## 8 1
## 9 2
## 10 2
## 11 2
## 12 1
## 13 2
## 14 2
## 15 1
## 16 1
## 17 1
## 18 1
## 19 2
## 20 1
## 21 1
## 22 2
## 23 1
## 24 1
## 25 1
## 26 1
## 27 1
## 28 1
## 29 1
## 30 2
## 31 2
## 32 2
## 33 2
## 34 2
## 35 2
table(pam.result_2$clustering,data_komponen_IPM$Kabupaten_Kota)
##
## 3301 Kabupaten Cilacap 3302 Kabupaten Banyumas 3303 Kabupaten Purbalingga
## 1 1 1 1
## 2 0 0 0
##
## 3304 Kabupaten Banjarnegara 3305 Kabupaten Kebumen 3306 Kabupaten Purworejo
## 1 1 1 1
## 2 0 0 0
##
## 3307 Kabupaten Wonosobo 3308 Kabupaten Magelang 3309 Kabupaten Boyolali
## 1 1 1 0
## 2 0 0 1
##
## 3310 Kabupaten Klaten 3311 Kabupaten Sukoharjo 3312 Kabupaten Wonogiri
## 1 0 0 1
## 2 1 1 0
##
## 3313 Kabupaten Karanganyar 3314 Kabupaten Sragen 3315 Kabupaten Grobogan
## 1 0 0 1
## 2 1 1 0
##
## 3316 Kabupaten Blora 3317 Kabupaten Rembang 3318 Kabupaten Pati
## 1 1 1 1
## 2 0 0 0
##
## 3319 Kabupaten Kudus 3320 Kabupaten Jepara 3321 Kabupaten Demak
## 1 0 1 1
## 2 1 0 0
##
## 3322 Kabupaten Semarang 3323 Kabupaten Temanggung 3324 Kabupaten Kendal
## 1 0 1 1
## 2 1 0 0
##
## 3325 Kabupaten Batang 3326 Kabupaten Pekalongan 3327 Kabupaten Pemalang
## 1 1 1 1
## 2 0 0 0
##
## 3328 Kabupaten Tegal 3329 Kabupaten Brebes 3371 Kota Magelang
## 1 1 1 0
## 2 0 0 1
##
## 3372 Kota Surakarta 3373 Kota Salatiga 3374 Kota Semarang
## 1 0 0 0
## 2 1 1 1
##
## 3375 Kota Pekalongan 3376 Kota Tegal
## 1 0 0
## 2 1 1
fviz_cluster(pam.result_2, data = Data_scaled)
Keterangan : Dari output grafik, dapat diketahui anggota dari masing-masing cluster secara visual.
profiling <- Data %>% mutate(Cluster = pam.result_2$clustering) %>% group_by(Cluster) %>% summarise(across(where(is.numeric), .fns = list(median = ~median(.), sd = ~sd(.)), .names = "{.col}_{.fn}"), jumlah = n())
print(profiling)
## # A tibble: 2 × 8
## Cluster UHH_median UHH_sd RLS_median RLS_sd Pengeluaran_per_Kapita_median
## <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 74.7 1.51 7.51 0.549 11468.
## 2 2 77.3 1.20 9.34 1.27 13890
## # ℹ 2 more variables: Pengeluaran_per_Kapita_sd <dbl>, jumlah <int>
Interpretasi :
Karakteristik dari masing-masing cluster adalah sebagai berikut.
Cluster 1
Cluster 1 memiliki median Umur Harapan Hidup (UHH) sebesar 74.7 tahun, Rata-rata Lama Sekolah (RLS) sebesar 7.51 tahun, dan Pengeluaran per Kapita sebesar 11.468. Ketiga indikator ini lebih rendah dibandingkan Cluster 2. Kondisi ini menunjukkan bahwa wilayah dalam Cluster 1 memiliki tingkat pembangunan manusia yang relatif lebih rendah dan masih perlu ditingkatkan baik dari sisi kualitas kesehatan, akses pendidikan, maupun kesejahteraan ekonomi. Cluster 1 memiliki 22 anggota, terdiri dari Kabupaten Cilacap, Kabupaten Banyumas, Kabupaten Purbalingga, Kabupaten Banjarnegara, Kabupaten Kebumen, Kabupaten Purworejo, Kabupaten Wonosobo, Kabupaten Wonogiri, Kabupaten Grobogan, Kabupaten Blora, Kabupaten Rembang, Kabupaten Pati, Kabupaten Jepara, Kabupaten Demak, Kabupaten Temanggung, Kabupaten Kendal, Kabupaten Batang, Kabupaten Pekalongan, Kabupaten Pemalang, Kabupaten Tegal, dan Kabupaten Brebes.
Cluster 2
Pada Cluster 2 nilai median Umur Harapan Hidup (UHH) sebesar 77.3 tahun dan median Rata-rata Lama Sekolah (RLS) sebesar 9.34 tahun menunjukkan kondisi yang lebih baik dibandingkan Cluster 1. Selain itu, median Pengeluaran per Kapita sebesar 13.890 juga lebih tinggi dibandingkan Cluster 1. Hal ini menunjukkan bahwa wilayah dalam Cluster 2 memiliki capaian yang lebih baik pada tiga dimensi utama pembangunan manusia dan dapat dikategorikan sebagai kelompok wilayah dengan tingkat pembangunan manusia yang relatif lebih maju dibandingkan Cluster 1. Cluster 2 memiliki 13 anggota, yaitu Kabupaten Boyolali, Kabupaten Klaten, Kabupaten Sukoharjo, Kabupaten Karanganyar, Kabupaten Sragen, Kabupaten Kudus, Kabupaten Semarang, Kota Magelang, Kota Surakarta, Kota Salatiga, Kota Semarang, Kota Pekalongan, dan Kota Tegal.