Data

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 Lifestyle Dataset
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")
Student Lifestyle Dataset
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

Manova

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")
Matriks Korelasi Variabel Dependen
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.

ANCOVA

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.

Mancova

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")
Matriks Korelasi Variabel Dependen
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.

Kesimpulan

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.