R Markdown

1. Import Data

# Load library
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## âś” dplyr     1.1.4     âś” readr     2.1.5
## âś” forcats   1.0.0     âś” stringr   1.5.1
## âś” ggplot2   3.5.1     âś” tibble    3.2.1
## âś” lubridate 1.9.4     âś” tidyr     1.3.1
## âś” purrr     1.0.4     
## ── 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(ggplot2)
library(ggcorrplot)

data<- read.csv("C:/Users/Asus/OneDrive/Dokumen/PSD/Expanded_Data.csv")

# Menampilkan 6 baris pertama dari dataset
head(data)
##   X Gender EthnicGroup         ParentEduc    LunchType TestPrep
## 1 0 female              bachelor's degree     standard     none
## 2 1 female     group C       some college     standard         
## 3 2 female     group B    master's degree     standard     none
## 4 3   male     group A associate's degree free/reduced     none
## 5 4   male     group C       some college     standard     none
## 6 5 female     group B associate's degree     standard     none
##   ParentMaritalStatus PracticeSport IsFirstChild NrSiblings TransportMeans
## 1             married     regularly          yes          3     school_bus
## 2             married     sometimes          yes          0               
## 3              single     sometimes          yes          4     school_bus
## 4             married         never           no          1               
## 5             married     sometimes          yes          0     school_bus
## 6             married     regularly          yes          1     school_bus
##   WklyStudyHours MathScore ReadingScore WritingScore
## 1            < 5        71           71           74
## 2         5 - 10        69           90           88
## 3            < 5        87           93           91
## 4         5 - 10        45           56           42
## 5         5 - 10        76           78           75
## 6         5 - 10        73           84           79
str(data)
## 'data.frame':    30641 obs. of  15 variables:
##  $ X                  : int  0 1 2 3 4 5 6 7 8 9 ...
##  $ Gender             : chr  "female" "female" "female" "male" ...
##  $ EthnicGroup        : chr  "" "group C" "group B" "group A" ...
##  $ ParentEduc         : chr  "bachelor's degree" "some college" "master's degree" "associate's degree" ...
##  $ LunchType          : chr  "standard" "standard" "standard" "free/reduced" ...
##  $ TestPrep           : chr  "none" "" "none" "none" ...
##  $ ParentMaritalStatus: chr  "married" "married" "single" "married" ...
##  $ PracticeSport      : chr  "regularly" "sometimes" "sometimes" "never" ...
##  $ IsFirstChild       : chr  "yes" "yes" "yes" "no" ...
##  $ NrSiblings         : int  3 0 4 1 0 1 1 1 3 NA ...
##  $ TransportMeans     : chr  "school_bus" "" "school_bus" "" ...
##  $ WklyStudyHours     : chr  "< 5" "5 - 10" "< 5" "5 - 10" ...
##  $ MathScore          : int  71 69 87 45 76 73 85 41 65 37 ...
##  $ ReadingScore       : int  71 90 93 56 78 84 93 43 64 59 ...
##  $ WritingScore       : int  74 88 91 42 75 79 89 39 68 50 ...

2. Pemeriksaan Outlier pada variabel math, reading dan writing score.

# Boxplot
par(mfrow = c(1,3))
boxplot(data$MathScore, main = "Math Score", col = "lightblue")
boxplot(data$ReadingScore, main = "Reading Score", col = "lightgreen")
boxplot(data$WritingScore, main = "Writing Score", col = "salmon")

interpetasi boxplot

Outlier pada boxplot di atas terlihat jelas terutama pada ketiga jenis skor, yaitu Math, Reading, dan Writing. Outlier ditandai dengan titik-titik di bawah garis whisker, yang menunjukkan nilai-nilai yang secara signifikan lebih rendah dari sebaran utama data. Pada Math Score, jumlah outlier paling banyak dan ekstrem, bahkan ada nilai yang mendekati nol, mengindikasikan adanya siswa yang memiliki kemampuan matematika jauh di bawah rata-rata. Pada Reading dan Writing Score, outlier juga muncul namun tidak sebanyak Math, dan nilainya cenderung tidak terlalu ekstrem. Kehadiran outlier ini menunjukkan adanya variasi performa siswa yang besar, serta pentingnya perhatian lebih pada siswa-siswa dengan nilai sangat rendah agar dapat diberikan dukungan akademik tambahan.

3. Apa yang dimaksud dengan oulier? jelaskan cara memeriksa dan menanggulanginya?

Outlier adalah data yang nilainya jauh berbeda atau menyimpang secara signifikan dari sebagian besar data lainnya dalam suatu dataset. Outlier bisa sangat rendah atau sangat tinggi dibandingkan nilai lainnya, dan dapat memengaruhi analisis statistik karena dapat menggeser rata-rata atau menimbulkan kesan yang menyesatkan terhadap sebaran data.

Cara Memeriksa Outlier

Beberapa cara umum untuk mendeteksi outlier:

  1. Menggunakan Boxplot
    • Outlier muncul sebagai titik di luar whisker (batas atas dan bawah)
  2. Z-score (untuk data normal)Z-score (untuk data normal)
    • Hitung z-score: (𝑥- xbar )/𝜎, Jika z-score > 3 atau < -3, maka nilai dianggap outlier.
  3. Visualisasi lain seperti histogram, scatter plot, atau distribusi normal

Cara Menanggulangi Outlier

  1. Validasi Data
    • Periksa apakah outlier berasal dari kesalahan input data (typo, kesalahan alat ukur). Jika ya, bisa diperbaiki atau dihapus.
  2. Pisahkan dan Analisis Terpisah
    • Outlier bisa mencerminkan kasus khusus yang layak dianalisis sendiri, misalnya siswa dengan kebutuhan khusus atau prestasi luar biasa.
  3. Transformasi Data
    • Gunakan transformasi seperti logarithmic, square root, atau Winsorizing untuk mengurangi efek ekstrem.
  4. Gunakan Metode Statistik yang Robust
    • Gunakan median atau IQR daripada rata-rata dan standar deviasi, karena lebih tahan terhadap outlier.
  5. Penghapusan (sebagai opsi terakhir)
    • Hapus outlier hanya jika terbukti tidak relevan atau merusak analisis secara tidak wajar, dan harus dijelaskan dalam pelaporan.

4. Jam belajar per minggu yang paling banyak dilakukan oleh student

# Tabel frekuensi
study_freq <- table(data$WklyStudyHours)
study_df <- as.data.frame(study_freq)
colnames(study_df) <- c("JamBelajar", "Jumlah")

# Pie Chart
ggplot(study_df, aes(x = "", y = Jumlah, fill = JamBelajar)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  labs(title = "Distribusi Jam Belajar per Minggu") +
  theme_void() +
  theme(legend.title = element_blank())

interpetasi pie chart

Pie chart di atas menunjukkan distribusi jam belajar siswa per minggu yang terbagi ke dalam tiga kategori: < 5 jam, 5–10 jam, dan > 10 jam. Mayoritas siswa berada pada kategori 5–10 jam per minggu, ditunjukkan oleh bagian ungu yang paling besar dari lingkaran. Selanjutnya, jumlah siswa yang belajar lebih dari 10 jam (warna hijau) juga cukup signifikan, tetapi lebih sedikit dibandingkan kategori sebelumnya. Sementara itu, proporsi siswa yang belajar kurang dari 5 jam (warna merah muda) adalah yang paling kecil. Ini mengindikasikan bahwa sebagian besar siswa mengalokasikan waktu belajar dalam rentang sedang, yaitu antara 5 hingga 10 jam per minggu.

5. korelasi antar variabel math, reading, and writing score menggunakan corelation heatmap

# Korelasi
score_data <- data %>% select(MathScore, ReadingScore, WritingScore)
cor_matrix <- cor(score_data, use = "complete.obs")

# Heatmap dengan warna kustom
ggcorrplot(cor_matrix, type = "lower", colors = c("#6D9EC1", "white", "#E46726"))

interpetasi heatmap

Berdasarkan hasil visualisasi heatmap korelasi antara variabel MathScore, ReadingScore, dan WritingScore, terlihat bahwa ketiga variabel tersebut memiliki hubungan yang sangat kuat dan positif satu sama lain. Warna oranye terang yang mendominasi heatmap menunjukkan bahwa nilai korelasi antar skor mendekati angka 1, yang menandakan korelasi positif yang tinggi. Hal ini berarti bahwa siswa yang memiliki nilai tinggi dalam matematika cenderung juga memiliki nilai yang tinggi dalam kemampuan membaca (reading) maupun menulis (writing). Korelasi paling kuat tampak antara skor Reading dan Writing, yang cukup wajar mengingat kedua kemampuan ini saling berhubungan secara langsung dalam aspek bahasa. Secara keseluruhan, temuan ini mengindikasikan bahwa peningkatan pada salah satu kemampuan akademik kemungkinan besar akan diikuti oleh peningkatan pada kemampuan lainnya. Korelasi yang kuat ini dapat menjadi dasar untuk pendekatan pembelajaran terpadu yang mengembangkan ketiga aspek secara bersamaan.

6.Periksa perbedaan antara nilai student per PracticeSport. Apakah rata-rata math score pada siswa menunjukkan nilai yang tinggi pada student yang sering berolahraga

# Statistik deskriptif rata-rata MathScore berdasarkan PracticeSport
library(dplyr)

data %>%
  group_by(PracticeSport) %>%
  summarise(
    Mean_Math = mean(MathScore, na.rm = TRUE),
    SD_Math = sd(MathScore, na.rm = TRUE),
    Count = n()
  )
## # A tibble: 4 Ă— 4
##   PracticeSport Mean_Math SD_Math Count
##   <chr>             <dbl>   <dbl> <int>
## 1 ""                 66.6    14.9   631
## 2 "never"            64.2    14.9  4004
## 3 "regularly"        67.8    15.6 10793
## 4 "sometimes"        66.3    15.2 15213

interpretasi

Berdasarkan hasil analisis deskriptif terhadap rata-rata nilai matematika siswa berdasarkan frekuensi olahraga (PracticeSport), terlihat bahwa siswa yang secara rutin berolahraga (“regularly”) memiliki rata-rata nilai matematika tertinggi, yaitu sebesar 67.8. Sebaliknya, siswa yang tidak pernah berolahraga (“never”) memiliki rata-rata nilai matematika paling rendah, yakni 64.2. Sementara itu, siswa yang berolahraga sesekali (“sometimes”) memiliki rata-rata nilai sebesar 66.3, dan siswa yang tidak mengisi data (kosong) memiliki rata-rata 66.6. Pola ini menunjukkan adanya indikasi bahwa semakin sering siswa berolahraga, semakin tinggi pula rata-rata nilai matematika yang mereka capai. Dengan demikian, kebiasaan berolahraga secara teratur kemungkinan memiliki hubungan positif terhadap performa akademik, khususnya dalam mata pelajaran matematika. Namun, untuk memastikan hubungan ini signifikan secara statistik, perlu dilakukan analisis lanjutan seperti uji ANOVA.