#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 ...
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.
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)
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.
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.
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.
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.