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.