library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggridges)
## Warning: package 'ggridges' was built under R version 4.3.2
library(GGally)
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.2
##
## 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
#MEMBACA DATA
library(readxl)
data <- read_xlsx("C:/Users/bulbu/Documents/VISDAT/visdat.xlsx")
data
## # A tibble: 84,688 × 14
## R1201 R1203 R1204 R1206 R1209 R1208 R1108 R401 R409 R612 R102 R407 R405
## <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 5 0 A 5 1 0 30 1 20 3 7 68 2
## 2 5 0 A 5 1 0 22 2 22 19 7 46 2
## 3 5 0 A 5 1 0 21 3 0 15 7 16 2
## 4 5 0 A 5 1 0 20 4 0 3 7 6 1
## 5 5 0 A 5 1 0 18 1 16 3 72 62 2
## 6 5 0 A 5 1 0 15 2 0 3 72 38 1
## 7 5 0 A 5 1 0 15 1 27 13 6 54 1
## 8 5 0 A 5 1 0 15 2 18 8 6 41 2
## 9 5 0 A 5 1 0 15 3 0 3 6 10 2
## 10 5 0 A 5 1 0 14 1 16 8 72 40 1
## # ℹ 84,678 more rows
## # ℹ 1 more variable: R610 <dbl>
#VISUALISASI BESARAN
Merupakan visualisasi yang paling dasar dalam menggambarkan keadaan dari suatu waktu, kondisi, maupun entitas dan Memberikan perbandingan antar kategori dan antar waktu.
##Visualisasi Besaran Bar Chart
ggplot(data, aes(x = R401)) +
geom_bar(fill = "green") +
labs(title = "Nomor Urut Anggota Rumah Tangga", x = "Nomor Urut", y = "Jumlah") +
theme_classic() +
coord_flip()
Pada Bar Chart di atas memiliki arti berapa banyak nomor urut Anggota Rumah Tangga di Jawa Barat. Di Atas tertera nomor urut dari 1 sampai 10, yang dimana masing masing nomor urut memiliki jumlah masing masing, seperti rentang 0 sampai 5 cenderung lebih banyak dan beragam, ada yang > 20000 sedangkan rentang 5 sampai 10 cenderung sedikit.
##Visualisasi Besaran Lollipop Chart
data %>%
group_by(R401) %>%
summarize(total_R401 = sum(R401)) %>%
arrange(desc(total_R401)) %>%
slice_head(n = 10) %>%
ggplot(aes(x = reorder(R401, total_R401), y = total_R401)) +
geom_segment(aes(xend = reorder(R401, total_R401), yend = 10 ), color = "green") +
geom_point(color = "blue", size = 3) +
geom_text(aes(label = total_R401), vjust = -0.5, color = "black", size = 4 ) +
coord_flip() +
ggtitle("Diagram Lollipop Nomor Urut Anggota Rumah Tangga") +
xlab("Nomor Urut") +
ylab("Jumlah") +
theme_classic()
Interpretasi dari lollipop chart di atas, dapat disimpulkan bahwa mayoritas nomor urut anggota rumah tangga di Jawa Barat mencapai 54312 penduduk dengan kode 3, selanjutnya 46664 penduduk dengan kode 2, dst dapat di lihat di atas.
#VISUALISASI SEBARAN
Merupakan teknik visualisasi untuk mengetahui sebaran data sehingga dapat membantu untuk melihat rentang data, mendeteksi outlier, mendeteksi keberadaan kelompok, dll
##Visualisasi Sebaran Density Plot
library(ggplot2)
ggplot(data)+
geom_density(aes(x=R409 ,fill= " umur pernikahan" ),color="blue", alpha=0.8)+
labs(title="Density Plot Sebaran Umur Pernikahan Pertama")+
xlab(" Umur ")+
ylab("Jumlah")+
xlim(1, 50)
## Warning: Removed 35916 rows containing non-finite values (`stat_density()`).
Pada plot density di atas, terdapat dua puncak yang menunjukkan adanya dua kelompok mayoritas penduduk yang menikah pertama kali pada umur tertentu, yakni pada usia 20 dan 25 tahun. Sedangkan untuk kelompok lainnya, distribusinya tersebar mulai dari usia 10 hingga 40 tahun.
##Visualisasi Sebaran Boxplot
dataVisdat <- data
dataVisdat <- data %>% filter(R401 > 0)
ggplot(dataVisdat)+
geom_boxplot(aes(y= R401))+
labs(title="Boxplot Sebaran Nomor Urut Anggota Rumah")
Dalam Boxplot diatas dapat kita simpulkan data Sebaran Nomor Urut Anggota Rumah Tangga adalah sekitar 1,5. Quartil atas sekitar 2,2 dan Quartil Bawah 0,5. Selain itu, terdapat beberapa pencilam seperti rentang diatas 5.
##Visualisasi Sebaran Histogram
ggplot(data)+
geom_histogram(aes(x= R1203),fill="red", color="cornsilk", alpha=0.8)+
labs(title="Histogram Sebaran Rawat Inap")+
xlab("Jumlah Hari di Rawat")+
ylab("Jumlah")+
xlim(1,20)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 81985 rows containing non-finite values (`stat_bin()`).
## Warning: Removed 2 rows containing missing values (`geom_bar()`).
Representasi dari Histogram di atas adalah, kita mengambil dari data R1203 dimana itu merupakan layout dari berapa hari orang di rawat inap dalam beberapa hari. Terlihat yang paling banyak dirawat sebanyak 3 hari yaitu berjumlah sekitar 770 penduduk.
#VISUALISASI KOMPOSISI
Visualisasi ini digunakan untuk melihat bagaimana kontribusi setiap sub-populasi terhadap sub-populasi yang lain atau populasinya itu sendiri.
library(tidyverse) #Include beberapa packages termasuk ggplot
library(ggmosaic)
## Warning: package 'ggmosaic' was built under R version 4.3.2
##
## Attaching package: 'ggmosaic'
## The following object is masked from 'package:GGally':
##
## happy
library(treemap)
## Warning: package 'treemap' was built under R version 4.3.2
library(treemapify)
## Warning: package 'treemapify' was built under R version 4.3.2
library(ggridges)
library(GGally)
library(plotly)
##Visualisasi Komposisi Pie Chart
data$R1201 <- as.numeric(data$R1201)
data_pie <- data %>%
mutate(R1201 = ifelse(R1201 == 1, "YA", "TIDAK")) %>%
count(R1201) %>%
mutate(percentage = prop.table(n) * 100)
ggplot(data_pie, aes(x = "", y = percentage , fill = R1201)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
scale_fill_brewer(palette = "Set2") +
theme_void() +
theme(legend.position = "right") +
labs(title = "Komposisi Orang Dirawat", fill = "Kategori") +
geom_text(aes(label = paste0(round(percentage), "%")), position = position_stack(vjust = 0.5))
Dalam pie chart tersebut, dapat dilihat bahwa sekitar 97% sampel dari individu di Jawa Barat mengakatakan Tidak pernah di rawat inap akibat merokok, dan sebanyak 3% pernah melakukan rawat inap karena adanya penggunaan merokok.
##Visualisasi Komposisi Treemap Chart
treemap(data,
index=c("R102", "R610", "R405"),
vSize="R1208",
draw=TRUE,
title="Treemap: Konsumsi Rokok Berdasarkan Wilayah, Bersekolah atau Tidak, dan Jenis Kelamin",
fontsize.title=20,
fontsize.labels=12,
fontcolor.labels="white")
R102 :Kode Kabupaten/Kota,
R610 : Bersekolah/Tidak,
R405 : Umur,
R1208 : Rata-Rata Konsumsi Batang Rokok Tembakau Per Minggu,
Visualisasi komposisi diatas itu menunjukkan hubungan antara Jumlah rokok terbanyak di kab/kota berdasarkan umur dan sekolah atau tidak.