library(ggplot2)
library(readxl)
library(ggthemes)
library(gridExtra)
setwd("D:/air projecy")
data <- read_excel("Students_Grading_Dataset.xlsx")
head(data)
## # A tibble: 6 × 23
## Student_ID First_Name Last_Name Email Gender Age Department `Attendance (%)`
## <chr> <chr> <chr> <chr> <chr> <dbl> <chr> <dbl>
## 1 S1000 Omar Williams stud… Female 22 Engineeri… 52.3
## 2 S1001 Maria Brown stud… Male 18 Engineeri… 97.3
## 3 S1002 Ahmed Jones stud… Male 24 Business 57.2
## 4 S1003 Omar Williams stud… Female 24 Mathemati… 95.2
## 5 S1004 John Smith stud… Female 23 CS 54.2
## 6 S1005 Liam Brown stud… Male 21 Engineeri… NA
## # ℹ 15 more variables: Midterm_Score <dbl>, Final_Score <dbl>,
## # Assignments_Avg <dbl>, Quizzes_Avg <dbl>, Participation_Score <dbl>,
## # Projects_Score <dbl>, Total_Score <dbl>, Grade <chr>,
## # Study_Hours_per_Week <dbl>, Extracurricular_Activities <chr>,
## # Internet_Access_at_Home <chr>, Parent_Education_Level <chr>,
## # Family_Income_Level <chr>, `Stress_Level (1-10)` <dbl>,
## # Sleep_Hours_per_Night <dbl>
Dari data diatas akan disajikan visualisasi data dalam bentuk Bar Chart. Berikut hasil visualisasi data Distribusi Responden Berdasarkan Departemen atau Jurusan:
bar_chart <- ggplot(data, aes(x = `Department`, fill = `Department`)) +
geom_bar() +
theme_minimal() +
labs(title = "Ditribusi Responden Berdasarkan Departemen atau Jurusan", x = "Jurusan", y = "Frekuensi")
bar_chart
Bar Chart ini memberikan gambaran visual distribusi responden berdasarkan jurusan kuliah mereka. Informasi ini dapat digunakan untuk menganilisis bagaimana suatu faktor (misalnya kebiasaan belajar) mungkin dipengaruhi oleh jurusan kuliah seseorang. Dari Chart tersebut dapat disimpulkan bahwa CS (Computer Science) adalah jurusan dengan perwakilan terbanyak kemudian diikuti oleh jurusan Engineering dan Business, sementara itu jurusan Mathematics adalah jurusan yang memiliki perwakilan paling sedikit dibandingkan jurusan lain.
Berikut ini akan disajikan visualisasi Pie Chart Data distribusi Responden Berdasarkan Gender:
pie_chart <- ggplot(data, aes(x = "", fill = `Gender`)) +
geom_bar(width = 1) +
coord_polar("y", start = 0) +
theme_minimal() +
labs(title = "Distribusi Responden Responden Berdasarkan Gender") +
theme(axis.title.x = element_blank())
pie_chart
Dari Pie Chart di atas dapat diketahui bahwa responden lebih banyak diwakili oleh laki-laki daripada perempuan.
Berikut ini akan disajikan visualisasi Histogram Distribusi Durasi Belajar Dalam Seminggu:
histogram <- ggplot(data, aes(x = `Study_Hours_per_Week`)) +
geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) +
theme_minimal() +
labs(title = "Histogram: Distribusi Durasi Belajar Dalam Seminggu",
x = "Durasi Belajar Dalam Seminggu (Jam)",
y = "Frekuensi")
histogram
Dari Histogram diatas dapat diambil kesimpulan:
Berikut ini akan disajikan visualisasi Box Plot Distribusi Durasi Belajar Dalam Seminggu:
boxplot_data <- ggplot(data, aes(y = `Study_Hours_per_Week`, fill = "Study_Hours_per_Week")) +
geom_boxplot(alpha = 0.6) +
theme_minimal() +
labs(title = "Boxplot: Distibusi Durasi Belajar Dalam Seminggu",
y = "Lama Belajar (jam)",
fill = "Keterangan")
boxplot_data
Distribusi belajar merata tanpa ada nilai yang ekstrem. Mayoritas responden memiliki durasi belajar dalam rentang yang cukup lebar, dengan variasi yang berbeda antarindividu.
Berikut ini akan disajikan visualisasi Density Plot Distribusi Durasi Belajar Dalam Seminggu:
density_plot <- ggplot(data, aes(x = `Study_Hours_per_Week`, fill = "Durasi Belajar")) +
geom_density(alpha = 0.5, color = "black") +
theme_minimal() +
labs(title = "Density Plot: Distribusi Durasi Belajar dalam Seminggu",
x = "Durasi Belajar (Jam)",
y = "Density",
fill = "Keterangan")
density_plot
Distribusi durasi belajar responden memiliki persebaran yang cukup merata, tidak ada durasi belajar yang dominan, kepadatan durasi belajar tidak memusat pada satu waktu saja, tetapi jarak antara durasi minimum belajar dengan durasi maksimum belajar memang cukup jauh.
Berikut ini akan disajikan visualisasi Hitogram Distribusi Nilai dari para responden:
histogram <- ggplot(data, aes(x = `Total_Score`)) +
geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) +
theme_minimal() +
labs(title = "Histogram: Distribusi Nilai",
x = "Nilai (0-100)",
y = "Frekuensi")
histogram
Dari Histogram diatas dapat diambil kesimpulan: 1. Nilai minimum responden dengan nilai maksimum responden memiliki jarak yang jauh yaitu antara 50 hingga 100. 2. Nilai responden memiliki frekuensi yang cukup merata, tidak ada nilai yang memiliki perbedaan frekuensi sangat jauh dari yang lainnya. 3. Nilai minimum dan maksimum memiliki frekuensi yang lebih jarang dibanding frekuensi nilai yang ada diantara keduanya.
Berikut ini akan disajikan visualisasi Box Plot Distribusi Nilai dari para responden:
boxplot_data <- ggplot(data, aes(y = `Total_Score`, fill = "Total_Score")) +
geom_boxplot(alpha = 0.6) +
theme_minimal() +
labs(title = "Boxplot: Distribusi Total Nilai",
y = "Nilai (0-100)",
fill = "Keterangan")
boxplot_data
Distribusi nilai responden cukup merata, rata-rata responden memiliki nilai berkisar antara 60 hingga 90.
Berikut ini akan disajikan visualisasi Density Plot Distribusi Nilai dari para responden:
density_plot <- ggplot(data, aes(x = `Total_Score`, fill = "Nilai")) +
geom_density(alpha = 0.5, color = "black") +
theme_minimal() +
labs(title = "Density Plot: Distribusi Nilai",
x = "Nilai (0-100)",
y = "Density",
fill = "Keterangan")
density_plot
Distribusi nilai responden cukup merata, akan tetapi responden dengan nilai minimum dan nilai maksimum memang lebih jarang ditemukan, mayoritas responden memliki nilai berkisar antara 60 hingga 90.
Berikut ini akan disajikan visualisasi Dot Plot Hubungan Durasi Belajar Dengan Nilai para responden:
data$`Study_Hours_per_Week` <- as.numeric(gsub("[^0-9\\.]", "", data$`Study_Hours_per_Week`))
dot_plot <- ggplot(data, aes(x = `Study_Hours_per_Week`, y = `Total_Score`)) +
geom_point(color = "blue", size = 1) +
theme_minimal() +
labs(title = "Dot Plot: Hubungan Durasi Belajar dan Nilai",
x = "Durasi Belajar (jam)",
y = "Nilai Total")
dot_plot
Dari Dot Plot di atas dapat disimpulkan bahwa hubungan antara durasi belajar dengan nilai yang diperoleh tidak terlalu siginifikan. Responden dengan durasi belajar yang lebih sebentar tidak jarang mendapatkan nilai tinggi, begitu pula responden dengan durasi belajar yang lebih tinggi tidak jarang mendapatkan nilai yang rendah. Nilai dari dari responden dengan durasi belajar yang sama sangat bervariasi. Artinya ada juga faktor lain yang menentukan nilai yang diperoleh selain durasi belajar seseorang.
mean(data$`Study_Hours_per_Week`)
## [1] 17.65886
Rata-rata durasi belajar responden dalam satu Minggu adalah sekitar 17.6 jam, yang menunjukkan bahwa sebagian besar responden belajar lebih dari 2 jam dalam 1 hari.
median(data$`Study_Hours_per_Week`)
## [1] 17.5
Median atau nilai tengah berada pada 17.5 jam, yang menunjukkan bahwa setengah dari responden belajar kurang dari atau sama dengan 17.5 jam, sementara setengah lainnya belajar lebih dari 17.5 jam.
modus <- function(x) {
uniqx <- unique(x)
uniqx[which.max(tabulate(match(x, uniqx)))]
}
modus(data$`Study_Hours_per_Week`)
## [1] 9.6
Nilai modus adalah 9.6 jam, yang berarti banyak responden belajar selama 9.6 jam.
Q1 <- quantile(data$`Study_Hours_per_Week`, 0.25)
Q1
## 25%
## 11.4
Q3 <- quantile(data$`Study_Hours_per_Week`, 0.75)
Q3
## 75%
## 24.1
Kuartil 1 (Q1) = 11.4, ini menunjukkan 25% dari responden memiliki durasi belajar kurang dari atau sama dengan 11.4 jam. Kuartil 3 (Q3) = 24.1, ini menunjukkan 75% dari responden memiliki durasi belajar kurang dari atau sama dengan 24.1 jam.
range_values <- range(data$`Study_Hours_per_Week`)
range_values
## [1] 5 30
range <- max(data$`Study_Hours_per_Week`) - min(data$`Study_Hours_per_Week`)
range
## [1] 25
Range = 25 jam (dari 5 hingga 30 jam), ini menunjukkan selisih antara durasi belajar minimum dan maksimum dalam dataset.
var(data$`Study_Hours_per_Week`)
## [1] 52.9382
Varians 52.9382 menunjukkan bahwa ada banyak perbedaan dalam durasi belajar responden. Nilai ini menandakan bahwa sebagian besar responden memiliki pola belajar yang berbeda.
sd(data$`Study_Hours_per_Week`)
## [1] 7.275864
Standar deviasi 7.275864 jam menunjukkan bahwa banyak individu yang memiliki durasi belajar berbeda.
Dataset source: https://www.kaggle.com/datasets/mahmoudelhemaly/students-grading-dataset