#Import Data

data<- read.csv("C:\\Users\\Asus\\Downloads\\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 ...

3. Pertanyaan

  1. Periksa distribusi dari variabel math, reading dan writing score, cek apakah ada outlier
data <- read.csv("C:\\Users\\Asus\\Downloads\\Expanded_Data.csv", header = TRUE)
boxplot(data$MathScore, main = "Boxplot Math Score", col = "lightblue")

boxplot(data$ReadingScore, main = "Boxplot Reading Score", col = "lightgreen")

boxplot(data$WritingScore, main = "Boxplot Writing Score", col = "lightgrey")

Penjelasan : Pada ketiga boxplot diatas dapat disimpulkan bahwa terdapat outlier. Outlier ini menunjukkan ada beberapa siswa dengan skor matematika, membaca, dan menulis yang jauh lebih rendah dibandingkan kebanyakan siswa yaitu dengan skor yang lebih rendah dari 20.

  1. Apa yang dimaksud dengan oulier? jelaskan cara memeriksa dan menanggulanginya? Penjelasan : Outlier adalah nilai yang jauh berbeda dari nilai lainnya dalam kumpulan data. Nilai ini muncul sebagai pengecualian dalam pola data yang ada.

Cara memeriksa > - Visualisasi(Boxplot, Histogram, Scatterplot) - Metode statistik(IQR dan Z-score)

Cara Menanggulangi Outlier > - Hapus Outlier - Transformasi Data(Logaritma dan Standarisasi) - Model yang Robust(Model Regresi Robust dan Model Non-Parametrik) - Investigasi(Penyebab Outlier dan Interpretasi)

  1. Jam belajar manakah per minggu yang paling banyak dilakukan oleh student
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
# Membaca file CSV
data <- read.csv("C:/Users/Asus/Downloads/Expanded_Data.csv")

# Visualisasi bar chart
ggplot(data, aes(x = WklyStudyHours, fill = WklyStudyHours)) +
  geom_bar() +
  labs(title = "Distribusi Jam Belajar per Minggu",
       x = "Jam Belajar per Minggu",
       y = "Jumlah Siswa") +
  theme_minimal() +
  theme(legend.position = "none")

Penjelasan : Kategori “5 - 10 jam per minggu” memiliki jumlah siswa terbanyak, terlihat dari batang ungu yang memiliki tinggi paling besar. Ini menunjukkan bahwa sebagian besar siswa menghabiskan antara 5 hingga 10 jam belajar setiap minggu.

  1. Periksa perbedaan nilai student (math, writing, reading) per ethnic
data <- read.csv("C:/Users/Asus/Downloads/Expanded_Data.csv")
# Menghitung rata-rata skor untuk setiap ethnic group
aggregate(cbind(MathScore, ReadingScore, WritingScore) ~ EthnicGroup, data = data, FUN = mean, na.rm = TRUE)
##   EthnicGroup MathScore ReadingScore WritingScore
## 1              66.18587     68.91576     67.90054
## 2     group A  62.99189     66.78774     65.25192
## 3     group B  63.49022     67.32046     65.89513
## 4     group C  64.69572     68.43823     66.99924
## 5     group D  67.66640     70.38225     70.89084
## 6     group E  75.29894     74.25142     72.67706

Penjelasan : Dari hasil diatas dapat disimpulkan bahwa Group E memiliki nilai paling tinggi disemua kategori menunjukkan bahwa siswa dari group E cenderung memiliki kemampuan akademik terbaik dari semua aspek.Secara umum nilai reading score cenderung lebih tinggi daripada math dan writing. writing score memiliki pola yang sama dengan reading namun lebih rendah.Siswa cenderung lebih unggul dalam reading dibanding math dan writing kecuali group E yang unggul disemua bidang. Sedangkan BCD berada di tengah dengan D lebih unggul dibanding BC.

  1. cek korelasi antar variabel math, reading, and writing score menggunakan corelation heatmap
library(ggplot2)
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.4.3
data <- read.csv("C:/Users/Asus/Downloads/Expanded_Data.csv")
#Heatmap 
ggplot(melt(cor(data[, c("MathScore", "ReadingScore", "WritingScore")], use = "complete.obs")),
       aes(Var1, Var2, fill = value)) +
  geom_tile(color = "white") +
  geom_text(aes(label = round(value, 2)), color = "black", size = 5) +
  scale_fill_gradient2(low = "blue", high = "red", mid = "white",
                       midpoint = 0.5, limit = c(0, 1), name = "Correlation") +
  labs(title = "Correlation Heatmap - Student Scores", x = "", y = "") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Penjelasan : Hubungan antara writing score dengan reading score memiliki korelasi 0.95 yang sangat tinggi, artinya siswa yang memiliki skor tinggi di reading cenderung memiliki skor tinggi di writing juga karena seeorang yang memiliki keterampilan membaca yang baik berhubungan dengan keterampilan menulis yang baik juga. Lalu mathscore dan reading score memiliki korelasi 0,82 yang cukup tinggi hal ini menunjukkan siswa yang tinggi di math cenderung tinggi di reading meskipun tidak sekuat reading dan writing. Lalu Math dan writing memiliki korelasi 0,81 yang cukup kuat juga tetapi lebih rendah dari hubungan sebelumnya yang berarti meskipun math dan writing memiliki hubungan namun hubungan ini tidak sekuat membaca dan menulis. Sehingga semua variabel memiliki korelasi positif yang kuat yang berarti siswa yang unggul dalam suatu bidang juga unggul dalam bidang lain.

  1. Periksa perbedaan antara nilai student per PracticeSport. Apakah rata-rata math score pada siswa menunjukkan nilai yang tinggi pada student yang sering berolahraga
data <- read.csv("C:/Users/Asus/Downloads/Expanded_Data.csv")
# Menghitung rata-rata mathscore
aggregate(MathScore ~ PracticeSport, data = data, FUN = mean, na.rm = TRUE)
##   PracticeSport MathScore
## 1                66.63708
## 2         never  64.17108
## 3     regularly  67.83916
## 4     sometimes  66.27483

Penjelasan : Data ini menunjukkan bahwa siswa yang berolahraga secara teratur cenderung memiliki MathScore yang lebih tinggi dibandingkan mereka yang jarang atau tidak pernah berolahraga.