INPUT DATA

library(MASS)
library(readxl)

# Import data dari Excel
data <- read_excel("C:/Users/MyBook Hype/Downloads/Expanded_data_with_more_features.xlsx")
str(data)
## tibble [30,641 × 15] (S3: tbl_df/tbl/data.frame)
##  $ ...1               : num [1:30641] 0 1 2 3 4 5 6 7 8 9 ...
##  $ Gender             : chr [1:30641] "female" "female" "female" "male" ...
##  $ EthnicGroup        : chr [1:30641] NA "group C" "group B" "group A" ...
##  $ ParentEduc         : chr [1:30641] "bachelor's degree" "some college" "master's degree" "associate's degree" ...
##  $ LunchType          : chr [1:30641] "standard" "standard" "standard" "free/reduced" ...
##  $ TestPrep           : chr [1:30641] "none" NA "none" "none" ...
##  $ ParentMaritalStatus: chr [1:30641] "married" "married" "single" "married" ...
##  $ PracticeSport      : chr [1:30641] "regularly" "sometimes" "sometimes" "never" ...
##  $ IsFirstChild       : chr [1:30641] "yes" "yes" "yes" "no" ...
##  $ NrSiblings         : num [1:30641] 3 0 4 1 0 1 1 1 3 NA ...
##  $ TransportMeans     : chr [1:30641] "school_bus" NA "school_bus" NA ...
##  $ WklyStudyHours     : chr [1:30641] "< 5" "5 - 10" "< 5" "5 - 10" ...
##  $ MathScore          : num [1:30641] 71 69 87 45 76 73 85 41 65 37 ...
##  $ ReadingScore       : num [1:30641] 71 90 93 56 78 84 93 43 64 59 ...
##  $ WritingScore       : num [1:30641] 74 88 91 42 75 79 89 39 68 50 ...

1. periksa distribusi dari variabel math, reading dan writing score, cek apakah ada outlier

library(ggplot2)

# Boxplot untuk Math Score
ggplot(data, aes(y = MathScore)) +
  geom_boxplot(fill = "blue", alpha = 0.5) +
  labs(title = "Boxplot Math Score", y = "Math Score")

# Boxplot untuk Reading Score
ggplot(data, aes(y = ReadingScore)) +
  geom_boxplot(fill = "green", alpha = 0.5) +
  labs(title = "Boxplot Reading Score", y = "Reading Score")

# Boxplot untuk Writing Score
ggplot(data, aes(y = WritingScore)) +
  geom_boxplot(fill = "red", alpha = 0.5) +
  labs(title = "Boxplot Writing Score", y = "Writing Score")

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

Outlier adalah data yang memiliki nilai ekstrem atau jauh berbeda dari sebagian besar data lainnya dalam suatu dataset. Outlier dapat terjadi karena kesalahan pengukuran, variasi alami dalam data, atau kejadian luar biasa.

cara memeriksa outlier : - Menggunakan Statistik Deskriptif : Hitung rata-rata (mean) dan simpangan baku (standar deviasi),Jika suatu nilai lebih dari 3 standar deviasi dari mean, maka kemungkinan besar itu adalah outlier.

mean_value <- mean(data$MathScore)
sd_value <- sd(data$MathScore)
outliers <- data[data$MathScore > (mean_value + 3 * sd_value) | data$MathScore < (mean_value - 3 * sd_value),]
library(ggplot2)
ggplot(data, aes(y = ReadingScore)) + geom_boxplot()

- Menggunakan IQR (Interquartile Range) : Outlier didefinisikan sebagai nilai yang lebih kecil dari Q1 - 1.5 × IQR atau lebih besar dari Q3 + 1.5 × IQR

Q1 <- quantile(data$WritingScore, 0.25)
Q3 <- quantile(data$WritingScore, 0.75)
IQR_value <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
outliers <- data[data$WritingScore < lower_bound | data$WritingScore > upper_bound, ]

cara menanggulangi outlier - memeriksa penyebabnya - Menghapus Outlier (Jika Tidak Relevan atau Kesalahan Input)

data_clean <- data[data$ReadingScore >= lower_bound & data$ReadingScore <= upper_bound, ]
data$nilai_transformed <- log(data$ReadingScore)

3. Jam belajar manakah per minggu yang paling banyak dilakukan oleh student

data$WklyStudyHours <- as.factor(data$WklyStudyHours)
ggplot(data, aes(x = factor(WklyStudyHours))) +  
  geom_bar(fill = "purple", color = "black") +
  labs(title = "Distribusi Jam Belajar per Minggu", x = "Jam Belajar", y = "Jumlah Siswa") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

4. Periksa perbedaan nilai student (Math, Writing, Reading) per EthnicGroup

ggplot(data, aes(x = EthnicGroup, y = MathScore, fill = EthnicGroup)) +
  geom_boxplot() +
  labs(title = "Perbedaan Math Score berdasarkan Ethnic Group", x = "Ethnic Group", y = "Math Score")

ggplot(data, aes(x = EthnicGroup, y = ReadingScore, fill = EthnicGroup)) +
  geom_boxplot() +
  labs(title = "Perbedaan Reading Score berdasarkan Ethnic Group", x = "Ethnic Group", y = "Reading Score")

ggplot(data, aes(x = EthnicGroup, y = WritingScore, fill = EthnicGroup)) +
  geom_boxplot() +
  labs(title = "Perbedaan Writing Score berdasarkan Ethnic Group", x = "Ethnic Group", y = "Writing Score")

5. Cek korelasi antara variabel Math, Reading, dan Writing Score menggunakan correlation heatmap

library(ggcorrplot)
# Menghitung matriks korelasi
cor_matrix <- cor(na.omit(data[, c("MathScore", "ReadingScore", "WritingScore")]))

# Plot heatmap korelasi
ggcorrplot(cor_matrix, method = "circle", type = "lower", lab = TRUE)

6. Periksa perbedaan antara nilai student per PracticeSport. Apakah rata-rata Math Score pada siswa menunjukkan nilai yang tinggi pada student yang sering berolahraga?

ggplot(data, aes(x = PracticeSport, y = MathScore, fill = PracticeSport)) +
  geom_boxplot() +
  labs(title = "Perbedaan Math Score Berdasarkan Kebiasaan Berolahraga", x = "Practice Sport", y = "Math Score")

interpretasi lebih lanjut

nomor 1

  1. distribusi nilai
  1. outlier
  1. penyebaran data

nomor 3

  1. katagori jam belajar
  1. distribusi siswa
  1. kesimpulan

nomor 4

nomor 5

Berdasarkan heatmap korelasi, terdapat hubungan positif yang kuat antara tiga skor: Reading Score, Writing Score, dan Math Score. - Reading Score dan Writing Score memiliki korelasi sangat kuat (0.95), menunjukkan bahwa siswa dengan kemampuan membaca yang baik cenderung memiliki kemampuan menulis yang baik juga. - Math Score dan Reading Score memiliki korelasi cukup kuat (0.82), menandakan bahwa performa dalam matematika berhubungan dengan kemampuan membaca. - Math Score dan Writing Score juga memiliki korelasi cukup kuat (0.81), tetapi hubungan ini sedikit lebih lemah dibandingkan dengan reading-writing.

kesimpulan : Secara keseluruhan, skor membaca dan menulis memiliki hubungan paling erat, sedangkan skor matematika masih berkorelasi positif tetapi tidak sekuat keterkaitan membaca-menulis.

nomor 6

Boxplot ini menunjukkan perbedaan nilai matematika (Math Score) berdasarkan kebiasaan berolahraga (Practice Sport). - Kategori “Never” (tidak pernah olahraga) memiliki median Math Score yang lebih rendah dibandingkan kategori lainnya, dengan banyak outlier di bagian bawah. - Kategori “Regularly” (berolahraga secara rutin) memiliki median yang lebih tinggi dibandingkan “Never”, menunjukkan kemungkinan hubungan positif antara olahraga teratur dan nilai matematika yang lebih baik. - Kategori “Sometimes” (kadang-kadang olahraga) memiliki distribusi yang mirip dengan “Regularly”, tetapi sedikit lebih lebar. - Kategori “NA” (tidak ada data) memiliki distribusi yang mirip dengan “Sometimes”, tetapi dengan lebih sedikit variasi.

kesimpulan : Secara keseluruhan, data ini menunjukkan bahwa siswa yang berolahraga secara teratur atau kadang-kadang cenderung memiliki Math Score lebih tinggi dibandingkan mereka yang tidak pernah berolahraga.