Kelompok 8: 1. Riska Karina T. (5052241028) 2. Shafa Agnia R. (5052241029) 3. Annisa Maulida Z. (5052241038)
Dataset yang digunakan adalah “Student’s Social Media Addiction” yang bersumber dari kaggle: https://www.kaggle.com/datasets/adilshamim8/social-media-addiction-vs-relationships
Data yang diambil dalam dataset ini menggunakan metode survei di mana masing-masing responden telah mengisi tes kuis “Bergen Social Media Addiction Scale” untuk mengetahui skala kecanduan media sosial dan skala kesehatan mentalnya.
Tujuan utama kami menggunakan dataset ini adalah untuk mengetahui hubungan antara kehidupan digital kita, kesehatan mental, dan dampaknya di dunia nyata.
data <- read.csv("C:/Users/user/Downloads/Students Social Media Addiction.csv")
head(data)
## Student_ID Age Gender Academic_Level Country Avg_Daily_Usage_Hours
## 1 1 19 Female Undergraduate Bangladesh 5.2
## 2 2 22 Male Graduate India 2.1
## 3 3 20 Female Undergraduate USA 6.0
## 4 4 18 Male High School UK 3.0
## 5 5 21 Male Graduate Canada 4.5
## 6 6 19 Female Undergraduate Australia 7.2
## Most_Used_Platform Affects_Academic_Performance Sleep_Hours_Per_Night
## 1 Instagram Yes 6.5
## 2 Twitter No 7.5
## 3 TikTok Yes 5.0
## 4 YouTube No 7.0
## 5 Facebook Yes 6.0
## 6 Instagram Yes 4.5
## Mental_Health_Score Relationship_Status Conflicts_Over_Social_Media
## 1 6 In Relationship 3
## 2 8 Single 0
## 3 5 Complicated 4
## 4 7 Single 1
## 5 6 In Relationship 2
## 6 4 Complicated 5
## Addicted_Score
## 1 8
## 2 3
## 3 9
## 4 4
## 5 7
## 6 9
Hal-hal yang kami analisis, yaitu Apa saja hal-hal yang memengaruhi
Kecanduan Media Sosial Addicted_Score siswa, lalu apa
dampaknya terhadap Kesehatan Mental Mental_Health_Score ,
Performa Akademik Affects_Academic_Performance, Jam Tidur
Sleep_Hours_Per_Night. Kemudian, apakah ada pengaruh dari
status hubungan `Relationship_Status’
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.5
## ✔ ggplot2 3.5.2 ✔ stringr 1.5.1
## ✔ lubridate 1.9.4 ✔ tibble 3.2.1
## ✔ purrr 1.0.4 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
Menggunakan library dplyr untuk memanipulasi data, tidyverse untuk membersihkan data, dan ggplot untuk membuat visualisasi data
colSums(is.na(data))
## Student_ID Age
## 0 0
## Gender Academic_Level
## 0 0
## Country Avg_Daily_Usage_Hours
## 0 0
## Most_Used_Platform Affects_Academic_Performance
## 0 0
## Sleep_Hours_Per_Night Mental_Health_Score
## 0 0
## Relationship_Status Conflicts_Over_Social_Media
## 0 0
## Addicted_Score
## 0
Tidak terdapat missing value pada dataset
str(data)
## 'data.frame': 705 obs. of 13 variables:
## $ Student_ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Age : int 19 22 20 18 21 19 23 20 18 21 ...
## $ Gender : chr "Female" "Male" "Female" "Male" ...
## $ Academic_Level : chr "Undergraduate" "Graduate" "Undergraduate" "High School" ...
## $ Country : chr "Bangladesh" "India" "USA" "UK" ...
## $ Avg_Daily_Usage_Hours : num 5.2 2.1 6 3 4.5 7.2 1.5 5.8 4 3.3 ...
## $ Most_Used_Platform : chr "Instagram" "Twitter" "TikTok" "YouTube" ...
## $ Affects_Academic_Performance: chr "Yes" "No" "Yes" "No" ...
## $ Sleep_Hours_Per_Night : num 6.5 7.5 5 7 6 4.5 8 6 6.5 7 ...
## $ Mental_Health_Score : int 6 8 5 7 6 4 9 6 7 7 ...
## $ Relationship_Status : chr "In Relationship" "Single" "Complicated" "Single" ...
## $ Conflicts_Over_Social_Media : int 3 0 4 1 2 5 0 2 1 1 ...
## $ Addicted_Score : int 8 3 9 4 7 9 2 8 5 4 ...
Tipe data pada dataset sudah sesuai
#ambil kolom numerik untuk visualisasi boxplot
data_num_long <- data %>%
select(where(is.numeric)) %>%
select(-Student_ID) %>%
pivot_longer(cols = everything(),
names_to = "variabel",
values_to = "nilai")
#boxplot
ggplot(data_num_long, aes(x = variabel, y = nilai)) +
geom_boxplot(fill = "lavender") +
labs(title = "Boxplot Variabel Numerik",
x = "Variabel",
y = "Nilai") +
scale_x_discrete(labels = c(
"Addicted_Score" = "Skor\nKecanduan",
"Age" = "Usia",
"Avg_Daily_Usage_Hours" = "Jam Penggunaan\nSosial Media",
"Conflicts_Over_Social_Media" = "Konflik\nSosial Media",
"Mental_Health_Score" = "Skor\nKesehatan Mental",
"Sleep_Hours_Per_Night" = "Jam Tidur\nPer Malam"
)) +
theme_minimal()
Terdapat outlier pada Jam Penggunaan Media Sosial
Avg_Daily_Usage_Hours. Namun, outlier tersebut masih
relevan dan tergolong valid karena masih berada di dekat garis whisker
boxplot sehingga outlier dipertahankan.
data %>%
filter(Sleep_Hours_Per_Night < 0 | Avg_Daily_Usage_Hours < 0)
## [1] Student_ID Age
## [3] Gender Academic_Level
## [5] Country Avg_Daily_Usage_Hours
## [7] Most_Used_Platform Affects_Academic_Performance
## [9] Sleep_Hours_Per_Night Mental_Health_Score
## [11] Relationship_Status Conflicts_Over_Social_Media
## [13] Addicted_Score
## <0 rows> (or 0-length row.names)
Tidak terdapat logical inconsistences dalam dataset pada variabel Jam
Tidur Sleep_Hours_Per_Night dan Jam Penggunaan Media Sosial
Avg_Daily_Usage_Hours yang negatif.
#distribusi skor kecanduan media sosial
ggplot(data, aes(x = Addicted_Score)) +
geom_histogram(binwidth = 1, fill = "steelblue", color = "black") +
labs(title = "Distribusi Skor Kecanduan Media Sosial",
x = "Skor Kecanduan Media Sosial", y = "Jumlah Siswa") +
theme_minimal()
Mayoritas siswa berada di skor tengah, sekitar 7.0, yang tergolong tinggi. Distribusi condong ke kanan (right-skewed), menandakan bahwa sebagian besar responden memiliki skor kecanduang yang tinggi.
ggplot(data, aes(x = Mental_Health_Score)) +
geom_histogram(binwidth = 1, fill = "red3", color = "black") +
labs(title = "Distribusi Skor Kesehatan Mental",
x = "Skor Kesehatan Mental", y = "Jumlah Siswa") +
theme_minimal()
Puncak distribusi ini berada di 6. Distribui sedikit condong ke kiri (left-skewed), yang berarti lebih banyak siswa yang memilki skor di bawah rata-rata daripada di atasnya, tetapi puncaknya berada di nilai tegah. Ini menunjukan kondisi mental yang cenderung sedang.
#ambil kolom yang numerik buat cek korelasi
data_heatmap <- data %>%
select(where(is.numeric)) %>%
select(-Student_ID, -Age, -Conflicts_Over_Social_Media)
#matriks korelasi
cor <- cor(data_heatmap)
cor_df <- as.data.frame(cor) %>%
rownames_to_column(var = "variabel 1")
#ubah matriks korelasi jadi format long untuk visualisasi heatmap
cor_long <- cor_df %>%
pivot_longer(cols = -`variabel 1`,
names_to = "variabel 2",
values_to = "korelasi")
#visualisasi heatmap
ggplot(cor_long, aes(x=`variabel 1`, y=`variabel 2`, fill=korelasi)) +
geom_tile(col='white', lwd=0.5) +
geom_text(aes(label=round(korelasi, 2)), size=3.5, color='white', lwd=2) +
labs(title = "Korelasi Antar Variabel Numerik", x ="Variabel", y="Variabel") +
scale_fill_gradient2(low='red3', mid='white', high='blue3', midpoint=0, limit=c(-1,1)) +
scale_x_discrete(labels = c(
"Addicted_Score" = "Skor\nKecanduan",
"Avg_Daily_Usage_Hours" = "Jam\nPenggunaan\nSosial Media",
"Mental_Health_Score" = "Skor\nKesehatan\nMental",
"Sleep_Hours_Per_Night" = "Jam Tidur"
)) +
scale_y_discrete(labels = c(
"Addicted_Score" = "Skor\nKecanduan",
"Avg_Daily_Usage_Hours" = "Jam\nPenggunaan\nSosial Media",
"Mental_Health_Score" = "Skor\nKesehatan\nMental",
"Sleep_Hours_Per_Night" = "Jam Tidur"
)) +
theme_minimal()
## Warning in geom_text(aes(label = round(korelasi, 2)), size = 3.5, color =
## "white", : Ignoring unknown parameters: `linewidth`
Angka korelasi paling tinggi dari variabel yang berbeda yaitu -0.95
menunjukkan korelasi negatif yang sangat kuat antara Skor Kecanduan
Addicted_Score dan Skor Kesehatan Mental
Mental_Heath_Score. Dari sini, kami berasumsi bahwa semakin
seseorang candu terhadap media sosial, hampir pasti kesehatan mentalnya
semakin menurun.
Kemudian di urutan kedua, yaitu korelasi antara Jam Penggunaan Media
Sosial Avg_Daily_Usage_Hours dan Skor Kecanduan
Addicted_Score yang berkorelasi positif 0.83 di mana kami
berasumsi bahwa semakin lama jam penggunaan media sosialnya, kemungkinan
semakin tinggi skor kecanduannya.
Di urutan ketiga, terdapat korelasi antara Skor Kesehatan Mental
Mental_Heath_Score dan Jam Penggunaan Media Sosial
Avg_Daily_Usage_Hours yang berkorelasi negatif -0.8. Dari
sini, kami berasumsi bahwa semakin lama waktu yang digunakan dalam
menggunakan media sosial, kemungkinan semakin rendah skor kesehatan
mentalnya.
Pada urutan keempat, yakni korelasi antara Jam Penggunaan Media
Sosial Avg_Daily_Usage_Hours dan Jam Tidur
Sleep_Hours_Per_Night yang berkorelasi negatif -0.79 di
mana kami berasumsi bahwa semakin lama mereka bermain media sosial,
kemungkinan semakin sedikit waktu mereka untuk beristirahat.
ggplot(data, aes(x = Avg_Daily_Usage_Hours, y = Sleep_Hours_Per_Night)) +
geom_point(color = "steelblue", size = 2) +
geom_smooth(method = 'lm', color = "red3", linewidth = 1) +
labs(title = "Hubungan Jam Penggunaan Media Sosial dan Jam Tidur per Hari",
x = "Jam Penggunaan Media Sosial", y = "Jumlah Tidur") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Grafik Hubungan Jam Penggunaan Media Sosial
Avg_Daily_Usage_Hours dengan Jam Tidur
Sleep_Hours_Per_Night menunjukkan tren menurun, yang
berarti semakin lama jam penggunaan media sosial, maka semakin sedikit
waktu tidurnya. Hal ini memvalidasi korelasi antarkedua variabel sebesar
-0.79.
ggplot(data, aes(x = Addicted_Score, y = Mental_Health_Score)) +
geom_point(color = "steelblue", size = 2.5) +
geom_smooth(method = 'lm', color = "red3", linewidth = 1) +
labs(title = "Hubungan Skor Kecanduan Media Sosial dan Skor Kesehatan Mental",
x = "Skor Kecanduan Media Sosial", y = "Skor Kesehatan Mental") +
theme_minimal() +
scale_fill_brewer(palette="Set1")
## `geom_smooth()` using formula = 'y ~ x'
Grafik Hubungan Skor Kecanduan Media Sosial
Avg_Daily_Usage_Hours dengan Skor Kesehatan Mental
Mental_Heath_Score menunjukkan tren menurun pula yang
berarti semakin tinggi skor kecanduan media sosial, maka semakin rendah
skor kesehatan mentalnya. Hal ini memvalidasi korelasi antarkedua
variabel sebesar -0.95.
ggplot(data, aes(x = Addicted_Score, fill = Affects_Academic_Performance)) +
geom_bar(position = "dodge") +
labs(
title = "Jumlah Responden berdasarkan Addicted Score dan Gender",
x = "Skor Kecanduan Media Sosial",
y = "Jumlah Siswa"
) +
theme_minimal() +
scale_fill_brewer(palette="Set1")
Grafik Distribusi Skor Kecanduan berdasarkan Gender menunjukkan bahwa
baik responden Laki-Laki (Male) maupun Perempuan (Female) memiliki
distribusi Skor Kecanduan Media Sosial
Avg_Daily_Usage_Hours yang tinggi. Meskipun ada sedikit
perbedaan di setiap bar, secara umum, kedua gender sama-sama rentan
terhadap kecanduan media sosial dengan skor yang tinggi.
# Hitung total skor kecanduan per kelompok
summary <- data %>%
group_by(Affects_Academic_Performance, Gender) %>%
summarise(mean_addicted = mean(Addicted_Score)) %>%
group_by(Affects_Academic_Performance) %>%
mutate(persen = mean_addicted / sum(mean_addicted) * 100)
## `summarise()` has grouped output by 'Affects_Academic_Performance'. You can
## override using the `.groups` argument.
summary
## # A tibble: 4 × 4
## # Groups: Affects_Academic_Performance [2]
## Affects_Academic_Performance Gender mean_addicted persen
## <chr> <chr> <dbl> <dbl>
## 1 No Female 4.49 48.9
## 2 No Male 4.69 51.1
## 3 Yes Female 7.58 50.8
## 4 Yes Male 7.33 49.2
#visualisasi
ggplot(summary, aes(x = Affects_Academic_Performance, y = mean_addicted, fill = Gender)) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste0(round(persen), "%")),
position = position_stack(vjust = 0.5), color = "white", size = 4) +
labs(title = "Rata-Rata Skor Kecanduan dan Proporsi Gender terhadap Performa Akademik",
x = "Dampak Akademik", y = "Rata-Rata Skor Kecanduan") +
theme_minimal() +
scale_fill_brewer(palette="Set1")
Bar “Yes” jauh lebih tinggi, yang berarti total skor kecanduan dari kelompok yang merasakan dampak negatif pada akademik jauh lebih besar daripada kelompok yang tidak merasakannya. Ini adalah bukti kuat bahwa kecanduan media sosial secara langsung dirasakan mengganggu performa akademik.
Melihat proporsi gender di dalam bar “Yes”, kita melihat bahwa baik Perempuan (52%) maupun Laki-Laki (48%) sama-sama mengisi porsi yang besar. Ini menunjukkan bahwa ketika tingkat kecanduan sudah tinggi hingga berdampak pada akademik, hal itu terjadi pada kedua gender secara signifikan
ggplot(data, aes(x = Avg_Daily_Usage_Hours,
y = Sleep_Hours_Per_Night,
color = Gender)) +
geom_point(alpha = 0.7, size = 1.5) +
facet_wrap(~ Relationship_Status) +
labs(title = "Hubungan Jam Tidur dan Penggunaan Media Sosial berdasarkan Status Hubungan",
x = "Jam Media Sosial / Hari",
y = "Jam Tidur / Malam",
color = "Gender") +
theme_minimal()
Siswa yang sedang dalam hubungan mungkin memiliki pendorong tambahan untuk menggunakan media sosial hingga larut malam.
Status hubungan yang “rumit” hampir tidak ada yang berada di zona sehat. Mereka seolah terjebak di tengah-tengah pusaran masalah.
Kelompok Single menunjukkan bahwa tanpa adanya tekanan spesifik dari hubungan, kecanduan media sosial tetap menjadi masalah besar yang memengaruhi individu secara luas dan beragam.