# Import library
library(ggplot2)
# 1. Memasukkan sampel dataset 'Student Lifestyle' dari Kaggle
data_mahasiswa <- data.frame(
Sleep_Hours = c(6, 7, 5, 8, 6, 7, 4, 7, 9, 5, 6, 8, 6, 7, 8),
GPA = c(3.2, 3.5, 2.8, 3.8, 3.1, 3.6, 2.5, 3.4, 3.9, 2.9, 3.3, 3.7, 3.0, 3.5, 3.8),
Stress_Level = c("High", "Moderate", "High", "Low", "High", "Low", "High", "Moderate", "Low", "High", "Moderate", "Low", "High", "Moderate", "Low")
)
# Mengatur urutan kategori stres agar rapi di grafik
data_mahasiswa$Stress_Level <- factor(data_mahasiswa$Stress_Level, levels = c("Low", "Moderate", "High"))
# 2. Visualisasi Data Kategorik (Bar Chart: Tingkat Stres)
# Menghitung jumlah per kategori
data_kategorik <- as.data.frame(table(data_mahasiswa$Stress_Level))
colnames(data_kategorik) <- c("Tingkat_Stres", "Jumlah")
# Membuat Bar Chart
ggplot(data_kategorik, aes(x = Tingkat_Stres, y = Jumlah, fill = Tingkat_Stres)) +
geom_col(width = 0.5) +
geom_text(aes(label = Jumlah), vjust = -0.5, size = 5, fontface = "bold", color = "gray20") +
labs(
title = "Distribusi Tingkat Stres Mahasiswa",
subtitle = "Visualisasi Data Kategorik",
x = "Tingkat Stres",
y = "Jumlah Mahasiswa"
) +
scale_y_continuous(limits = c(0, 8)) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15, hjust = 0.5),
plot.subtitle = element_text(size = 11, hjust = 0.5, color = "gray50", margin = margin(b = 15)),
legend.position = "none"
) +
scale_fill_brewer(palette = "Set2")
Interpretasi Data Kategorik: Berdasarkan diagram batang di atas, dari total sampel yang diambil, kelompok mahasiswa dengan tingkat stres tinggi (High) memiliki jumlah terbanyak yaitu 6 orang. Diikuti oleh mahasiswa dengan tingkat stres rendah (Low) sebanyak 5 orang, dan tingkat stres sedang (Moderate) sebanyak 4 orang. Hal ini menunjukkan proporsi yang cukup signifikan dari mahasiswa yang mengalami tekanan tinggi selama masa studinya.
# 3. Visualisasi Data Numerik (Scatter Plot: Jam Tidur vs IPK)
ggplot(data_mahasiswa, aes(x = Sleep_Hours, y = GPA)) +
geom_point(size = 4, color = "steelblue", alpha = 0.8) +
geom_smooth(method = "lm", color = "darkred", se = FALSE, linewidth = 1.2) +
labs(
title = "Korelasi Durasi Tidur dan Nilai IPK (GPA)",
subtitle = "Visualisasi Data Numerik",
x = "Durasi Tidur (Jam/Hari)",
y = "Nilai IPK (Skala 4.0)"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15, hjust = 0.5),
plot.subtitle = element_text(size = 11, hjust = 0.5, color = "gray50", margin = margin(b = 15))
)
## `geom_smooth()` using formula = 'y ~ x'
Interpretasi Data Numerik: Scatter plot di atas memvisualisasikan korelasi antara durasi tidur harian dan nilai IPK (GPA). Garis regresi berwarna merah yang menanjak dari kiri bawah ke kanan atas secara jelas menunjukkan adanya korelasi positif. Artinya, semakin panjang durasi tidur seorang mahasiswa (mendekati 8-9 jam), maka nilai IPK-nya cenderung semakin tinggi. Sebaliknya, mahasiswa yang durasi tidurnya minim (4-5 jam) cenderung memiliki IPK yang lebih rendah.
Link Sumber Data:Student Lifestyle Dataset - Kaggle
Alasan: Kelompok kami memilih “Student Lifestyle” dari platform Kaggle karena variabel gaya hidup seperti durasi tidur dan tingkat stres sangat dekat dengan kehidupan mahasiswa. Data ini ideal untuk digunakan karena memungkinkan kami melihat bagaimana pola hidup mahasiswa dapat berpengaruh terhadap performa akademik mereka (GPA).