Packages
lapply(c("readxl","factoextra","FactoMineR","ggplot2","hrbrthemes","gridExtra","ggradar","dplyr","scales"),library,character.only=T)[[1]]
## [1] "readxl" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
Data
r<-read_excel("C:/Users/falco/Documents/R/BARU/Jamkes Jawa.xlsx");str(r)
## tibble [113 × 7] (S3: tbl_df/tbl/data.frame)
## $ Kabupaten/Kota : chr [1:113] "Bogor" "Sukabumi" "Cianjur" "Bandung" ...
## $ Provinsi : chr [1:113] "JAWA BARAT" "JAWA BARAT" "JAWA BARAT" "JAWA BARAT" ...
## $ Penerima Bantuan Iuran (PBI) : chr [1:113] "28,84" "40,65" "36,64" "29,17" ...
## $ Non-Penerima Bantuan Iuran (Non-PBI): chr [1:113] "27,65" "12,52" "7,37" "20,06" ...
## $ Jamkesda : chr [1:113] "7,91" "4,54" "2,53" "7,08" ...
## $ Asuransi Swasta : chr [1:113] "0" "0" "0" "0" ...
## $ Perusahaan/Kantor : chr [1:113] "0" "0" "0" "0" ...
Pre-processing
komtik<-function(data,col.start=1){
for(i in col.start:ncol(data)){
data[,i]<-as.numeric(gsub(",",".",c(data[,i][[1]])))
}
data
}
k<-komtik(r,3);k<-data.frame(k);rownames(k)<-k$Kabupaten.Kota
k<-k[,3:7]
Ward Hieararchical Clustering
Screeplot
h<-hclust(dist(k),method="ward.D2")
fviz_nbclust(k,hcut,hc_method="ward.D2",method = "wss")

Dendogram
fviz_dend(h,5,lwd=1.2, k_colors = RColorBrewer::brewer.pal(11,"Spectral")[1:5])

Cluster Plot
fviz_cluster(eclust(k,"hclust",k=5))
## Warning: `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> =
## "none")` instead.

Data Agregat
c<-cutree(h,k=5)
k$Klaster<-c
rownames(k)[which(k$Klaster==1)]
## [1] "Bogor" "Sukabumi" "Cianjur" "Bandung"
## [5] "Garut" "Tasikmalaya" "Ciamis" "Majalengka"
## [9] "Indramayu" "Subang" "Purwakarta" "Bandung Barat"
## [13] "Kota Tasikmalaya" "Pacitan" "Ponorogo" "Trenggalek"
## [17] "Tulungagung" "Blitar" "Kediri" "Malang"
## [21] "Jember" "Situbondo" "Pasuruan" "Mojokerto"
## [25] "Madiun" "Magetan" "Gresik" "Bangkalan"
## [29] "Sampang" "Sumenep" "Banjarnegara" "Magelang"
## [33] "Wonogiri" "Sragen" "Blora" "Jepara"
## [37] "Tegal" "Pandeglang" "Tangerang" "Serang"
## [41] "Kota Serang"
rownames(k)[which(k$Klaster==2)]
## [1] "Kuningan" "Cirebon" "Sumedang" "Karawang"
## [5] "Kota Cirebon" "Bondowoso" "Probolinggo" "Jombang"
## [9] "Ngawi" "Bojonegoro" "Lamongan" "Pamekasan"
## [13] "Kota Probolinggo" "Kota Mojokerto" "Cilacap" "Banyumas"
## [17] "Purbalingga" "Kebumen" "Purworejo" "Wonosobo"
## [21] "Boyolali" "Klaten" "Sukoharjo" "Karanganyar"
## [25] "Rembang" "Pati" "Temanggung" "Batang"
## [29] "Pekalongan" "Pemalang" "Brebes" "Kota Magelang"
## [33] "Kota Surakarta" "Kota Pekalongan" "Kota Tegal" "Kulon Progo"
## [37] "Bantul" "Gunung Kidul" "Kota Yogyakarta" "Lebak"
rownames(k)[which(k$Klaster==3)]
## [1] "Bekasi" "Kota Banjar" "Lumajang"
## [4] "Tuban" "Kota Blitar" "Kota Pasuruan"
## [7] "Demak" "Semarang" "Kota Semarang"
## [10] "Kota Cilegon" "Kota Tangerang Selatan"
rownames(k)[which(k$Klaster==4)]
## [1] "Pangandaran" "Banyuwangi" "Nganjuk" "Grobogan" "Kendal"
rownames(k)[which(k$Klaster==5)]
## [1] "Kota Bogor" "Kota Sukabumi" "Kota Bandung" "Kota Bekasi"
## [5] "Kota Depok" "Kota Cimahi" "Sidoarjo" "Kota Kediri"
## [9] "Kota Malang" "Kota Madiun" "Kota Surabaya" "Kota Batu"
## [13] "Kudus" "Kota Salatiga" "Sleman" "Kota Tangerang"
ag<-aggregate(k[,-6], by=list(cluster=c), FUN = mean);ag
## cluster Penerima.Bantuan.Iuran..PBI. Non.Penerima.Bantuan.Iuran..Non.PBI.
## 1 1 33.81366 15.16537
## 2 2 48.75650 18.78700
## 3 3 37.47455 29.15909
## 4 4 38.51400 13.78800
## 5 5 32.15937 39.10000
## Jamkesda Asuransi.Swasta Perusahaan.Kantor
## 1 2.084146 0.1446341 1.185366
## 2 2.009500 0.3415000 1.721250
## 3 46.928182 1.0890909 2.597273
## 4 88.602000 0.2860000 1.016000
## 5 10.049375 1.0418750 2.783750
Radar-Chart
radar<-ag%>%group_by(cluster)%>%ungroup()%>%mutate_at(vars(-cluster), rescale)
colnames(radar)<-c("Klaster","PBI","Non-PBI","Jamkesda","Asuransi\nSwasta","Kantor")
radar$Klaster<-paste("Klaster",1:5)
radar%>%ggradar(fill=T)+theme_ipsum_rc()+theme(legend.position = c(1,0),
legend.justification = c(1,0),
legend.margin = margin(b=95, r=-85),
legend.background = element_blank(),
legend.key=element_rect(fill=NA, color=NA),
legend.text=element_text(colour = "black"))

PCA
Summary PCA
p<-prcomp(ag[,-1],scale=T);summary(p)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5
## Standard deviation 1.7551 1.042 0.8923 0.19666 1.372e-16
## Proportion of Variance 0.6161 0.217 0.1592 0.00773 0.000e+00
## Cumulative Proportion 0.6161 0.833 0.9923 1.00000 1.000e+00
Rotasi PCA
p$rotation
## PC1 PC2 PC3
## Penerima.Bantuan.Iuran..PBI. 0.2573415 0.49244428 0.817668427
## Non.Penerima.Bantuan.Iuran..Non.PBI. -0.5618578 0.04286161 0.009414452
## Jamkesda 0.1321801 -0.84639468 0.459364168
## Asuransi.Swasta -0.5422463 -0.14967487 0.276740401
## Perusahaan.Kantor -0.5537044 0.12990378 0.209114855
## PC4 PC5
## Penerima.Bantuan.Iuran..PBI. 0.1278713 0.07963204
## Non.Penerima.Bantuan.Iuran..Non.PBI. 0.8124504 0.14937978
## Jamkesda 0.1619902 -0.16996529
## Asuransi.Swasta -0.4827401 0.61150891
## Perusahaan.Kantor -0.2535634 -0.75399806
-
PC1 bisa buat ngeliat klaster yang jamkesda dan PBI-nya tinggi (golongan bawahnya banyak) sedangkan asuransi swasta, perusahaan/kantor, dan Non-PBI nya rendah (golongan atasnya sedikit) atau sebaliknya
-
PC2 bisa ngeliat klaster yang goglongan bawah tapi cukup banyak juga yang memiliki asuransi swasta (jamkesda dan asuransi swastanya tinggi), sedangkan pengguna BPJS baik PBI maupun Non-PBI serta pegawai kantornya sedikit (jamkes PBI,Non-PBI,perusahaan-kantornya rendah) atau sebaliknya
PCA-Biplot
fviz_pca_biplot(p,col.ind="x")

fviz_pca_biplot(p,col.ind="y")
