All of TPG for PSD

2022-11-30

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")