A. Pendahuluan

Visualisasi data merupakan upaya menyampaikan informasi yang terkandung pada data agar lebih mudah dipahami oleh orang lain. Dalam mempersiapkan bahan visualisasi, seseorang perlu memahami dengan baik bagaimana mentrasformasi data (baik yang berupa data mentah maupun statistik ringkasan hasil analisis) menjadi suatu tampilan visual sedemikian rupa sehingga informasi yang ingin disampaikan dapat diterima dengan tepat dan mudah oleh siapapun yang melihatnya.

Pada tugas praktikum 2 ini, data yang digunakan adalah data performa dari siswa yang memiliki delapan jenis peubah dan seribu entri. Peubah tersebut antara lain gender, ras/etnis, tingkat pendidikan orang tua, makan siang, bimbel untuk menghadapi ujian, skor matematika, skor membaca, dan skor menulis.

A.1 Library

Library yang digunakan adalah data.table dan tidyverse. Library tidyverse merupakan salah satu package yang berfungsi untuk pengolahan data import dan export data, membuat visualisasi data, dan juga permodelan 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.6     v dplyr   1.0.7
## v tidyr   1.1.4     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.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::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()

A.2 Input Data

Dalam menginput data, digunakan fungsi setwd(). Fungsi ini digunakan untuk merubah atau menentukan dimana working directory yang akan kita gunakan.

#menginput data
setwd("D://Kuliah//Semester 4//STA1262 Visualisasi Data//Tugas 2") 
DataSource <- read.csv("Data.csv")
#memanggil data
head(DataSource)
##   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

B. Visualisasi Besaran Data

B.1 Bar Chart

Bar chart atau diagram batang merupakan diagram yang sudah dikenal luas penggunaannya oleh masyarakat. Pada dasarnya, bar chart ini berbentuk batang-batang yang disusun tegak berdampingan satu dengan yang lain. Tinggi dari batang proporsional dengan nilai data yang digambarkan. Kondisi dengan nilai data yang semakin besar akan ditampilkan dalam bentuk batang yang semakin tinggi, dan sebaliknya.

Sebelumnya, mengganti nama variable dengan menggunakan library data.table:

#mengganti nama variable
setnames(DataSource,"parental.level.of.education","eduparent")

Berikut contoh syntax yang dapat digunakan melalui library ggplot2:

#barplot
ggplot(DataSource, aes(x=reorder(eduparent, -table(eduparent)[eduparent]), fill=eduparent)) + 
  geom_bar() +
  scale_fill_manual(values=c("#FF6363", "#FFAB76", "#FFFDA2", 
                             "#BAFFB4", "#77E4D4", "#998CEB")) +
  labs(title = "Frekuensi Tingkat Pendidikan Orang Tua", 
       x = "Tingkat Pendidikan Orang Tua",
       y = "Frekuensi") +
  theme(plot.title = element_text(hjust = 0.3))

Interpretasi: Dari bar chart di atas, dapat disimpulkan bahwa frekuensi tingkat pendidikan dari orang tua siswa paling banyak terdapat pada tingkat some college. Kemudian secara berturut-turut diikuti oleh tingkat pendidikan associate’s degree (setara D3), high school (SMP), some high school (SMA), bachelor’s degree (setara S1), dan dengan frekuensi paling sedikit terdapat pada tingkat master’s degree (setara S2).

B.2 Violin Plot

Violin plot diperoleh dari gabungan density plot dan boxplot. Badan biola dibangun dari density plot dan pencerminannya sehingga terkesan membentuk badan biola yang simetris. Di tengah biola ditambahkan boxplot yang menyerupai senar biolanya.

#mendefinisikan variable baru
NewTable <- 
  mutate(DataSource, value = (math.score+writing.score+reading.score)/3)
#memanggil data dari variable baru
head(NewTable)
##   gender race.ethnicity          eduparent        lunch test.preparation.course
## 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
##   math.score reading.score writing.score    value
## 1         72            72            74 72.66667
## 2         69            90            88 82.33333
## 3         90            95            93 92.66667
## 4         47            57            44 49.33333
## 5         76            78            75 76.33333
## 6         71            83            78 77.33333

Berikut contoh syntax yang dapat digunakan melalui library ggplot2:

#violin plot
ggplot(NewTable, aes(x=eduparent, y=value, fill(eduparent))) + 
  geom_violin(aes(fill=eduparent), trim=FALSE) +
  geom_boxplot(width=0.3) +
  scale_fill_manual(values=c("#FF6363", "#FFAB76", "#FFFDA2", 
                             "#BAFFB4", "#77E4D4", "#998CEB")) +
  labs(title = "Sebaran Nilai Rata-Rata berdasarakan Tingkat Pendidikan Orang Tua", 
       x = "Tingkat Pendidikan Orang Tua",
       y = "Nilai") +
  theme(plot.title = element_text(hjust = 0.5), legend.position="right")

Interpretasi: Dari violin plot di atas dapat dilihat sebaran dari nilai rata-rata tiga ujian (matematika, membaca, dan menulis) yang dikelompokkan berdasarkan tingkat pendidikan orang tua. Semakin cembung violin plot, maka kepadatan dari datanya akan semakin besar. Dapat terlihat bahwa pada tingkat pendidikan master’s degree mempunyai kepadatan data yang paling sedikit dan pada tingkat pendidikan high school mempunyai kepadatan data yang paling besar. Dapat terlihat juga nilai pencilan paling rendah terdapat pada plot berwarna ungu atau pada tingkat pendidikan high school. Selain itu, berdasarkan boxplot dapat diamati pula bahwa nilai median tertinggi berada pada plot berwarna hijau muda atau pada tingkat pendidikan master’s degree.

B.3 Dot Plot

Dot plot atau plot titik merupakan penayangan grafik dwi-dimensi dari objek yang menujukkan karakteristik kuantitatifnya. Satu sumbu (sumbu datar) mencantumkan nilai kuantitatif yang akan diplotkan. Sumbu lainnya (sumbu tegak) menunjukkan label yang berhubungan dengan setiap nilai numeriknya.

Berikut contoh syntax yang dapat digunakan melalui library ggplot2:

#dot plot
ggplot(NewTable, aes(x = value)) +
  geom_dotplot(dotsize=0.2) +
  scale_y_continuous(NULL, breaks=NULL) +
  theme(plot.title = element_text(hjust = 0.5)) +
  labs(title = "Sebaran Nilai Rata-Rata Siswa", x="Nilai Rata-Rata")
## Bin width defaults to 1/30 of the range of the data. Pick better value with `binwidth`.

Interpretasi: Berdasarkan dot plot di atas, dapat diketahui sebaran nilai rata-rata dari ketiga ujian (matematika, membaca, dan menulis) mayoritas berada pada rentang 60-80. Tidak sedikit pula siswa yang mendapatkan nilai pada rentang 80-100. Walaupun demikian, masih terdapat nilai yang berada cukup jauh dari rentang tersebut, yakni terdapat pada rentang 0-25.

B.4 Stacked-Bar Chart

Penyajian 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. Penyajian ini dikenal sebagai stacked-bar chart.

Berikut contoh syntax yang dapat digunakan melalui library ggplot2:

#stacked-bar chart
ggplot(DataSource, aes(x=reorder(race.ethnicity, -table(race.ethnicity)[race.ethnicity]), fill=eduparent)) + 
  geom_bar() + 
  scale_fill_manual(values=c("#FF6363", "#FFAB76", "#FFFDA2", 
                             "#BAFFB4","#77E4D4", "#998CEB")) +
  theme(plot.title = element_text(hjust = 0.5), legend.position="right") +
  labs(title= "Sebaran Ras/Etnis berdasarkan Pendidikan Orang Tua", x="Ras/Etnis", y="Frekuensi")

Interpretasi: Dari Stacked-Bar chart di atas, dapat diketahui sebaran bahwa pada grup C memiliki frekuensi yang paling banyak dan grup A memiliki frekuensi yang paling sedikit dibandingkan dengan grup-grup yang lain. Pada grup A, tingkat pendidikan some high school memiliki frekuensi yang paling banyak. Pada grup B, tingkat pendidikan associate’s degree memiliki frekuensi yang paling banyak. Pada grup C, tingkat pendidikan associate’s degree memiliki frekuensi yang paling banyak. Padaa grup D, tingkat pendidikan some college memiliki frekuensi yang paling banyak. Sedangkan pada grup E, tingkat pendidikan associate’s degree memiliki frekuensi yang paling banyak. Walaupun begitu, tingkat pendidikan master’s degree memiliki frekuensi yang paling sedikit di semua grup.

B.5 Lollipop Chart

Plot alternatif dari bar chart adalah lollipop chart. Seperti namanya, plot ini terinspirasi dari permen lolipop.

Berikut contoh syntax yang dapat digunakan melalui library ggplot2:

#membuat variable baru
DataSource %>% 
  group_by(gender) %>%
  summarise(rerata = mean((math.score+writing.score+reading.score)/3)) %>%
  
#lollipop chart
ggplot(aes(x=gender, y=rerata)) +  
  geom_point(size = 7, colour = c("#FF6363","#FFAB76")) +
  geom_segment(aes(x=gender, xend=gender, y=0, yend=rerata), color=c("#FF6363","#FFAB76"))+ 
  geom_label(aes(gender, rerata+1, label = signif(rerata,3)), 
             colour = "black", nudge_x =0.15, size=5) +
  labs( y= "Rata-rata Nilai", x="Jenis Kelamin") + 
  theme(axis.text.x = element_text(angle=20, vjust=0.3, color="black")) +
  ggtitle("Rata-rata Nilai Berdasarkan Jenis Kelamin") + 
  theme(plot.title = element_text(hjust = 0.5))

Interpretasi: Berdasarkan lollipop chart di atas, didapatkan informasi bahwa siswa berjenis kelamin perempuan memiliki rata-rata dari tiga skor (matematika, membaca, dan menulis) lebih tinggi dengan nilai 69.6 daripada siswa berjenis kelamin laki-laki yang memiliki nilai 65.8. Hal ini menunjukkan bahwa mayoritas siswa perempuan lebih unggul daripada siswa laki-laki dalam bidang matematika, membaca, dan menulis.

Sekian dan Terima Kasih