library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ 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(ggmosaic)
library(treemap)
library(treemapify)
library(ggridges)
library(GGally)
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
##
## Attaching package: 'GGally'
##
## The following object is masked from 'package:ggmosaic':
##
## happy
library(plotly)
##
## 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(dplyr)
data<- read.csv("C:/Users/MyBook Hype/Downloads/data bersih.csv")
str(data)
## 'data.frame': 84688 obs. of 100 variables:
## $ X : int 0 1 2 3 4 5 6 7 8 9 ...
## $ URUT : int 500001 500001 500001 500001 500002 500002 500003 500003 500003 500004 ...
## $ PSU : int 12448 12448 12448 12448 31373 31373 12092 12092 12092 31135 ...
## $ SSU : int 123442 123442 123442 123442 311039 311039 119908 119908 119908 308689 ...
## $ WI1 : int 12435 12435 12435 12435 31360 31360 12079 12079 12079 31122 ...
## $ WI2 : int 123427 123427 123427 123427 311024 311024 119893 119893 119893 308674 ...
## $ R101 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ R102 : int 7 7 7 7 72 72 6 6 6 72 ...
## $ R105 : int 2 2 2 2 1 1 2 2 2 1 ...
## $ R401 : int 1 2 3 4 1 2 1 2 3 1 ...
## $ R403 : int 1 3 6 6 1 3 1 2 3 1 ...
## $ R404 : int 4 2 1 1 3 1 2 2 1 2 ...
## $ R405 : int 2 2 2 1 2 1 1 2 2 1 ...
## $ R407 : int 68 46 16 6 62 38 54 41 10 40 ...
## $ R408 : int 0 5 0 0 0 0 1 1 0 1 ...
## $ R409 : int 20 22 0 0 16 0 27 18 0 16 ...
## $ R406A: int 5 2 23 17 6 28 10 12 21 26 ...
## $ R406B: int 4 10 1 8 12 7 11 11 4 3 ...
## $ R406C: int 1954 1976 2007 2016 1960 1984 1968 1981 2012 1982 ...
## $ R410 : int 2 2 2 2 1 1 2 2 2 2 ...
## $ R501 : int 1 1 0 0 2 0 1 1 0 1 ...
## $ R502 : int 1 2 3 4 1 1 1 1 1 1 ...
## $ R503 : int 0 1 2 2 0 1 0 0 2 0 ...
## $ R504 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R506 : int 2 2 2 1 2 1 1 2 2 1 ...
## $ R507 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R508 : int 5 2 2 2 2 1 5 5 1 1 ...
## $ R509 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R601 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ R602 : int 7 7 7 7 72 72 6 6 6 72 ...
## $ R603 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ R604 : int 7 7 7 7 72 72 6 6 6 72 ...
## $ R605 : int 0 0 0 3 0 0 0 0 4 0 ...
## $ R606 : int 0 0 0 1 0 0 0 0 0 0 ...
## $ R607 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R608 : int 1 1 1 1 5 5 1 1 1 1 ...
## $ R609 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R610 : int 3 3 3 2 3 3 3 3 2 3 ...
## $ R611 : int 0 0 0 1 0 0 0 0 1 0 ...
## $ R612 : int 3 19 15 3 3 3 13 8 3 8 ...
## $ R613 : int 8 8 1 1 8 8 8 8 5 8 ...
## $ R614 : int 3 19 8 25 3 3 13 8 25 8 ...
## $ R615 : int 0 0 5 5 0 0 0 0 5 0 ...
## $ R616 : int 0 0 5 5 0 0 0 0 5 0 ...
## $ R617 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R618 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R619 : int 0 0 3 1 0 0 0 0 2 0 ...
## $ R620 : int 0 0 0 0 0 0 0 0 3 0 ...
## $ R621 : int 0 0 0 0 0 0 0 0 4 0 ...
## $ R701 : int 1 1 5 5 5 1 1 5 5 1 ...
## $ R702 : int 1 5 5 5 5 5 1 5 5 1 ...
## $ R704 : int 3 3 3 0 3 1 1 3 2 1 ...
## $ R705 : int 5 5 5 0 5 0 0 5 5 0 ...
## $ R706 : int 0 0 0 0 0 11 12 0 0 13 ...
## $ R707 : int 0 0 0 0 0 5 1 0 0 4 ...
## $ R708 : int 0 0 0 0 0 48 50 0 0 48 ...
## $ R709 : int 0 0 0 0 0 48 50 0 0 97 ...
## $ R801 : int 5 1 1 5 1 1 1 1 1 1 ...
## $ R802 : int 5 1 1 5 1 1 1 1 1 1 ...
## $ R808 : int 5 1 1 5 5 5 1 1 1 1 ...
## $ R812 : int 5 5 1 5 5 5 5 5 5 5 ...
## $ R901 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R902 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R903 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R904 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R905 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R906 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R907 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R908 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R909 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R910 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R911 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R912 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R913 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R914 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R915 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R916 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1001: int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1002: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1003: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1004: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1005: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1006: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1007: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1008: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1009: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1010: int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1102: int 5 5 1 1 5 5 5 5 5 5 ...
## $ R1103: int 0 0 5 5 0 0 0 0 0 0 ...
## $ R1104: int 0 0 1 1 0 0 0 0 0 0 ...
## $ R1105: int 0 0 5 5 0 0 0 0 0 0 ...
## $ R1106: int 0 0 5 5 0 0 0 0 0 0 ...
## $ R1108: int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1201: int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1203: int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1206: int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1207: int 5 5 5 5 5 1 1 5 5 1 ...
## $ R1208: int 0 0 0 0 0 35 49 0 0 112 ...
## $ R1209: int 5 5 5 5 5 1 1 5 5 1 ...
## [list output truncated]
data$R802<-as.numeric(data$R802)
data_pie <- data %>%
mutate(R802 = ifelse (R802 == 1, "Ya", "Tidak")) %>%
count(R802) %>%
mutate (percentage=prop.table(n)*100)
ggplot(data_pie, aes(x = "", y = percentage , fill = R802 )) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
scale_fill_brewer(palette = "Set3") +
theme_void() +
theme(legend.position = "right") +
labs(title = "Komposisi Kepemilikan Telepon Seluler di Daerah Jawa Barat Tahun 2023", fill = "Kategori") +
geom_text(aes(label = paste0(round(percentage), "%")), position = position_stack(vjust = 0.5))
treemap(data,
index=c("R102", "R407"),
vSize="R802",
algorithm="pivotSize",
draw = TRUE,
title="Treemap: internet",
fontsize.title=20,
fontsize.labels=12,
fontcolor.labels="white")
ggplot(data)+
geom_density(aes(x=R708,fill= "pekerjaan utama" ),color="white", alpha=0.4)+
geom_density(aes(x=R709,fill= "seluruh pekerjaan" ),color="grey", alpha=0.4)+
labs(title="Density Plot Sebaran Jumlah Jam Kerja")+
xlab("Jam Kerja")+
ylab("Jumlah")+
xlim(1, 100)
## Warning: Removed 46465 rows containing non-finite values (`stat_density()`).
## Removed 46465 rows containing non-finite values (`stat_density()`).
Dari perbandingan density plot diatas dapat diketahui bahwa masyarakat
Jawa Barat dalam sampel cenderung menghabiskan lebih banyak waktu untuk
melakukan pekerjaan utama dibandingkan dengan waktu untuk melakukan
pekerjaan secara keseluruhan.
ggplot(data)+
geom_histogram(aes(x=R407),fill="lightyellow", color="grey", alpha=0.8)+
labs(title="Histogram Sebaran Umur ART di Jawa Barat Tahun 2023")+
xlab("Umur")+
ylab("Jumlah")+
xlim(1,100)+
scale_x_continuous(breaks = seq(0, 100, by = 10))
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Dari hasil analisis didapat histogram bimodal karena memiliki dua
puncak, yang artinya ada dua kelompok interval umur Anggota Rumah Tangga
(ART) di mayoritas sampel masyarakat Jawa Barat. Interval umur tersebut
berada diantara umur 10 hingga 20 tahun dan umur 40 hingga 50 tahun. ##
VISUALISASI BESARAN
data %>%
count(R614) %>%
slice_max(n = 4, order_by = n) %>%
ggplot() +
geom_col(aes(x = fct_reorder(as.factor(R614), n), y = n), fill = "lightgreen", width = 0.7) +
geom_text(aes(x = fct_reorder(as.factor(R614), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "black", size = 3) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Top 4 Ijazah/STTBTertinggi yang Dimiliki oleh Masyarakat Jawa Barat") +
xlab("Ijazah/STTB") +
ylab("") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5, size = 15))
Bar chart di atas menampilkan top 4 ijazah yang dimiliki oleh masyarakat
Jawa Barat yang berada dalam sampel. Mayoritas ijazah yang dimiliki
masyarakat adalah ijazah/STTB tingkat SD (3) sebanyak 22.586 orang,
diikuti ijazah/STTB tingkat SMP (8) sebanyak 13.673 orang, lalu sebanyak
13.663 orang mengatakan tidak memiliki ijazah SD (25), dan terakhir
ijazah/STTB tingkat SMA (13) sebanyak 13.292 orang.
# Filter Data
data_stacked <- data %>%
filter(R620 %in% c("3", "4", "8", "13", "15", "20", "21")) %>%
filter(R617%in% c("450000", "500000", "750000", "4200000"))%>%
filter(R611%in% c("1", "2"))%>%
filter(R404%in% c("1", "2", "3","4"))%>%
filter(R405%in% c("1", "2"))
ggplot(data_stacked, aes(x = as.factor(R611), y = R617, fill = as.factor(R620))) +
geom_bar(stat = "identity") +
labs(fill = "Jenjang Pendidikan") +
ggtitle("Jumlah Uang PIP per Jenjang Pendidikan dan Kategori Sekolah") +
xlab("Kategori Sekolah") +
ylab("Jumlah Uang PIP") +
scale_fill_brewer(palette = "Accent") +
theme_minimal()
Dari hasil analisis melalui stacked bar chart diatas dengan data sampel
masyarakat di Jawa Barat dapat diketahui bahwa jumlah uang PIP lebih
banyak untuk mereka yang menjalani pendidikan di sekolah negeri (1)
dengan jenjang pendidikan SD (3) dan diikuti jenjang pendidikan SMP (8)
di Jawa Barat. Sedangkan untuk mereka yang menjalani pendidikan di
sekolah swasta lebih sedikit yang menerima uang PIP dan jumlah uang PIP
yang diterima paling banyak ada di jenjang SD (3), SMP (8), dan S1 (21)
dengan nominal yang hampir sama.