Library

Berikut adalah Packages yang digunakan

library(readxl)
library(cluster)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(plotly)
## Warning: package 'plotly' was built under R version 4.2.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Input Data

Data yang digunakan merupakan data sekunder yang diperoleh dari Susenas (Survey Sosial Ekonomi Nasional) yang dilakukan pada tahun 2019.

library(readxl)
data<- read_xlsx("C:/SEM6/DC/DC_K14/DC_K14_Data.xlsx")
str(data)
## tibble [27 × 7] (S3: tbl_df/tbl/data.frame)
##  $ Kota/Kab: chr [1:27] "Kabupaten Bandung" "Kabupaten Bandung Barat" "Kabupaten Bekasi" "Kabupaten Bogor" ...
##  $ A       : num [1:27] 54.4 45 60.8 59 59.1 ...
##  $ B       : num [1:27] 18.45 6.87 12.87 9.52 13.99 ...
##  $ C       : num [1:27] 16.5 8.4 23.4 11.4 16.6 ...
##  $ D       : num [1:27] 4.85 1.53 8.77 7.62 3.11 ...
##  $ E       : num [1:27] 81.6 77.1 77.8 75.2 75.6 ...
##  $ F       : num [1:27] 4.85 3.05 2.34 1.9 4.15 ...

Eksplorasi Data

Sebaran Persentase Penggunaan PKH pada kebutuhan Pangan di Provinsi Jawa Barat

library(ggplot2)
ggplot(data) +
  aes(x = A) +
  geom_histogram(bins = 30L, fill = "#112446") +
  labs(
    x = "Persentase Penggunaan PKH pada Jenis Pangan (%)",
    y = "Frekuensi",
    title = "Sebaran Persentase Penggunaan PKH pada Jenis Pangan di Provinsi Jawa Barat"
  ) +
  theme_minimal()

Pada Histogram di atas dapat dilihat sebaran menyebar simetris, artinya sebagian besar kota/kabupaten di Jawa Barat memiliki persentase penggunaan PKH pada kebutuhan pangan tidak terlalu tinggi dan tidak terlalu rendah, sehingga memiliki median sama dengan rataannya.

Sebaran Persentase Penggunaan PKH pada Jenis Perumahan dan Fasilitas di Provinsi Jawa Barat

ggplot(data) +
  aes(x = B) +
  geom_histogram(bins = 30L, fill = "#EF562D") +
  labs(
    x = "Persentase Penggunaan PKH pada Jenis Perumahan dan Fasilitas (%)",
    y = "Frekuensi",
    title = "Sebaran Persentase Penggunaan PKH pada Jenis Perumahan dan Fasilitas di Provinsi Jawa Barat"
  ) +
  theme_minimal()

Pada Histogram di atas dapat dilihat sebaran menjulur ke kanan, artinya banyak kota/kabupaten di Jawa Barat yang memiliki persentase penggunaan PKH pada kebutuhan perumahan yang rendah sehingga memiliki median lebih kecil dari rataannya.

Sebaran Persentase Penggunaan PKH pada Jenis Pengobatan di Provinsi Jawa Barat

ggplot(data) +
  aes(x = C) +
  geom_histogram(bins = 30L, fill = "#619E61") +
  labs(
    x = "Persentase Penggunaan PKH pada Jenis Pengobatan (%)",
    y = "Frekuensi",
    title = "Sebaran Persentase Penggunaan PKH pada Jenis Pengobatan di Provinsi Jawa Barat"
  ) +
  theme_minimal()

Pada Histogram di atas dapat dilihat sebaran menyebar simetris, artinya sebagian besar kota/kabupaten di Jawa Barat memiliki persentase penggunaan PKH pada kebutuhan pengobatan tidak terlalu tinggi dan tidak terlalu rendah, sehingga memiliki median sama dengan rataannya.

Sebaran Persentase Penggunaan PKH pada Jenis Perawatan Ibu Hamil di Provinsi Jawa Barat

ggplot(data) +
  aes(x = D) +
  geom_histogram(bins = 30L, fill = "#ED7070") +
  labs(
    x = "Persentase Penggunaan PKH pada Jenis Perawatan Ibu Hamil (%)",
    y = "Frekuensi",
    title = "Sebaran Persentase Penggunaan PKH pada Jenis Perawatan Ibu Hamil di Provinsi Jawa Barat"
  ) +
  theme_minimal()

Pada Histogram di atas dapat dilihat sebaran menjulur ke kanan, artinya banyak kota/kabupaten di Jawa Barat yang memiliki persentase penggunaan PKH pada kebutuhan perawatan ibu hamil yang rendah sehingga memiliki median lebih kecil dari rataannya.

Sebaran Persentase Penggunaan PKH pada Jenis Sekolah di Provinsi Jawa Barat

ggplot(data) +
  aes(x = E) +
  geom_histogram(bins = 30L, fill = "#B08E64") +
  labs(
    x = "Persentase Penggunaan PKH pada Jenis Sekolah (%)",
    y = "Frekuensi",
    title = "Sebaran Persentase Penggunaan PKH pada Jenis Sekolah di Provinsi Jawa Barat"
  ) +
  theme_minimal()

Pada Histogram di atas dapat dilihat sebaran menjulur ke kiri, artinya banyak kota/kabupaten di Jawa Barat yang memiliki persentase penggunaan PKH pada kebutuhan sekolah yang tinggi sehingga memiliki median lebih besar dari rataannya.

Sebaran Persentase Penggunaan PKH pada Jenis Lainnya di Provinsi Jawa Barat

ggplot(data) +
  aes(x = F) +
  geom_histogram(bins = 30L, fill = "#9D8BD4") +
  labs(
    x = "Persentase Penggunaan PKH pada Jenis Lainnya (%)",
    y = "Frekuensi",
    title = "Sebaran Persentase Penggunaan PKH pada Jenis Lainnya di Provinsi Jawa Barat"
  ) +
  theme_minimal()

Pada Histogram di atas dapat dilihat sebaran menjulur ke kanan, artinya banyak kota/kabupaten di Jawa Barat yang memiliki persentase penggunaan PKH pada kebutuhan lainnya yang rendah sehingga memiliki median lebih kecil dari rataannya.

Sebaran Persentase Penggunaan PKH pada tiap Jenis di Provinsi Jawa Barat

data2<- read_xlsx("C:/SEM6/DC/DC_K14/DC_K14_Data.xlsx", sheet=2)
boxplot_gabungan <- ggplot(data2, aes(x = Jenis, y = Nilai,
color = Jenis))
boxplot_gabungan + geom_boxplot() + geom_jitter(alpha = .5) + scale_x_discrete()

Pada Boxplot di atas dapat dilihat bahwa terdapat beberapa data yang terlihat sebagai pencilan. Maka dari itu, pada penggerombolan digunakan metode K-medoids.

Menentukan Jumlah Cluster

library(readxl)
library(cluster)
library(factoextra)
library(plotly)

Elbow Method

data.ok<-data[,2:7]
wss.kmed<-fviz_nbclust(data.ok, FUNcluster = pam, method = "wss")
wss.kmed

Berdasarkan plot di atas, dapat dilihat bahwa k=2 adalah jumlah kelompok yang optimum.

Metode Silhouette

fviz_nbclust(data.ok, FUNcluster = pam, method = "silhouette")

Berdasarkan plot di atas, dapat dilihat bahwa k=2 adalah jumlah kelompok yang optimum.

Metode Gap Statistic

fviz_nbclust(data.ok, FUNcluster = pam, method = "gap_stat")

Berdasarkan plot di atas, dapat dilihat bahwa k=1 adalah jumlah kelompok yang optimum.

Berdasarkan ketiga metode, dua dari tiga metode menunjukkan bahwa k = 2 adalah jumlah kelompok yang optimal. Jadi, yang terpilih adalah k=2

Cluster k=2

clustering_kmed2 <- pam(data.ok,2)
clustering_kmed2
## Medoids:
##      ID        A        B         C        D        E        F
## [1,]  8 59.29204 15.92920 12.389381 2.654867 76.10619 2.654867
## [2,] 16 72.94118 15.29412  5.882353 1.176471 64.70588 1.176471
## Clustering vector:
##  [1] 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 2 1 2 1 1 2 1 1 1 2 1 2
## Objective function:
##    build     swap 
## 12.64153 12.64153 
## 
## Available components:
##  [1] "medoids"    "id.med"     "clustering" "objective"  "isolation" 
##  [6] "clusinfo"   "silinfo"    "diss"       "call"       "data"
fviz_cluster(clustering_kmed2,data.ok)

Kota/Kabupaten pada masing-masing cluster

data.frame(data$`Kota/Kab`, clustering_kmed2$cluster)
##            data..Kota.Kab. clustering_kmed2.cluster
## 1        Kabupaten Bandung                        1
## 2  Kabupaten Bandung Barat                        1
## 3         Kabupaten Bekasi                        1
## 4          Kabupaten Bogor                        1
## 5         Kabupaten Ciamis                        1
## 6        Kabupaten Cianjur                        1
## 7        Kabupaten Cirebon                        1
## 8          Kabupaten Garut                        1
## 9      Kabupaten Indramayu                        1
## 10      Kabupaten Karawang                        2
## 11      Kabupaten Kuningan                        1
## 12    Kabupaten Majalengka                        2
## 13   Kabupaten Pangandaran                        1
## 14    Kabupaten Purwakarta                        1
## 15        Kabupaten Subang                        1
## 16      Kabupaten Sukabumi                        2
## 17      Kabupaten Sumedang                        1
## 18   Kabupaten Tasikmalaya                        2
## 19            Kota Bandung                        1
## 20             Kota Banjar                        1
## 21             Kota Bekasi                        2
## 22              Kota Bogor                        1
## 23             Kota Cimahi                        1
## 24            Kota Cirebon                        1
## 25              Kota Depok                        2
## 26           Kota Sukabumi                        1
## 27        Kota Tasikmalaya                        2

Agregasi Data

aggregate(data.ok, by=list(cluster=clustering_kmed2$cluster ), FUN = mean)
##   cluster        A        B         C        D        E        F
## 1       1 55.51009 12.37671 10.121920 3.420407 77.61115 3.002385
## 2       2 71.26216 15.28162  8.611107 3.050536 63.08880 1.715573

Cluster 1 berisi Kota/Kabupaten dengan rata-rata pengguna PKH pada jenis obat, sekolah, dan lainnya yang besar. Cluster 2 berisi Kota/Kabupaten dengan rata-rata pengguna PKH pada jenis pangan dan perumahan yang besar. Kedua cluster memiliki rata-rata pengguna PKH pada jenis perawatan ibu hamil yang sama besar.