library(dplyr)
## Warning: package 'dplyr' was built under R version 4.1.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.1.2
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v stringr 1.4.0
## v tidyr 1.1.4 v forcats 0.5.1
## v readr 2.1.1
## Warning: package 'ggplot2' was built under R version 4.1.2
## Warning: package 'tibble' was built under R version 4.1.2
## Warning: package 'tidyr' was built under R version 4.1.2
## Warning: package 'readr' was built under R version 4.1.2
## Warning: package 'purrr' was built under R version 4.1.2
## Warning: package 'stringr' was built under R version 4.1.2
## Warning: package 'forcats' was built under R version 4.1.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(ggplot2)
studentperf <- read.csv("C:/Users/ASUS/Downloads/DataTugas2.csv")
colnames(studentperf)[1] <- "Jenis Kelamin"
colnames(studentperf)[2] <- "Ras/Etnis"
colnames(studentperf)[3] <- "Pendidikan Orang Tua"
colnames(studentperf)[4] <- "Makan Siang"
colnames(studentperf)[5] <- "Kursus"
colnames(studentperf)[6] <- "Skor Matematika"
colnames(studentperf)[7] <- "Skor Membaca"
colnames(studentperf)[8] <- "Skor Menulis"
head(studentperf)
## Jenis Kelamin Ras/Etnis Pendidikan Orang Tua Makan Siang Kursus
## 1 female group B bachelor's degree standard none
## 2 female group C some college standard completed
## 3 female group B master's degree standard none
## 4 male group A associate's degree free/reduced none
## 5 male group C some college standard none
## 6 female group B associate's degree standard none
## Skor Matematika Skor Membaca Skor Menulis
## 1 72 72 74
## 2 69 90 88
## 3 90 95 93
## 4 47 57 44
## 5 76 78 75
## 6 71 83 78
studentperf$`Jenis Kelamin`<- as.factor(studentperf$`Jenis Kelamin`)
studentperf %>%
count(`Jenis Kelamin`) %>%
mutate(`Jenis Kelamin` = fct_reorder(`Jenis Kelamin`, n , .desc = F)) %>%
ggplot(aes(x=`Jenis Kelamin`, y=n, fill=`Jenis Kelamin`)) +
scale_fill_manual(values = c("#adad85", "#8a8a5c")) +
ggtitle("Jenis Kelamin Siswa") +
labs(y="Jumlah Siswa", x="Jenis Kelamin") +
theme(plot.title = element_text(hjust = 0.5)) + geom_bar(stat = 'identity')
Barplot jenis kelamin siswa di atas menunjukkan bahwa siswa yang berjenis kelamin laki-laki (male) berjumlah lebih sedikit dibandingkan dengan siswa yang berjenis kelamin perempuan (female).
studentperf$`Ras/Etnis` <- as.factor(studentperf$`Ras/Etnis`)
studentperf %>%
count(`Ras/Etnis`) %>%
ggplot(aes(x = `Ras/Etnis`, y=n, fill=`Ras/Etnis`)) +
scale_fill_manual(values = c("#ad8585", "#ad9985", "#99ad85", "#8599ad", "#9985ad")) +
ggtitle("Ras/Etnis Siswa") +
labs(y="Jumlah Siswa", x="Ras/Etnis") +
theme(plot.title = element_text(hjust = 0.5)) + geom_bar(stat = 'identity')
Barplot di atas memberi informasi tentang ras/etnis siswa yang berasal dari lima grup yang berbeda, yaitu grup A, grup B, grup C, grup D, dan grup E. Dapat ditarik kesimpulan bahwa siswa dengan ras grup C memiliki frekuensi terbesar, diikuti dengan ras grup D sebagai frekuensi terbesar kedua, grup B, grup E, dan grup A dengan frekuensi terkecil.
studentperf$`Pendidikan Orang Tua` <- as.factor(studentperf$`Pendidikan Orang Tua`)
studentperf %>%
count(`Pendidikan Orang Tua`) %>%
mutate(`Pendidikan Orang Tua`= fct_reorder(`Pendidikan Orang Tua`, n, .desc = T)) %>%
ggplot(aes(x = `Pendidikan Orang Tua`, y=n, fill=`Pendidikan Orang Tua`)) +
scale_fill_manual(values = c("#663300", "#b35900", "#e67300", "#ff8c1a", "#ffa64d", "#ffcc99")) +
ggtitle("Tingkat Pendidikan Orang Tua") +
labs(y="Frekuensi", x="Tingkat Pendidikan Orang Tua") +
theme(plot.title = element_text(hjust = 0.5), axis.text.x = element_text(angle = 30, vjust = 0.8)) + geom_bar(stat = 'identity')
Barplot di atas memberi informasi tentang tingkat pendidikan orang tua siswa yang terdiri dari enam kategori, yaitu some college, D3, SMA, some high school, S1, dan S2. Barplot ditampilkan secara berurutan mulai dari frekuensi yang paling tinggi ke frekuensi yang paling rendah. Tingkat pendidikan orang tua siswa dengan frekuensi tertinggi adalah some college dengan jumlah 226 orang dan yang terendah adalah lulusan S2 dengan jumlah 59 orang.
studentperf$`Makan Siang` <- as.factor(studentperf$`Makan Siang`)
studentperf %>%
count(`Makan Siang`) %>%
mutate(`Makan Siang` = fct_reorder(`Makan Siang`, n, .desc = F)) %>%
ggplot(aes(x=`Makan Siang`, y=n, fill=`Makan Siang`)) +
scale_fill_manual(values = c("#adad85", "#8a8a5c")) +
ggtitle("Makan Siang") +
labs(y="Jumlah Siswa", x="Makan Siang") +
theme(plot.title = element_text(hjust = 0.5)) + geom_bar(stat = 'identity')
Barplot di atas merupakan hasil visualisasi dari data makan siang siswa. Dapat dilihat bahwa siswa yang makan siangnya berada pada kategori free/reduced memiliki frekuensi yang lebih rendah daripada siswa yang makan siangnya berada pada kategori standard.
studentperf$Kursus <- as.factor(studentperf$Kursus)
studentperf %>%
count(Kursus) %>%
mutate(Kursus = fct_reorder(Kursus, n, .desc = T)) %>%
ggplot(aes(x=Kursus, y=n, fill=Kursus)) +
scale_fill_manual(values = c("#75a3a3", "#b3cccc")) +
ggtitle("Kursus Persiapan Ujian") +
labs(y="Jumlah Siswa", x="Kursus Persiapan Ujian") +
theme(plot.title = element_text(hjust = 0.5)) + geom_bar(stat = 'identity')
Barplot di atas memberi informasi tentang kursus persiapan ujian yang diikuti oleh siswa. Didapatkan kesimpulan bahwa lebih dari 600 siswa belum mengikuti kursus untuk persiapan ujian (none) dan lebih dari 350 siswa sudah mengikuti kursus persiapan ujian (completed).
ggplot(studentperf, aes(x=`Skor Matematika`)) +
geom_dotplot(dotsize=0.3) +
scale_y_continuous(NULL, breaks = NULL) +
ggtitle("Skor Matematika Siswa") +
labs(x="Skor Matematika") +
theme(plot.title = element_text(hjust = 0.5))
## Bin width defaults to 1/30 of the range of the data. Pick better value with `binwidth`.
library(vioplot)
## Warning: package 'vioplot' was built under R version 4.1.2
## Loading required package: sm
## Warning: package 'sm' was built under R version 4.1.2
## Package 'sm', version 2.2-5.7: type help(sm) for summary information
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.1.2
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
skormtk <- studentperf$`Skor Matematika`
vioplot(skormtk,
col = "#4b3c77",
rectCol = "#c4bbdd",
lineCol = "black",
colMed = "#8a77bb",
border = "black",
plotCentre = "points")
Visualisasi di atas menyajikan data skor Matematika siswa dalam bentuk dotplot dan violin plot. Dari visualisasi tersebut, dapat dilihat bahwa skor Matematika terendah yang didapatkan oleh siswa bernilai 0 serta skor tertinggi bernilai 100. Melalui violin plot di atas, dapat ditarik kesimpulan bahwa skor Matematika terbanyak yang diperoleh siswa berada pada rentang nilai 60 - 80.
ggplot(studentperf, aes(x=`Skor Membaca`)) +
geom_dotplot(dotsize=0.3) +
scale_y_continuous(NULL, breaks = NULL) +
ggtitle("Skor Membaca Siswa") +
labs(x="Skor Membaca") +
theme(plot.title = element_text(hjust = 0.5))
## Bin width defaults to 1/30 of the range of the data. Pick better value with `binwidth`.
skorbaca <- studentperf$`Skor Membaca`
vioplot(skorbaca,
col = "#36597c",
rectCol = "#cad9e8",
lineCol = "black",
colMed = "#5f8cb9",
border = "black",
plotCentre = "points")
Visualisasi di atas menyajikan data skor membaca siswa dalam bentuk dotplot dan violin plot. Dari visualisasi tersebut, dapat dilihat bahwa skor membaca terendah yang didapatkan oleh siswa bernilai sedikit dibawah 20 serta skor tertinggi bernilai 100. Melalui violin plot di atas, dapat ditarik kesimpulan bahwa skor siswa dalam membaca paling banyak berada pada rentang 60 - 80.
ggplot(studentperf, aes(x=`Jenis Kelamin`, y=`Skor Matematika`, fill=`Jenis Kelamin`)) +
ggtitle("Skor Matematika Siswa") +
scale_fill_manual(values = c("#ba9cc9", "#5388ac")) +
theme(plot.title = element_text(hjust = 0.5)) +
geom_boxplot()
ggplot(studentperf, aes(x=`Jenis Kelamin`, y=`Skor Membaca`, fill=`Jenis Kelamin`)) +
ggtitle("Skor Membaca Siswa") +
scale_fill_manual(values = c("#ba9cc9", "#5388ac")) +
theme(plot.title = element_text(hjust = 0.5)) +
geom_boxplot()
ggplot(studentperf, aes(x=`Jenis Kelamin`, y=`Skor Menulis`, fill=`Jenis Kelamin`)) +
ggtitle("Skor Menulis Siswa") +
scale_fill_manual(values = c("#ba9cc9", "#5388ac")) +
theme(plot.title = element_text(hjust = 0.5)) +
geom_boxplot()
Berdasarkan ketiga boxplot di atas, dapat dilihat bahwa rata-rata skor Matematika siswa laki-laki lebih tinggi daripada siswa perempuan. Akan tetapi, siswa perempuan lebih unggul dalam skor membaca dan menulis.
studentperf %>%
group_by(`Pendidikan Orang Tua`) %>%
summarise(averagemtk = mean(`Skor Matematika`)) %>%
ggplot(aes(x=`Pendidikan Orang Tua`, y=averagemtk)) +
geom_point(size=5, col="orange") +
geom_segment(aes(x=`Pendidikan Orang Tua`, xend=`Pendidikan Orang Tua`, y=0, yend=averagemtk)) +
geom_label(aes(`Pendidikan Orang Tua`, averagemtk+1, label=signif(averagemtk, 4)), nudge_x = 0.4, size=3) +
ggtitle("Rata-Rata Skor Matematika Siswa Berdasarkan Tingkat Pendidikan Orang Tua") +
labs(x="Tingkat Pendidikan Orang Tua", y="Rata-Rata Skor") +
theme(plot.title = element_text(hjust = 0.5), axis.text.x = element_text(angle = 25, vjust = 0.8))
Berdasarkan lollipop chart hubungan antara tingkat pendidikan orang tua dengan rata-rata nilai Matematika siswa di atas, diperoleh informasi bahwa rata-rata nilai Matematika tertinggi didapatkan oleh siswa yang orang tuanya merupakan lulusan S2, diikuti dengan S1, D3, some college, some high school, serta yang terendah adalah siswa yang orang tuanya merupakan lulusan SMA. Hal ini menunjukkan bahwa tingkat pendidikan orang tua memiliki pengaruh positif terhadap rata-rata skor Matematika siswa. Siswa yang tingkat pendidikan orang tuanya lebih tinggi cenderung mendapatkan skor Matematika yang tinggi pula.
studentperf %>%
group_by(`Pendidikan Orang Tua`) %>%
summarise(averagebaca = mean(`Skor Membaca`)) %>%
ggplot(aes(x=`Pendidikan Orang Tua`, y=averagebaca)) +
geom_point(size=5, col="orange") +
geom_segment(aes(x=`Pendidikan Orang Tua`, xend=`Pendidikan Orang Tua`, y=0, yend=averagebaca)) +
geom_label(aes(`Pendidikan Orang Tua`, averagebaca+1, label=signif(averagebaca, 4)), nudge_x = 0.4, size=3) +
ggtitle("Rata-Rata Skor Membaca Siswa Berdasarkan Tingkat Pendidikan Orang Tua") +
labs(x="Tingkat Pendidikan Orang Tua", y="Rata-Rata Skor") +
theme(plot.title = element_text(hjust = 0.5), axis.text.x = element_text(angle = 25, vjust = 0.8))
Berdasarkan lollipop chart hubungan antara tingkat pendidikan orang tua dengan rata-rata nilai membaca siswa di atas, diperoleh informasi bahwa rata-rata nilai membaca tertinggi didapatkan oleh siswa yang orang tuanya merupakan lulusan S2, diikuti dengan S1, D3, some college, some high school, serta yang terendah adalah siswa yang orang tuanya merupakan lulusan SMA. Hal ini menunjukkan bahwa tingkat pendidikan orang tua memiliki pengaruh positif terhadap rata-rata skor membaca siswa. Siswa yang tingkat pendidikan orang tuanya lebih tinggi cenderung mendapatkan skor membaca yang tinggi pula.