Pada akhir Desember 2019 wabah misterius yang ditandai dengan gejala klinis demam, batuk kering, kelelahan serta gejala gastrointestinal (pendarahan saluran pencernaan) dilaporkan pertama kali terjadi di Huanan, Provinsi Wuhan, China. Sekitar 66% pekerja di sana terinfeksi dan pada bulan berikutnya (Januari 2020) tercatat ribuan orang di China telah terpapar wabah ini (Wu et al, 2020). Wabah yang dinamai Coronavirus (COVID-19) oleh WHO selanjutnya menyebar ke berbagai negara seperti Thailand, Jepang, Korea, Vietnam, Jerman, Amerika Serika, termasuk Indonesia. Data epidemiolog Kementerian Kesehatan Indonesia menunjukkan bahwa sejak covid-19 diidentifikasi pertama kali di Indonesia pada tanggal 2 Maret 2020 hingga 15 September 2021, terdapat 4.178.164 kasus positif dan 139.682 kasus meninggal dunia. Tingginya angka kasus positif Covid-19 menjadi masalah yang tentunya memerlukan penanganan tepat dalam menghambat penyebaranya. Selain menerapkan PSBB dan PKMM, salah satu program Pemerintah yang diharapkan menjadi langkah preventif memutus penyebaran wabah ini adalah menggalakkan vaksinasi Covid-19. Vaksinasi adalah pemberian Vaksin dalam rangka menimbulkan atau meningkatkan kekebalan seseorang secara aktif terhadap suatu penyakit, sehingga apabila suatu saat terpajan dengan penyakit tersebut tidak akan sakit atau hanya mengalami sakit ringan dan tidak menjadi sumber penularan (covid19.go.id). Berdasarkan latar belakang tersebut, pada project ini akan dilakukan clustering atau penggerombolan untuk melihat pengaruh program vaksinasi yang telah dilakukan terhadap tingkat fatality rate.
Data vaksinasi terakhir yang digunakan merupakan total yang terpapar covid-19 sampai 15 September 2021. Beberapa Istilah yang digunakan dalam data:
Fatality Rate (FR) merupakan rasio jumlah pasien yang meninggal dengan jumlah kasus yang terkonfirmasi. Berdasarkan summary data, diperoleh rata-rata fatality rate sekitar 2,4. Fatality rate sebesar 2,4% menunjukkan bahwa dari setiap 100 orang yang terinfeksi oleh penyakit tersebut, sekitar 2,4 orang diperkirakan akan meninggal akibat penyakit itu. Ini memberikan gambaran tentang tingkat keparahan penyakit dan risiko kematian yang terkait. Angka fatality rate dapat mempengaruhi kebijakan kesehatan masyarakat dan keputusan tentang alokasi sumber daya. Jika FR tinggi, mungkin perlu ada upaya lebih besar untuk meningkatkan perawatan kesehatan dan pencegahan.
Recovery Rate (RR) merupakan rasio jumlah pasien sembuh dengan jumlah pasien yang terkonfirmasi.Dalam konteks covid-19, recovery rate yang tinggi menunjukkan bahwa sebagian besar orang yang terinfeksi virus SARS-CoV-2 ini dapat pulih dari wabah tersebut. Rata-rata recovery rate yang diperoleh dari data adalah sekitar 93% , menginterpretasikan bahwa dari 100 pasien yang terinfeksi covid-19, 93 di antaranya berhasil sembuh. Hal ini merupakan indikasi positif bahwa virus ini memiliki tingkat kesembuhan yang tinggi, terutama bagi sebagian besar populasi yang tidak memiliki komorbiditas atau faktor risiko lainnya.
BOR merupakan persentase penggunaan tempat tidur di rumah sakit dalam suatu periode tertentu. Indikator ini memberikan gambaran tentang seberapa efektif suatu rumah sakit dalam memanfaatkan kapasitas tempat tidurnya untuk merawat pasien.
library(sf)
library(tigris)
library(tidyverse)
library(ggrepel)
library(corrplot)
library(ggcorrplot)
library(reshape2)
covid <- readxl::read_xlsx('C:\\Users\\aripo\\Downloads\\analisis jabar\\covid jawa barat.xlsx')
covid <- as.data.frame(covid)
#fatality rate
covid$Fatality.Rate <- (covid$Meninggal/covid$Terkonfirmasi)*100
#recovery rate
covid$Recovery.Rate <- (covid$Sembuh/covid$Terkonfirmasi)*100
covid_new <- covid[,c('Fatality.Rate','Recovery.Rate','Vaksin.1','Vaksin.2','BOR')]
summary(covid_new)
## Fatality.Rate Recovery.Rate Vaksin.1 Vaksin.2
## Min. :0.4347 Min. :80.94 Min. :15.1 Min. : 6.40
## 1st Qu.:1.5095 1st Qu.:91.41 1st Qu.:22.3 1st Qu.:10.35
## Median :2.0012 Median :93.64 Median :33.6 Median :17.50
## Mean :2.3867 Mean :93.16 Mean :38.2 Mean :20.04
## 3rd Qu.:3.3558 3rd Qu.:95.09 3rd Qu.:51.4 3rd Qu.:25.40
## Max. :4.3650 Max. :98.82 Max. :75.5 Max. :48.70
## BOR
## Min. : 2.720
## 1st Qu.: 5.005
## Median : 9.360
## Mean : 9.910
## 3rd Qu.:12.970
## Max. :24.160
Degradasi warna pada map sebaran kasus covid-19 di Jawa Barat menunjukkan bahwa semakin pekat warnanya (merah) maka jumlah yang terkonfirmasi atau terpapar covid-19 semakin tinggi.Terlihat bahwa, daerah Kota Depok dan Kota Bekasi memiliki jumlah terkonfirmasi paling tinggi dibandingkan daerah lainnya. Hal ini disebabkan karena dua daerah tersebut dekat dengan Provinsi DKI Jakarta. Provinsi DKI Jakarta merupakan daerah dengan tingkat terkonfirmasi covid-19 paling tinggi di Indonesia, sehingga daerah disekitarnya juga cenderung memiliki tingkat terkonfirmasi covid-19 yang tinggi. Hal yang sama juga berlaku pada daerah Kab. Bogor, Kab. Bekasi, dan Karawang yang terletak lebih dekat dengan Provinsi DKI Jakarta, sehingga tiga daerah tersebut memiliki jumlah terkonfirmasi covid-19 yang cenderung lebih tinggi dibandingkan Kabupaten lainnya di Jawa Barat.
peta <- st_read("C:\\Users\\aripo\\Downloads\\analisis jabar\\Peta\\idn_admbnda_adm2_bps_20200401.shp")
data.peta <- geo_join(spatial_data=peta,
data_frame=covid, by_sp="ADM2_EN",
by_df="Kab.Kota", how = "inner")
data_points <- sf::st_point_on_surface(data.peta)
data_coords <- as.data.frame(sf::st_coordinates(data_points))
data_coords$nama <- data.peta$ADM2_EN
ggplot()+
geom_sf(data=data.peta,aes(fill=Terkonfirmasi))+
scale_fill_gradient(high = "#e34a33", low = "#fee8c8", guide = "colorbar") +
labs(title="Sebaran Kasus COVID-19 di Jawa Barat", x = '', y='') +
geom_text(data = data_coords, aes(X, Y, label = nama), size = 1.9)
Korelasi adalah ukuran statistik yang mencerminkan kekuatan dan arah hubungan antara dua variabel atau lebih. Dalam konteks ini, variabel dikatakan saling berkorelasi jika perubahan pada satu variabel diikuti oleh perubahan pada variabel lainnya. Korelasi dapat memberikan wawasan tentang bagaimana satu variabel berhubungan dengan yang lain, tetapi tidak menunjukkan hubungan sebab akibat.
Nilai korelasi menunjukkan adanya kecenderungan hubungan positif antara recovery rate (tingkat kesembuhan) dengan vaksin 1 (0.28) dan vaksin 2 (0.24). Ini berarti bahwa peningkatan jumlah vaksinasi cenderung berhubungan dengan peningkatan tingkat kesembuhan dari covid-19, meskipun hubungan ini tidak terlalu kuat. Meskipun ada hubungan positif, penting untuk dicatat bahwa angka ini tidak menunjukkan bahwa vaksin secara langsung menyebabkan peningkatan recovery rate. Faktor lain seperti perawatan medis, usia pasien, dan kondisi kesehatan sebelumnya juga dapat mempengaruhi hasil ini.
Disisi lain, Nilai korelasi menunjukkan adanya kecenderungan hubungan negatif antara fatality rate (tingkat kematian) dengan vaksin 1 (0.23) dan vaksin 2 (0.20). Ini berarti bahwa peningkatan jumlah vaksinasi cenderung berhubungan dengan penurunan tingkat kematian akibat covid-19. Meskipun ada hubungan negatif, sekali lagi, ini tidak membuktikan bahwa vaksin secara langsung mengurangi angka kematian. Banyak faktor lain seperti akses ke perawatan kesehatan dan karakteristik demografis juga mempengaruhi fatality rate.
korelasi <- cor(covid_new)
ggcorrplot(korelasi, hc.order = F, type = "lower",
lab = TRUE, outline.color = "white",
ggtheme = ggplot2::theme_gray,
colors = c("#E46726", "white", "#6D9EC1" ))
corrplot(korelasi)
Perbandingan karakteristik wilayah Kota dan wilayah Kabupaten dapat dilihat pada boxplot dibawah ini. Terlihat bahwa rataan fatality rate pada wilayah Kota lebih rendah dibandingkan dengan wilayah Kabupaten. Hal ini berkebalikan dengan rataan recovery rate yang menunjukkan wilayah Kabupaten lebih rendah dibandingkan wilayah Kota. Jika dilihat dari rataan vaksinasi 1 dan 2, terlihat bahwa wilayah Kabupaten lebih rendah dibandingkan wilayah Kota. Keadaan ini sesuai dengan korelasi sebelumnya, yaitu vaksinasi berhubungan positif dengan recovery rate dan berhubungan negatif dengan fatality rate.
#kota vs kab
covid$Wilayah <- ''
covid$Wilayah[1:18] <- 'Kab'
covid$Wilayah[19:27] <- 'Kota'
covid$Wilayah <- as.factor(covid$Wilayah)
data.melt <- melt(covid[,c('Fatality.Rate','Recovery.Rate','Vaksin.1','Vaksin.2','BOR','Wilayah')])
ggplot(data.melt) +
aes(x = variable, y = value, fill = Wilayah) +
labs(title="Karakteristik Wilayah Kota dan Kabupaten di Jawa Barat", x = '', y='') +
geom_boxplot() +
scale_fill_hue() +
theme_minimal()
Clustering adalah metode dalam analisis data yang digunakan untuk mengelompokkan sekumpulan objek atau data ke dalam kelompok-kelompok (cluster) berdasarkan kemiripan karakteristik di antara objek-objek tersebut. Dalam proses ini, objek yang berada dalam satu cluster memiliki tingkat kemiripan yang tinggi satu sama lain, sedangkan objek antar cluster memiliki kemiripan yang rendah.Complete linkage clustering adalah salah satu metode dalam analisis klaster hierarkis yang digunakan untuk mengelompokkan data berdasarkan jarak antara kluster. Metode ini juga dikenal sebagai farthest neighbor clustering karena mengukur jarak antara dua kluster berdasarkan jarak maksimum antara elemen-elemen yang paling tidak mirip dari masing-masing kluster.
Biplot adalah alat visualisasi yang digunakan dalam analisis data multivariat, terutama dalam konteks analisis komponen utama (PCA) atau analisis faktor. Biplot memungkinkan kita untuk melihat hubungan antara observasi dan variabel dalam satu grafik, memberikan wawasan yang lebih mendalam tentang struktur data.
Biplot memiliki dua sumbu yang mewakili dua komponen utama (PC1 dan PC2) dari analisis PCA. Sumbu ini menunjukkan variabilitas maksimum dalam data. PC1 mungkin menjelaskan 44,7% dari total varians, sementara PC2 menjelaskan 25,2%.
Titik yang berdekatan menunjukkan observasi dengan karakteristik serupa. Arah dan panjang vektor menentukan variabel mana yang paling berkontribusi terhadap perbedaan antara observasi. Dua vektor berdekatan menunjukkan bahwa variabel tersebut berkorelasi positif; jika berlawanan arah, mereka berkorelasi negatif.
data.new <- covid_new
library(magrittr)
#transformasi data
df <- data.new[,]%>%scale()
#head(df)
#struktur komponen utama
library(FactoMineR)
res.pca <- PCA(df,graph=F)
#grafik biplot
library(factoextra)
fviz_pca_biplot(res.pca)+theme_classic()
#persentase keragamanan berdasarkan nilai eigen
eig.val <- get_eigenvalue(res.pca)
eig.val
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 2.23334332 44.6668664 44.66687
## Dim.2 1.26030925 25.2061850 69.87305
## Dim.3 0.96325306 19.2650612 89.13811
## Dim.4 0.52139198 10.4278397 99.56595
## Dim.5 0.02170238 0.4340477 100.00000
#grafik persentase keragaman
fviz_eig(res.pca, addlabels = T)+theme_classic()
#clustering
library(NbClust)
data.clust <- covid[,c('Terkonfirmasi','Vaksin.1','Vaksin.2','BOR','Fatality.Rate','Recovery.Rate')]
rownames(data.clust) <- covid[,c('Kab.Kota')]
data.sd <- scale(data.clust)
NbClust(data = data.sd, diss = NULL, distance = "euclidean",
min.nc = 2, max.nc = 10, method = 'complete')
## *** : The Hubert index is a graphical method of determining the number of clusters.
## In the plot of Hubert index, we seek a significant knee that corresponds to a
## significant increase of the value of the measure i.e the significant peak in Hubert
## index second differences plot.
##
## *** : The D index is a graphical method of determining the number of clusters.
## In the plot of D index, we seek a significant knee (the significant peak in Dindex
## second differences plot) that corresponds to a significant increase of the value of
## the measure.
##
## *******************************************************************
## * Among all indices:
## * 4 proposed 2 as the best number of clusters
## * 9 proposed 3 as the best number of clusters
## * 3 proposed 5 as the best number of clusters
## * 2 proposed 6 as the best number of clusters
## * 1 proposed 8 as the best number of clusters
## * 4 proposed 10 as the best number of clusters
##
## ***** Conclusion *****
##
## * According to the majority rule, the best number of clusters is 3
##
##
## *******************************************************************
## $All.index
## KL CH Hartigan CCC Scott Marriot TrCovW TraceW
## 2 0.0883 7.0303 10.3881 -2.3104 38.9362 6403221.42 643.3382 121.7598
## 3 1.5608 9.7630 7.1347 -1.2168 95.2431 1790137.52 386.4808 86.0176
## 4 1.1571 10.3709 6.3000 -0.9398 142.3537 555891.54 238.2580 66.3062
## 5 1.7234 10.9844 4.1490 -0.2778 170.7607 303308.85 137.9088 52.0492
## 6 2.0641 10.7621 2.4538 -0.2548 198.6276 155599.86 104.2762 43.7908
## 7 0.5244 9.9288 3.6582 -0.8013 216.3652 109797.68 75.7558 39.2093
## 8 1.8764 10.0602 2.2490 -0.6423 235.4008 70858.26 45.7706 33.1465
## 9 0.5643 9.5928 3.5144 -1.0700 247.6065 57064.47 32.6231 29.6383
## 10 0.7259 9.9944 5.2745 -0.8230 278.2678 22630.57 27.6615 24.7968
## Friedman Rubin Cindex DB Silhouette Duda Pseudot2 Beale Ratkowsky
## 2 12.0177 1.2812 0.5158 1.2388 0.2065 0.6836 9.2550 1.6956 0.3102
## 3 45.1454 1.8136 0.4140 1.3288 0.2550 0.6193 4.9176 2.1022 0.3702
## 4 71.5022 2.3527 0.4268 1.1386 0.2922 0.4453 6.2285 3.9938 0.3678
## 5 78.3376 2.9972 0.4681 0.9630 0.3225 0.6756 4.8007 1.6791 0.3614
## 6 90.1043 3.5624 0.4655 1.0344 0.2779 1.3347 -0.5015 -0.6432 0.3447
## 7 104.4416 3.9787 0.4692 0.9390 0.2934 1.6708 -1.2045 -1.1585 0.3260
## 8 118.0004 4.7064 0.5112 0.8458 0.3322 1.8317 -0.4541 -0.8735 0.3132
## 9 123.7595 5.2635 0.4997 0.7510 0.3494 0.8318 0.2023 0.3891 0.2996
## 10 135.1223 6.2911 0.4947 0.6796 0.3923 0.5208 6.4418 3.0980 0.2896
## Ball Ptbiserial Frey McClain Dunn Hubert SDindex Dindex SDbw
## 2 60.8799 0.2708 0.0751 0.3740 0.2833 0.0089 1.3655 2.0003 0.6884
## 3 28.6725 0.5002 -0.0465 1.2743 0.2937 0.0130 1.3787 1.6506 0.6455
## 4 16.5766 0.5932 0.1167 1.4807 0.3480 0.0153 1.1990 1.4650 0.5416
## 5 10.4098 0.6205 0.5439 1.6471 0.4104 0.0166 1.0754 1.3008 0.4204
## 6 7.2985 0.5730 0.2239 2.4299 0.3515 0.0179 1.2553 1.2095 0.3814
## 7 5.6013 0.5722 0.1203 2.5287 0.3638 0.0183 1.1509 1.1273 0.2990
## 8 4.1433 0.5777 0.2839 2.6377 0.4121 0.0203 1.1880 1.0216 0.2289
## 9 3.2931 0.5747 0.1021 2.7198 0.4122 0.0205 1.1131 0.9468 0.1907
## 10 2.4797 0.5780 0.2503 2.7726 0.4224 0.0211 1.1181 0.8521 0.1393
##
## $All.CriticalValues
## CritValue_Duda CritValue_PseudoT2 Fvalue_Beale
## 2 0.5276 17.9093 0.1278
## 3 0.3506 14.8210 0.0702
## 4 0.2445 15.4517 0.0047
## 5 0.3979 15.1322 0.1418
## 6 0.0348 55.4763 1.0000
## 7 0.1255 20.9054 1.0000
## 8 -0.0981 -11.1930 1.0000
## 9 -0.0981 -11.1930 0.8622
## 10 0.3212 14.7957 0.0133
##
## $Best.nc
## KL CH Hartigan CCC Scott Marriot TrCovW TraceW
## Number_clusters 6.0000 5.0000 3.0000 6.0000 3.0000 3 3.0000 3.000
## Value_Index 2.0641 10.9844 3.2534 -0.2548 56.3069 3378838 256.8574 16.031
## Friedman Rubin Cindex DB Silhouette Duda PseudoT2
## Number_clusters 3.0000 8.0000 3.000 10.0000 10.0000 2.0000 2.000
## Value_Index 33.1277 -0.1707 0.414 0.6796 0.3923 0.6836 9.255
## Beale Ratkowsky Ball PtBiserial Frey McClain Dunn Hubert
## Number_clusters 2.0000 3.0000 3.0000 5.0000 1 2.000 10.0000 0
## Value_Index 1.6956 0.3702 32.2074 0.6205 NA 0.374 0.4224 0
## SDindex Dindex SDbw
## Number_clusters 5.0000 0 10.0000
## Value_Index 1.0754 0 0.1393
##
## $Best.partition
## Bogor Sukabumi Cianjur Bandung
## 1 2 1 1
## Garut Tasikmalaya Ciamis Kuningan
## 2 2 1 1
## Cirebon Majalengka Sumedang Indramayu
## 1 1 1 2
## Subang Purwakarta Karawang Bekasi
## 2 1 3 3
## Bandung Barat Pangandaran Kota Bogor Kota Sukabumi
## 1 1 3 3
## Kota Bandung Kota Cirebon Kota Bekasi Kota Depok
## 3 3 3 3
## Kota Cimahi Kota Tasikmalaya Kota Banjar
## 3 1 3
par(mfrow=c(1,1))
Pada analisis ini digunakan metode complete linkage clustering, merupakan salah satu metode dalam analisis klaster hierarkis yang digunakan untuk mengelompokkan data berdasarkan jarak antara kluster. Metode ini juga dikenal sebagai farthest neighbor clustering karena mengukur jarak antara dua kluster berdasarkan jarak maksimum antara elemen-elemen yang paling tidak mirip dari masing-masing kluster. Hasil klaster atau penggerombolan disajikan dalam bentuk dendogram dibawah ini.
clust <- hclust(dist(data.sd), method = 'complete')
plot(clust)
Jumlah klaster optimal yang digunakan dalam penggerombolan data adalah 4 yang diperoleh dari metode Hubert dan Dindex. Hasil visualisasi penggerombolan ditunjukkan dalam 4 zona dalam bentuk spasial dibawah ini. Anggota dalam setiap zona memiliki karakteristik yang lebih mirip dibandingkan dengan anggota pada zona lain. Zona 1 terdiri dari 12 Kota/Kabupaten yang sebagian besar merupakan wilayah Kabupaten. Zona 2 terdiri dari 7 Kota/Kabupaten yang didominasi oleh wilayah Kota. Zona 3 terdiri dari 5 wilayah Kabupaten, dan zona 4 terdiri dari hanya 3 Kota/Kabupaten.
Perbedaan yang paling signifikan dari hasil centroid gerombol yang terbentuk adalah zona 3 dan 4. Berdasarkan data, rataan persentase wilayah zona 3 yang telah melakukan vaksin 1 sebesar 20,27% dan vaksin 2 sebesar 9%, sedangkan rataan persentase wilayah zona 4 yang telah melakukan vaksin 1 sebesar 49% dan vaksin 2 sebesar 21,8%. Berdasarkan rataan dari fatality rate, zona 4 memiliki tingkat fatality rate yang lebih rendah (1,2) dibandingkan zona 3 (3,5). Hal ini bisa menggambarkan bahwa semakin tinggi persentase pemberian vaksin 1 dan 2, berimplikasi pada penurunan rasio jumlah pasien yang meninggal terhadap jumlah kasus yang terkonfirmasi covid-19.
data.klust <- geo_join(spatial_data=peta,
data_frame=covid, by_sp="ADM2_EN",
by_df="Kab.Kota", how = "inner")
data.points <- sf::st_point_on_surface(data.klust)
data.coords <- as.data.frame(sf::st_coordinates(data.points))
data.coords$nama <- data.peta$ADM2_EN
ggplot()+
geom_sf(data=data.klust,aes(fill=Zona))+
scale_fill_manual(values=c('palegreen3','yellow3','darkorange2','red3')) +
labs(title="Penggerombolan Wilayah di Jawa Barat", x = '', y='') +
geom_text(data = data.coords, aes(X, Y, label = nama), size = 2.8)+ geom_text_repel(verbose = TRUE,seed = 123,max.time = 1, max.iter = Inf,size = 3)