Working Directory & Input Data
#memanggil library
library(data.table)
## Warning: package 'data.table' was built under R version 4.1.2
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.5 v dplyr 1.0.7
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.1.1 v forcats 0.5.1
## Warning: package 'ggplot2' 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::between() masks data.table::between()
## x dplyr::filter() masks stats::filter()
## x dplyr::first() masks data.table::first()
## x dplyr::lag() masks stats::lag()
## x dplyr::last() masks data.table::last()
## x purrr::transpose() masks data.table::transpose()
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
#memasukan data
DataPrak2 <- read.csv("C:/Users/ACER/Downloads/StudentsPerformance.csv")
#memanggil data
head(DataPrak2)
## gender race.ethnicity parental.level.of.education lunch
## 1 female group B bachelor's degree standard
## 2 female group C some college standard
## 3 female group B master's degree standard
## 4 male group A associate's degree free/reduced
## 5 male group C some college standard
## 6 female group B associate's degree standard
## test.preparation.course math.score reading.score writing.score
## 1 none 72 72 74
## 2 completed 69 90 88
## 3 none 90 95 93
## 4 none 47 57 44
## 5 none 76 78 75
## 6 none 71 83 78
Barplot atau diagram batang adalah diagram yang berguna untuk menyajikan perbandingan data pada satu atau beberapa variabel data. Data pada grafik batang disajikan dalam bentuk persegi panjang horizontal, yang panjangnya sesuai dengan nilai masing-masing.
Contoh pengaplikasian penggunaan barplot atau diagram batang menggunakan syntax berikut :
ggplot(DataPrak2, aes(x=reorder(parental.level.of.education, +table(parental.level.of.education)[parental.level.of.education]), fill=parental.level.of.education)) +
geom_bar() +
scale_fill_manual(values=c("#BAFFB4", "#998CEB", "#FFFDA2",
"#6A5495", "#BB6464", "#FFAB76")) +
labs(title = "Frekuensi Tingkat Pendidikan Orang Tua",
x = "Pendidikan Orang Tua",
y = "Frekuensi") +
theme(plot.title = element_text(hjust = 0.5))
Berdasarkan barplot di atas, dapat kita peroleh informasi bahwa frekuensi tingkat pendidikan dari orang tua siswa yang paling sedikit adalah master’s degree (S2), diikuti dengan bachelor’s degree (S1), some high school (SMA), high school (SMP), associate’s degree (D3), serta yang paling banyak adalah some collage.
Violin Plot adalah metode untuk memvisualisasikan distribusi data numerik dari berbagai variabel. Ini mirip dengan Plot Kotak tetapi dengan plot yang diputar di setiap sisi, memberikan lebih banyak informasi tentang perkiraan kepadatan pada sumbu y. Kepadatan dicerminkan dan dibalik dan bentuk yang dihasilkan diisi, menciptakan gambar yang menyerupai biola. Keuntungan dari plot biola adalah dapat menunjukkan nuansa distribusi yang tidak terlihat dalam plot kotak. Di sisi lain, diagram kotak lebih jelas menampilkan pencilan dalam data.
Contoh pengaplikasian penggunaan violin plot menggunakan syntax berikut:
ggplot(DataPrak2, aes(x = race.ethnicity, y = math.score, fill = race.ethnicity)) +
geom_violin(trim=FALSE) + scale_y_log10() +
stat_summary(fun.y = "mean", geom = "point", shape = 6, size = 3, color = "#54BAB9") +
stat_summary(fun.y = "median", geom = "point", shape = 8, size = 3, color = "#E9DAC1")+
labs(title = "Sebaran Nilai Matematika Siswa berdasarkan Ras/Etnis",
x = "Ras/Etnis Siswa",
y = "Nilai Matematika")+
theme(plot.title = element_text(hjust = 0.5))
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 1 rows containing non-finite values (stat_ydensity).
## Warning: Removed 1 rows containing non-finite values (stat_summary).
## Warning: Removed 1 rows containing non-finite values (stat_summary).
Visualisasi di atas menampilkan data sebaran nilai matematika siswa berdasarkan ras/etnis dalam bentuk violin plot. Berdasarkan visualisasi tersebut, dapat kita peroleh informasi bahwa simbol segitiga menunjukkan sebagai rataan dan simbol bintang menunjukkan sebagai median. Selain itu, visualisasi di atas menunjukkan bahwa sebaran dari grup B cukup bervariasi. Akan tetapi, perbedaan sebaran dari grup A, grup C, grup D, grup E tidak terlalu signifikan. Selain itu, berdasarkan visualisasi di atas, dapat kita simpulkan bahwa grup E memiliki nilai matematika yang tertinggi karena semakin cembung violin plot, maka kepadatan data peluangnya semakin besar.
Adapun contoh lain dengan syntax yang dapat digunakan melalui library vioplot :
math.score <- DataPrak2$`math.score`
vioplot(math.score,
col = "#E9DAC1",
rectCol = "#54BAB9",
lineCol = "black",
colMed = "#8a77bb",
border = "black",
plotCentre = "points")
Visualisasi di atas menampilkan data nilai matematika siswa dalam bentuk violin plot. Berdasarkan visualisasi tersebut, dapat kita peroleh informasi bahwa nilai matematika terbanyak yang diperoleh siswa berada di rentang nilai 60 - 80.
Stacked bar chart adalah visualisasi dengan batang yang ditampilkan secara berkelompok dapat pula dilakukan dengan menumpuk batang-batang tersebut. Batang dari satu kategori di kelompok yang sama diletakkan di atas barang dari kategori lainnya.
contoh pengaplikasian penggunaan stacked bar chart menggunakan syntax berikut:
ggplot(DataPrak2, aes(race.ethnicity, fill=gender)) +
geom_bar() +
labs(title = "Sebaran Jenis Kelamin berdasarkan Ras/Etnis",
x = "Ras/Etnis",
y = "Jenis Kelamin")+
theme(plot.title = element_text(hjust = 0.5))
Berdasarkan stacked bar chart di atas, dapat kita peroleh informasi bahwa sebaran bahwa pada grup C memiliki frekuensi yang paling banyak dan grup A memiliki frekuensi yang paling sedikit dibandingkan dengan grup B, grup C, grup D, dan grup E. Pada grup A, siswa yang berjenis kelamin laki-laki memiliki frekuensi yang paling banyak. Pada grup B, C, dan D siswa yang berjenis kelamin perempuan memiliki frekuensi yang paling banyak. Sedangkan pada grup E, siswa yang berjenis kelamin laki-laki memiliki frekuensi yang paling banyak.
Dot plot adalah grafik yang menyajikan distribusi dan variabel numerik yang setiap nilai dalam data dilambangkan dengan titik. Dot plot mirip dengan diagram batang yang menunjukan modus suatu data, yaitu nilai ketika batangnya semakin tinggi dalam hal ini berwujud titik.
contoh pengaplikasian penggunaan dot plot menggunakan syntax berikut:
ggplot(DataPrak2, aes(x = reading.score)) +
geom_dotplot(dotsize=0.2, col= "red") +
scale_y_continuous(NULL, breaks = NULL) +
labs(title = "Sebaran Frekuensi Nilai Membaca Siswa",
x = "Nilai 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`.
Visualisasi di atas menyajikan data nilai membaca siswa dalam bentuk dotplot. Berdasarkan visualisasi tersebut, dapat kita lihat sebaran nilai membaca siswa. Diperoleh bahwa nilai membaca yang terendah yang didapatkan oleh siswa bernilai sedikit dibawah 20 serta nilai membaca yang tertinggi didapatkan oleh siswa bernilai 100.
Lollipop Chart merupakan suatu composite chart yang terdiri dari elemen bar dan lingkaran. Lollipop Chart menyerupai bar chart namun memiliki bola/lingkaran di ujung tiap barnya yang akan memberikan “highlight” terhadap suatu nilai data. Oleh karena itu, fungsinya pun sama dengan bar chart yaitu membandingkan data kategorik.
contoh pengaplikasian penggunaan lollipop chart menggunakan syntax berikut:
DataPrak2 %>%
group_by(`parental.level.of.education`) %>%
summarise(rataratamtk = mean(`math.score`)) %>%
ggplot(aes(x=`parental.level.of.education`, y=rataratamtk)) +
geom_point(size=8, col="#A1B57D") +
geom_segment(aes(x=`parental.level.of.education`, xend=`parental.level.of.education`, y=0, yend=rataratamtk), col="#A1B57D") +
geom_label(aes(`parental.level.of.education`, rataratamtk+1, label=signif(rataratamtk, 4)), nudge_x = 0.4, size=5) +
labs(title = "Rata-Rata Nilai Matematika Siswa Berdasarkan Tingkat Pendidikan Orang Tua",
x = "Tingkat Pendidikan Orang Tua", y="Rata-rata Nilai") +
theme(plot.title = element_text(hjust = 0.5))
Berdasarkan lollipop chart di atas, hubungan antara rata-rata nilai matematika dengan tingkat pendidikan orang tua, dapat kita peroleh 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 berpengaruh positif terhadap rata-rata skor matematika siswa.