library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.2
## Warning: package 'readr' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'stringr' 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.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ 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
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(ggmosaic)
## Warning: package 'ggmosaic' was built under R version 4.3.2
## 
## Attaching package: 'ggmosaic'
## 
## The following object is masked from 'package:GGally':
## 
##     happy
data <- read.csv("C:/Users/ASUS/OneDrive/Documents/SEM 4/VISDAT/data visdat individu praktikum.csv", header = TRUE, sep=",")
str(data)
## 'data.frame':    84688 obs. of  19 variables:
##  $ JK          : int  2 2 2 1 2 1 1 2 2 1 ...
##  $ RPM         : int  0 0 0 0 0 35 49 0 0 112 ...
##  $ UHP         : int  0 23 0 0 0 0 0 22 0 0 ...
##  $ GE          : int  8 8 8 8 8 8 8 8 8 8 ...
##  $ DK          : int  2 2 2 2 1 1 2 2 2 1 ...
##  $ R102        : int  7 7 7 7 72 72 6 6 6 72 ...
##  $ ratarata_RPM: num  0.677 36.648 NA NA NA ...
##  $ DK.1        : chr  "Kota" "Desa" "" "" ...
##  $ frek_R105   : int  27482 50206 NA NA NA NA NA NA NA NA ...
##  $ JK.1        : chr  "Laki-Laki" "Perempuan" "" "" ...
##  $ frek_R405   : int  42723 41967 NA NA NA NA NA NA NA NA ...
##  $ TP          : chr  "SD/Sederajat" "Diploma" "SMA/Sederajat" "SD/Sederajat" ...
##  $ R1007       : int  5 6 7 8 NA NA NA NA NA NA ...
##  $ frek_R1007  : int  51 111 511 81983 NA NA NA NA NA NA ...
##  $ R1052       : chr  "Kota" "Pedesaan" "" "" ...
##  $ R105        : chr  "Kota" "Kota" "Desa" "Desa" ...
##  $ R405        : chr  "Laki-Laki" "Perempuan" "Laki-Laki" "Perempuan" ...
##  $ rerata_RPM  : num  33.392 0.687 43.418 0.656 NA ...
##  $ FWT         : num  455 455 455 455 172 ...

VISUALISASI BESARAN

Bar Chart

data_bar <- subset(data, select = c(TP))
data_barnoblank <- subset(data_bar, !(TP %in% c("")))
str(data_barnoblank)
## 'data.frame':    74901 obs. of  1 variable:
##  $ TP: chr  "SD/Sederajat" "Diploma" "SMA/Sederajat" "SD/Sederajat" ...
data_barnoblank%>%count(TP)%>%
  ggplot()+
  geom_col(aes(x=fct_reorder(as.factor(TP),n),y=n), fill="pink", 
           width=0.7) +
  geom_text(aes(x = fct_reorder(as.factor(TP), n), y = n, label = n),
            position = position_stack(vjust = 0.8), color = "black", size = 3) +
    scale_y_continuous(expand = c(0,0))+
    coord_flip() +
    ggtitle("Tingkat Pendidikan Warga Jabar") +
    xlab("") +
    ylab("Frekuensi") +
    theme_classic() +
    theme(plot.title = element_text(hjust = .5, size = 15))

# Berdasarkan grafik bar chart di atas, tingkat pendidikan SD/Sederajat adalah tingkat pendidikan terbanyak yang terakhir ditempuh oleh warga Jawa Barat. Sedangkan tingkat pendidikan Profesi adalah tingkat pendidikan yang paling sedikit telah ditempuh. Bar chart tersebut sudah diurutkan berdasarkan tingkat pendidikan yang paling banyak sudah di tempuh oleh warga Jawa Barat pada tahun 2023.

Staked Bar Chart

data_stacked <- data %>%
  filter(R405 %in% c("Laki-Laki", "Perempuan")) %>%
  filter(R105 %in% c("Kota", "Desa"))
ggplot(data_stacked, aes(x = as.factor(R105), y = rerata_RPM, fill = as.factor(R405))) +
  geom_bar(stat = "identity") +
  labs(fill = "Jenis Kelamin") +
  ggtitle("Rata-Rata Konsumsi Rokok Perminggu Berdasarkan Jenis Kelamin dan Klasifikasi Geografi") +
  xlab("Klasifikasi") +
  ylab("Rata Rata") +
  scale_fill_manual(values = c("Perempuan" = "pink", "Laki-Laki" = "lightblue")) +
  theme_minimal()

# Baik pada kota maupun desa, mayoritas perokok adalah laki-laki karena terlihat dari komposisi warna biru yang mendominasi, sedangkan warna pink yang menjadi minoritas menggambarkan banyaknya perempuan perokok. Namun, terdapat perbedaan rata-rata batang roko perminggu yang dikonsumsi antara laki-laki yang tinggal di kota dan tinggal di Desa. Perbedaan tersebut mencapai >10 batang lebih besar rata-rata batang rokok perminggu yang dikonsumsi di desa dibanding dengan kota.

VISUALISASI SEBARAN

Histogram

ggplot(data)+
  geom_histogram(aes(x= UHP),fill="pink", color="black", alpha=0.8)+
  labs(title="Histogram Sebaran Umur Hamil Pertama di Jawa Barat")+
  xlab("Umur")+
  ylab("Jumlah")+
  xlim(10,40)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 66764 rows containing non-finite values (`stat_bin()`).
## Warning: Removed 2 rows containing missing values (`geom_bar()`).

# Umur hamil pertama paling umum terdapat pada interval 18 sampai 20 karena histogram mencapai puncak pada interval tersebut. Persebaran yang dimiliki histogram adalah cenderung menjulur ke kanan.

Density Plot

ggplot(data)+
  geom_density(aes(x=UHP,fill= "Jawa Barat" ),color="#e9ecef", alpha=0.4)+
  labs(title="Density Plot Sebaran Umur Hamil Pertama di Jawa Barat")+
  xlab("Umur Hamil Pertama")+
  ylab("Umur")+
  xlim(10,40)
## Warning: Removed 66764 rows containing non-finite values (`stat_density()`).

# Interpretasi dari density plot ini kurang lebih sama dengan histogram sebelumnya. Karena pada dasarnya kedua grafik tersebut menjelaskan persebaran dari sebuah data. Namun, pada density plot, titik puncak sangat tergambar jelas, yaitu pada angka 20.

VISUALISASI KOMPOSISI

Pie Chart

data_pie <- data %>%
  mutate(DK = ifelse(DK == 1, "Kota", "Desa")) %>%
  count(DK) %>%
  mutate(percentage = prop.table(n) * 100)

ggplot(data_pie, aes(x = "", y = percentage , fill = DK)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  scale_fill_manual(values = c("pink", "lightblue")) +
  theme_void() +
  theme(legend.position = "right") +
  labs(title = "Komposisi Lokasi Tinggal Warga Jabar 2023", fill = "Lokasi") +
  geom_text(aes(label = paste0(round(percentage), "%")), position = position_stack(vjust=0.5))

# Pie Chart menunjukan komposisi warga Jawa Barat yang tinggal di kota dan di desa. Ternyata, warga yang berlokasi di kota mendominasi sebesar 68%. Menunjukan bahwa lebih banyak warga yang tinggal di kota dibadingkan dengan tinggal di desa.

Treemap

data_tree <- subset(data, select = c(TP, JK, RPM))
data_treenoblank <- subset(data_tree, !(TP %in% c("")))
str(data_treenoblank)
## 'data.frame':    74901 obs. of  3 variables:
##  $ TP : chr  "SD/Sederajat" "Diploma" "SMA/Sederajat" "SD/Sederajat" ...
##  $ JK : int  2 2 2 1 2 1 1 2 2 1 ...
##  $ RPM: int  0 0 0 0 0 35 49 0 0 112 ...
treemap(data_treenoblank, 
          index=c("TP", "JK"), 
          vSize="RPM",
          draw=TRUE,
          title="Rerata Konsumsi Rokok berdasarkan Tingkat Pendidikan dan Lokasi Tinggal",
          palette = "Set2",
          fontsize.title=15,
          fontsize.labels=,
          fontcolor.labels="black")

# Sesuai dengan hasil grafik grouped bar chart, di setiap tingkat kode 1 (Laki-laki) rata rata konsumsi rokoknya mendominasi. Terlihat dari ukuran kotak kode 1 (laki-laki) pada setiap tingkat pendidikan yang memiliki ukuran yang lebih besar pada kode 2 (perempuan).