VISDAT PROJECT II

by Muhammad Nachnoer Novatron Fitra Arss

A. Input Data

  1. Memasukkan data csv dari file eksternal
  2. StudentsPerformance <- read.csv2("C:/Users/falco/Downloads/StudentsPerformance.csv", sep=",")

  3. Menampilkan struktur data
  4. library(tidyverse)
    tibble(StudentsPerformance)
    ## # A tibble: 1,000 x 8
    ##    gender race.ethnicity parental.level.of.~ lunch  test.preparation~ math.score
    ##    <chr>  <chr>          <chr>               <chr>  <chr>                  <int>
    ##  1 female group B        bachelor's degree   stand~ none                      72
    ##  2 female group C        some college        stand~ completed                 69
    ##  3 female group B        master's degree     stand~ none                      90
    ##  4 male   group A        associate's degree  free/~ none                      47
    ##  5 male   group C        some college        stand~ none                      76
    ##  6 female group B        associate's degree  stand~ none                      71
    ##  7 female group B        some college        stand~ completed                 88
    ##  8 male   group B        some college        free/~ none                      40
    ##  9 male   group D        high school         free/~ completed                 64
    ## 10 female group B        high school         free/~ none                      38
    ## # ... with 990 more rows, and 2 more variables: reading.score <int>,
    ## #   writing.score <int>

B.Wrangling Data

  1. Memanggil package “dplyr”
  2. library(dplyr)

  3. Proses wrangling data menggunakan fungsi mutate()
  4. Data.Siswa <- StudentsPerformance%>%mutate(score.average=(math.score+reading.score+writing.score)/3)

  5. Menampilkan struktur data yang telah memiliki peubah baru yaitu rataan nilai siswa pada kolom terakhir
  6. tibble(Data.Siswa[,5:9])
    ## # A tibble: 1,000 x 5
    ##    test.preparation.course math.score reading.score writing.score score.average
    ##    <chr>                        <int>         <int>         <int>         <dbl>
    ##  1 none                            72            72            74          72.7
    ##  2 completed                       69            90            88          82.3
    ##  3 none                            90            95            93          92.7
    ##  4 none                            47            57            44          49.3
    ##  5 none                            76            78            75          76.3
    ##  6 none                            71            83            78          77.3
    ##  7 completed                       88            95            92          91.7
    ##  8 none                            40            43            39          40.7
    ##  9 completed                       64            64            67          65  
    ## 10 none                            38            60            50          49.3
    ## # ... with 990 more rows

  7. Reformat peubah parental.level.of.education sesuai urutan jenjang pendidikan
  8. fc <- factor(Data.Siswa$parental.level.of.education)
    Data.Siswa$parental.level.of.education <- factor(fc, levels=c("high school", "some high school", "some college", "associate's degree", "bachelor's degree", "master's degree"))
    levels(Data.Siswa$parental.level.of.education)
    ## [1] "high school"        "some high school"   "some college"      
    ## [4] "associate's degree" "bachelor's degree"  "master's degree"

C. Boxplot + Violin Plot

  1. Memanggil package “ggplot2”
  2. library(ggplot2)

  3. Membuat kelompok dengan violin plot(kursus persiapan ujian) dan boxplot(tingkat pendidikan orang tua)
  4. ggplot(Data.Siswa, mapping=aes(x=test.preparation.course, y=score.average, fill=parental.level.of.education))+geom_violin(fill="#553374", alpha=0.3, trim=F,width=1.02)+geom_boxplot()+ labs(title="Sebaran Rataan Nilai Siswa Sesuai Keikutsertaannya dalam Kursus", subtitle="Berdasarkan Tingkat Pendidikan Orang Tua")+coord_flip()+scale_fill_brewer(palette="YlOrBr")

  5. Insight
    • Pertama, nampak bahwa posisi violin plot dari kelompok siswa yang menyelesaikan kursus persiapan ujian lebih ke kanan dibandingkan dengan siswa yang tidak mengikuti kursus tersebut. Dengan kata lain, siswa yang mengikuti kursus memiliki nilai rataan yang cenderung lebih tinggi dibandingkan dengan siswa yang tidak mengikutinya.
    • Kedua, dari poses wrangling data, tingkat pendidikan orang tua telah diurutkan secara ascending (rendah-tinggi), dan dari boxplot pada kedua kelompok, terlihat bahwa pusat data(nilai median) juga terurut sesuai dengan tingkat pendidikan orang tuanya. Artinya, jenjang pendidikan yang lebih tinggi cenderung memiliki nilai rataan yang lebih besar (sangat tergambarkan pada kelompok siswa yang tidak mengikuti kursus), sedangkan jenjang pendidikan yang lebih rendah memiliki nilai ataan yang juga lebih rendah. Bagi siswa yang mengikuti kursus, sebaran nilai dan 25% data yang diamati lebih kecil (Q1), lebih rendah dibandikan dengan yang mengikuti kursus. Dengan demikian, jenjang pendidikan orang tua dan keikutsertaannya dalam kursus berpengaruh terhadap nilai rataan ujian siswa.

D. Ridgline Plot

  1. Memanggil package “ggridges”
  2. library(ggridges)

  3. Membuat ridgeline plot berkelompok dengan fill tertentu
  4. ggplot(Data.Siswa, mapping=aes(x=writing.score, fill=gender, y=parental.level.of.education))+geom_density_ridges(alpha=0.86)+labs(title="Sebaran Rataan Nilai Siswa Sesuai Tingkat Pendidikan Orang Tua", subtitle="Berdasarkan Jenis Kelaminnya")+scale_fill_brewer(palette = "BrBG")+theme_dark()

  5. Insight
    • Kali ini, nilai rataan siswa dikelompokkan berdasarkan tingkat pendidikan orang tuanya, lalu dibandingkan sesuai jenis kelaminnya. Seirama dengan visualisasi sebelumnya. bahwa tingkat pendidikan orang tua berbanding lurus dengan nilai rataan siswa. Sedangkan, jika dibandingkan sesuai jenis kelaminnya, siswa yang mendapat nilai diatas 80 lebih banyak diraih oleh siswa perempuan. Hal ini ditunjukkan dengan bentuk ridgeline plot yang lebih gemuk dibandingkan laki-laki.
    • Sebaliknya, siswa yang mendapat nilai dibawah 60 lebih banyak diraih oleh siswa lak-laki, yang ditunjukkan dengan bentuk ridgeline plot yang lebih gemuk dibandingkan perempuan. Hal ini menginterpretasikan bahwa data tidak hanya menunjukkan hubungan yang sinergis antara tingkat pendidikan orang tua dengan nilai rataan yang didapatkan oleh siswa, tetapi juga menggambarkan bahwa siswa yang mendapat nilai tinggi (>=80) cenderung didominasi oleh perempuan.

E. Histogram

  1. Membuat histogram dengan mengatur fill dan facet_wrap
  2. ggplot(Data.Siswa, mapping=aes(x=math.score, fill=test.preparation.course))+geom_histogram(color="black",binwidth=5)+theme_dark()+scale_fill_brewer(palette = "Set3")+ggtitle(label="Perbandingan Nilai Matematika Siswa Sesuai Jenis Kelaminnya", subtitle="Berdasarkan Keikutsertaan dalam Kursus Persiapan Ujian")+facet_wrap(~gender,ncol=1)+scale_fill_brewer(palette = "YlOrRd")

  3. Insight
    • Histogram di atas menitikberatkan pada nilai matematika siswa serta membagi kelompok siswa berdasarkan jenis kelaminnya. Tiap batang mewakili frekuensi siswa terhadap keikutsertannya dalam kursus persiapan ujian. Frekuensi (tinggi batang) yang mengikuti kursus pada seluruh selang nilai cenderung lebih besar dibandingkan dengan siswa yang tidak mengikuti kegiatan tersebut.Namun, bagi nilai laki-laki yang diatas 95 lebih banyak didapatkan oleh siswa yang mengikuti kursus. Begitupun dengan siswa perempuan yang memperoleh nilai 100. Kedua kelompok gender memiliki sebaran yang mendekati normal, tetapi nilai minimum siswa laki-laki lebih tinggi dibandingkan siswa perempuan. Hal ini ditandai dengan posisi diagram yang lebih ke kanan. Teramati pada siswa perempuan terdapat beberapa orang yang merupakan pencilan dengan nilai dibawah 15. Sedangkan, siswa yang bernilai 70 ke atas didominasi oleh siswa laki-laki.