library(readr)
library(readxl)
library(tidyverse) 
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'dplyr' 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     ✔ purrr     1.0.2
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ── 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)
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(ggplot2)
library(dplyr)
library(treemap)
## Warning: package 'treemap' was built under R version 4.3.2

Data

Dataset yang digunakan adalah bagian data dari SUSENAS (Survei Sosial dan Ekonomi Nasional) yaitu KOR Rumah Tangga pada tahun 2023. Sebelum digunakan, dilakukan proses pembersihan terhadap data untuk memperoleh variabel-variabel yang diperlukan maupun melakukan perubahan format. Hasil dari proses pembersihan data ini kemudian disimpan dalam format file Excel.

susenaskorrt<-read_xlsx("C:/Users/user/OneDrive/Dokumen/semester 4/visdat/SusenasKORRumahTangga.xlsx")
## Warning: Expecting numeric in F5299 / R5299C6: got '1300 +'
## Warning: Expecting numeric in F6853 / R6853C6: got '1300 +'
## Warning: Expecting numeric in F8171 / R8171C6: got '1300 +'
susenaskorrt
## # A tibble: 25,890 × 10
##    LokasiTinggal JumlahAnggotaKeluarga KepemilikanAC  DayaMeteran1 DayaMeteran2
##    <chr>                         <dbl> <chr>          <chr>        <chr>       
##  1 desa                              1 Tidak Memiliki 450          0           
##  2 kota                              1 Tidak Memiliki 450          0           
##  3 desa                              1 Tidak Memiliki 450          450         
##  4 kota                              2 Tidak Memiliki 900          0           
##  5 kota                              1 Tidak Memiliki 450          0           
##  6 kota                              1 Memiliki       1300 +       0           
##  7 kota                              1 Tidak Memiliki 1300 +       0           
##  8 desa                              2 Tidak Memiliki 450          0           
##  9 desa                              1 Tidak Memiliki 450          0           
## 10 kota                              1 Tidak Memiliki 450          0           
## # ℹ 25,880 more rows
## # ℹ 5 more variables: DayaMeteran3 <dbl>, SUMemasak <dbl>, SUPenerangan <dbl>,
## #   KepemilikanKulkas <chr>, KepemilikanWaterHeater <chr>
view(susenaskorrt)

Visualisasi Besaran Data

Bar Chart

Pada kasus ini, dilakukan perbandingan sampel jumlah masyarakat Jawa Barat tahun 2023 yang tinggal di desa dan di kota.

ggplot(susenaskorrt, aes(x = LokasiTinggal)) +
  geom_bar(fill = "darkorange") +
  labs(title = "Lokasi Tempat Tinggal", x = "Lokasi", y = "Jumlah") +
  theme_light() +
  coord_cartesian()

Berdasarkan diagram batang tersebut, sampel masyarakat Jawa Barat pada tahun 2023 yang tinggal di kota lebih banyak daripada yang tinggal di desa.

Lollipop Chart (Needle Chart)

Kemudian, dilakukan perbandingan intensitas dari jumlah anggota keluarga di Jawa Barat tahun 2023 dan diurutkan dari yang terbesar.

susenaskorrt %>%
  count(JumlahAnggotaKeluarga) %>%
  arrange(desc(n)) %>% # 
  ggplot() +
  geom_segment(aes(x = fct_reorder(as.factor(JumlahAnggotaKeluarga), n), xend = fct_reorder(as.factor(JumlahAnggotaKeluarga), n), y = 0, yend = n), color = "black") +
  geom_point(aes(x = fct_reorder(as.factor(JumlahAnggotaKeluarga), n), y = n), color = "darkorange", size = 2) +
  scale_y_continuous(expand = c(0, 0)) +
  coord_flip() +
  ggtitle("Urutan Jumlah Anggota Keluarga dari Intensitas yang Terbanyak") +
  xlab("") +
  ylab("Jumlah") +
  theme_light() +
  theme(plot.title = element_text(hjust = 0.1))

Berdasarkan diagram tersebut, sampel masyarakat Jawa Barat pada tahun 2023 memiliki satu anggota keluarga paling banyak. Disusul dengan 2 anggoota keluarga, 0 anggota keluarga, 3 anggota keluarga, 4 anggota keluarga, 5 anggota keluarga dan yang terakhir 6 anggota keluarga.

Visualisasi Sebaran Data

Boxplot

data <- data.frame(
  LokasiTinggal = as.factor(susenaskorrt$LokasiTinggal),
  JumlahAnggotaKeluarga = as.numeric(susenaskorrt$JumlahAnggotaKeluarga)
)
ggplot(data, aes(x = LokasiTinggal, y = JumlahAnggotaKeluarga)) +
  geom_boxplot(fill = "lightblue", color = "darkblue", alpha = 0.7) +
  labs(title = "Sebaran Jumlah Anggota Keluarga Berdasarkan Lokasi Tinggal",
       x = "Lokasi Tinggal",
       y = "Jumlah Anggota Keluarga") +
  theme_classic()

Sebaran jumlah anggota keluarga antara di desa dan di kota di Jawa Barat pada tahun 2023 hampir sama.

Violin Plot

data <- data.frame(
  SUPenerangan = as.factor(susenaskorrt$DayaMeteran1),
  JumlahAnggotaKeluarga = as.numeric(susenaskorrt$JumlahAnggotaKeluarga)
)
ggplot(data, aes(x = factor(SUPenerangan), y = JumlahAnggotaKeluarga)) +
  geom_violin(fill = "darkblue") +
  labs(title = "Daya Listrik Pada Meteran 1 Berdasarkan Jumlah Anggota Keluarga",
       x = "Daya Meteran 1",
       y = "Jumlah Anggota Keluarga") +
  theme_minimal()

Sebaran jumlah anggota keluarga terhadap penggunaan daya pada meteran 1 untuk daya 450 watt memiliki lebar yang lebih besar dibanding yang lainnya. Untuk jarak antarkuartilnya relatif sama namun garis yang menghubungkan dengan titik ekstrem relatif beragam.

Visualisasi Komposisi

Treemap

datatm <- as.data.frame(
  dtm <- table(susenaskorrt$SUPenerangan,susenaskorrt$LokasiTinggal)
)
datatm$Var1 <- as.character(datatm$Var1)
map_kegiatan <- c("1"="LPLNM", "2"="LPLNnM", "3"="LnPLN", "4"="BL")
datatm_modified <- filter(datatm,Var1!=0) %>% 
  mutate(Var1 = case_when(
         Var1 %in% names(map_kegiatan) ~ map_kegiatan[Var1]
         ))
treemap(datatm_modified,
        index = c("Var1","Var2"),
        vSize = "Freq",
        draw=TRUE,
        title="Sumber Utama Penerangan berdasarkan Lokasi Tinggal",
        fontsize.title=20,
        fontsize.labels=8,
        fontcolor.labels="white",
        width = 21000,  
        height = 12000,  
        fontsize.legend = 8, 
        vLabel.rot = 1)

Pada treemap dapat dilihat bahwa pada penggunaan listrik PLN dengan meteran di kota lebih banyak dibandingkan dengan di desa, sedangkan pada penggunaan yang lain seperti listrik PLN tanpa meteran, listrik non PLN dan tanpa listrik kurang terlihat proporsinya karena didominasi oleh penggunaan listrik PLN dengan meteran.

Diagram Donat

daya <- data.frame(
  data <- table(susenaskorrt$DayaMeteran1)
 )
daya <- susenaskorrt %>%
  count(DayaMeteran1) %>%
  rename(Var1 = DayaMeteran1, count = n)
  daya$fraction <- daya$count / sum(daya$count)
  daya$ymax <- cumsum(daya$fraction)
  daya$ymin <- c(0, head(daya$ymax, n=-1))
  ggplot(daya, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=3, fill=Var1)) +
    geom_rect() +
    coord_polar(theta="y") +
    xlim(c(0, 4)) +
    scale_fill_brewer(palette = "Set2")+
    labs(title = "Penggunaan Daya Pada Meteran 1",fill="Daya")+
    theme_void()

Dari diagram tersebut, dapat diketahui bahwa hampir sekitar 50% pengguna listrik menggunakan daya sebesar 450 watt pada meteran 1. Kemudian, disusul dengan penggunaan daya sebesar 900 watt, 1300 + watt dan yang terakhir 0 watt atau bisa diasumsikan mereka bukan pengguna listrik pada meteran tersebut.

Pie Chart

daya <- data.frame(
  data <- table(susenaskorrt$DayaMeteran2)
 )
daya %>% 
  filter(Var1 != 0) %>% 
  ggplot(aes(x="", y=Freq, fill =Var1))+
  scale_fill_brewer(palette = "Set2") +
  geom_bar(stat= "identity",width =2)+
  coord_polar("y",start=0)+
  labs(title = "Penggunaan Daya Pada Meteran 2",fill="Daya")+
  theme_void()

Karena pengguna listrik pada meteran 2 didominasi oleh nilai 0 yang diasumsikan bahwa mereka bukan pengguna listrik pada meteran tersebut sebesar 90%, maka nilai tersebut dibuang agar daya lainnya dapat diketahui besarnya. Kemudian, dilakukan visualisasi komposisi terhadap 3 daya yaitu 450, 900 dan 1300 +. Sehingga diperoleh urutan daya yang digunakan pada meteran 2 yaitu 900 watt, 450 watt dan yang terakhir 1300 + watt.