Input dataset, membuat variabel, dan membuat data frame untuk analisis Link Dataset : https://www.kaggle.com/datasets/steve1215rogg/student-lifestyle-dataset?resource=download
data <- read.csv("student_lifestyle_dataset.csv")
library(knitr)
kable(head(data, 10), caption = "Student Lifestyle Dataset", align = "l")
| Student_ID | Study_Hours_Per_Day | Extracurricular_Hours_Per_Day | Sleep_Hours_Per_Day | Social_Hours_Per_Day | Physical_Activity_Hours_Per_Day | GPA | Stress_Level |
|---|---|---|---|---|---|---|---|
| 1 | 6.9 | 3.8 | 8.7 | 2.8 | 1.8 | 2.99 | Moderate |
| 2 | 5.3 | 3.5 | 8.0 | 4.2 | 3.0 | 2.75 | Low |
| 3 | 5.1 | 3.9 | 9.2 | 1.2 | 4.6 | 2.67 | Low |
| 4 | 6.5 | 2.1 | 7.2 | 1.7 | 6.5 | 2.88 | Moderate |
| 5 | 8.1 | 0.6 | 6.5 | 2.2 | 6.6 | 3.51 | High |
| 6 | 6.0 | 2.1 | 8.0 | 0.3 | 7.6 | 2.85 | Moderate |
| 7 | 8.0 | 0.7 | 5.3 | 5.7 | 4.3 | 3.08 | High |
| 8 | 8.4 | 1.8 | 5.6 | 3.0 | 5.2 | 3.20 | High |
| 9 | 5.2 | 3.6 | 6.3 | 4.0 | 4.9 | 2.82 | Low |
| 10 | 7.7 | 0.7 | 9.8 | 4.5 | 1.3 | 2.76 | Moderate |
boxplot(data[, sapply(data, is.numeric)], las = 2, col = "lightblue", main = "Boxplot Student Lifestyle Dataset")
data$Stress_Level <- as.factor(data$Stress_Level)
y1 <- data$Study_Hours_Per_Day
y2 <- data$Sleep_Hours_Per_Day
y3 <- data$Social_Hours_Per_Day
y4 <- data$Physical_Activity_Hours_Per_Day
y5 <- data$GPA
y <- cbind(y1, y2, y3, y4, y5)
dt <- data.frame(Stress_Level = data$Stress_Level,y1, y2, y3, y4, y5)
kable(head(dt, 10), caption = "Student Lifestyle Dataset", align = "l")
| Stress_Level | y1 | y2 | y3 | y4 | y5 |
|---|---|---|---|---|---|
| Moderate | 6.9 | 8.7 | 2.8 | 1.8 | 2.99 |
| Low | 5.3 | 8.0 | 4.2 | 3.0 | 2.75 |
| Low | 5.1 | 9.2 | 1.2 | 4.6 | 2.67 |
| Moderate | 6.5 | 7.2 | 1.7 | 6.5 | 2.88 |
| High | 8.1 | 6.5 | 2.2 | 6.6 | 3.51 |
| Moderate | 6.0 | 8.0 | 0.3 | 7.6 | 2.85 |
| High | 8.0 | 5.3 | 5.7 | 4.3 | 3.08 |
| High | 8.4 | 5.6 | 3.0 | 5.2 | 3.20 |
| Low | 5.2 | 6.3 | 4.0 | 4.9 | 2.82 |
| Moderate | 7.7 | 9.8 | 4.5 | 1.3 | 2.76 |
Menguji apakah tingkat stres mempengaruhi beberapa variabel gaya hidup mahasiswa.
Uji asumsi Dependensi
library(psych)
dv <- dt[,2:6]
cortest.bartlett(cor(dv), n = nrow(dv))
## $chisq
## [1] 4812.616
##
## $p.value
## [1] 0
##
## $df
## [1] 10
Uji asumsi normalitas multivariat
library(mvnormtest)
mshapiro.test(t(y))
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.9991, p-value = 0.4356
Uji asumsi homogenitas kovarians
library(MVTests)
##
## Attaching package: 'MVTests'
## The following object is masked from 'package:datasets':
##
## iris
BoxM(y, data$Stress_Level)
## $Chisq
## [1] 980.8795
##
## $df
## [1] 30
##
## $p.value
## [1] 5.559882e-187
##
## $Test
## [1] "BoxM"
##
## attr(,"class")
## [1] "MVTests" "list"
Uji asumsi linearitas
kable(cor(y), caption = "Matriks Korelasi Variabel Dependen", digits = 3, align = "c")
| y1 | y2 | y3 | y4 | y5 | |
|---|---|---|---|---|---|
| y1 | 1.000 | 0.027 | -0.138 | -0.488 | 0.734 |
| y2 | 0.027 | 1.000 | -0.194 | -0.470 | -0.004 |
| y3 | -0.138 | -0.194 | 1.000 | -0.417 | -0.086 |
| y4 | -0.488 | -0.470 | -0.417 | 1.000 | -0.341 |
| y5 | 0.734 | -0.004 | -0.086 | -0.341 | 1.000 |
Uji Manova satu arah
uji <- manova(y ~ Stress_Level, data = dt)
uji
## Call:
## manova(y ~ Stress_Level, data = dt)
##
## Terms:
## Stress_Level Residuals
## y1 2213.047 1839.842
## y2 441.182 3825.425
## y3 17.206 5682.103
## y4 605.599 12029.579
## y5 54.103 124.220
## Deg. of Freedom 2 1997
##
## Residual standard errors: 0.9598452 1.384047 1.686807 2.454348 0.2494056
## Estimated effects may be unbalanced
Sebagian besar asumsi MANOVA telah terpenuhi, kecuali homogenitas matriks kovarians. Oleh karena itu, analisis tetap dilanjutkan dengan menggunakan uji Pillai’s Trace yang lebih robust.
summary(uji, test = "Wilks")
## Df Wilks approx F num Df den Df Pr(>F)
## Stress_Level 2 0.34572 279.32 10 3986 < 2.2e-16 ***
## Residuals 1997
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(uji, test = "Pillai")
## Df Pillai approx F num Df den Df Pr(>F)
## Stress_Level 2 0.664 198.21 10 3988 < 2.2e-16 ***
## Residuals 1997
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(uji, test = "Hotelling-Lawley")
## Df Hotelling-Lawley approx F num Df den Df Pr(>F)
## Stress_Level 2 1.8644 371.39 10 3984 < 2.2e-16 ***
## Residuals 1997
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(uji, test = "Roy")
## Df Roy approx F num Df den Df Pr(>F)
## Stress_Level 2 1.8492 737.46 5 1994 < 2.2e-16 ***
## Residuals 1997
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Semua statistik uji MANOVA menunjukkan hasil signifikan, sehingga dapat disimpulkan bahwa terdapat perbedaan yang signifikan antar kelompok tingkat stress dan hasil tersebut konsisten pada berbagai metode pengujian.
summary.aov(uji)
## Response y1 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 2213.1 1106.52 1201 < 2.2e-16 ***
## Residuals 1997 1839.8 0.92
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response y2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 441.2 220.591 115.16 < 2.2e-16 ***
## Residuals 1997 3825.4 1.916
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response y3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 17.2 8.6029 3.0235 0.04885 *
## Residuals 1997 5682.1 2.8453
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response y4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 605.6 302.800 50.267 < 2.2e-16 ***
## Residuals 1997 12029.6 6.024
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response y5 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 54.103 27.0514 434.89 < 2.2e-16 ***
## Residuals 1997 124.220 0.0622
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hasil uji ANOVA menunjukkan bahwa seluruh variabel dependen dipengaruhi secara signifikan oleh tingkat stres mahasiswa.
Menguji apakah tingkat stres mempengaruhi GPA setelah mengontrol jam belajar.
Uji asumsi linearitas
plot(data$Study_Hours_Per_Day, data$GPA)
abline(lm(GPA ~ Study_Hours_Per_Day, data = data))
Uji asumsi homogenitas varians
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:psych':
##
## logit
leveneTest(GPA ~ Stress_Level, data = data)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 21.372 6.548e-10 ***
## 1997
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model <- aov(GPA ~ Stress_Level + Study_Hours_Per_Day, data = data)
Uji asumsi independensi error
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dwtest(model)
##
## Durbin-Watson test
##
## data: model
## DW = 2.0014, p-value = 0.513
## alternative hypothesis: true autocorrelation is greater than 0
Uji asumsi normalitas residual
shapiro.test(residuals(model))
##
## Shapiro-Wilk normality test
##
## data: residuals(model)
## W = 0.99913, p-value = 0.468
Secara umum, seluruh asumsi dalam analisis ANCOVA telah terpenuhi, sehingga model yang digunakan valid untuk analisis lebih lanjut.
summary(model)
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 54.10 27.05 659 <2e-16 ***
## Study_Hours_Per_Day 1 42.28 42.28 1030 <2e-16 ***
## Residuals 1996 81.94 0.04
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hasil ANCOVA menunjukkan bahwa tingkat stres dan durasi belajar per hari berpengaruh signifikan terhadap GPA mahasiswa.
Menguji apakah tingkat stres mempengaruhi beberapa variabel gaya hidup mahasiswa secara simultan setelah mengontrol jam belajar.
Y <- cbind(
data$Sleep_Hours_Per_Day,
data$Social_Hours_Per_Day,
data$Physical_Activity_Hours_Per_Day,
data$GPA
)
Uji asumsi normalitas multivariat
library(mvnormtest)
mshapiro.test(t(Y))
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99859, p-value = 0.0951
Uji asumsi homogenitas kovarians
library(MVTests)
BoxM(Y, data$Stress_Level)
## $Chisq
## [1] 326.0936
##
## $df
## [1] 20
##
## $p.value
## [1] 3.674718e-57
##
## $Test
## [1] "BoxM"
##
## attr(,"class")
## [1] "MVTests" "list"
Uji linearitas dilakukan antara kovariat dan variabel dependen. Secara umum, pola serupa juga ditemukan pada variabel dependen lainnya.
pairs(~ Study_Hours_Per_Day + Sleep_Hours_Per_Day +
Social_Hours_Per_Day + Physical_Activity_Hours_Per_Day + GPA,
data = data)
Uji korelasi antar variabel dependen
kable(cor(Y), caption = "Matriks Korelasi Variabel Dependen", digits = 3, align = "c")
| 1.000 | -0.194 | -0.470 | -0.004 |
| -0.194 | 1.000 | -0.417 | -0.086 |
| -0.470 | -0.417 | 1.000 | -0.341 |
| -0.004 | -0.086 | -0.341 | 1.000 |
model2 <- manova(Y ~ Stress_Level + Study_Hours_Per_Day, data = data)
summary(model2, test = "Pillai")
## Df Pillai approx F num Df den Df Pr(>F)
## Stress_Level 2 0.64140 235.34 8 3988 < 2.2e-16 ***
## Study_Hours_Per_Day 1 0.59236 724.02 4 1993 < 2.2e-16 ***
## Residuals 1996
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary.aov(model2)
## Response 1 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 441.2 220.59 135.22 < 2.2e-16 ***
## Study_Hours_Per_Day 1 569.3 569.26 348.95 < 2.2e-16 ***
## Residuals 1996 3256.2 1.63
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 17.2 8.603 3.0866 0.04587 *
## Study_Hours_Per_Day 1 119.0 118.958 42.6809 8.154e-11 ***
## Residuals 1996 5563.1 2.787
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 605.6 302.80 67.942 < 2.2e-16 ***
## Study_Hours_Per_Day 1 3134.0 3133.95 703.197 < 2.2e-16 ***
## Residuals 1996 8895.6 4.46
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Stress_Level 2 54.103 27.051 658.97 < 2.2e-16 ***
## Study_Hours_Per_Day 1 42.281 42.281 1029.96 < 2.2e-16 ***
## Residuals 1996 81.939 0.041
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hasil analisis MANCOVA menunjukkan bahwa tingkat stres dan durasi belajar per hari berpengaruh signifikan terhadap seluruh variabel gaya hidup mahasiswa.
Secara keseluruhan, ketiga analisis memberikan kesimpulan yang konsisten yaitu tingkat stres merupakan faktor yang berpengaruh signifikan terhadap berbagai aspek gaya hidup mahasiswa, mulai dari pola tidur, aktivitas sosial, aktivitas fisik, hingga GPA. Bahkan setelah jam belajar dikontrol sebagai kovariat, pengaruh tingkat stres tetap nyata dan signifikan. Temuan ini mengindikasikan bahwa pengelolaan stres pada mahasiswa perlu mendapat perhatian serius, karena stres tidak hanya berdampak pada satu aspek kehidupan, melainkan mempengaruhi keseluruhan pola gaya hidup mahasiswa secara keseluruhan.