1. Load Library

# install.packages("seminr")
library(seminr)
library(readr)
library(psych)
library(corrplot)

2. Load Data

Catatan: Pastikan file StressLevelDataset.csv berada di folder yang sama dengan file .Rmd ini sebelum di-knit.
Dataset dapat diunduh di: https://www.kaggle.com/datasets/rxnach/student-stress-factors-a-comprehensive-analysis

data <- read.csv("StressLevelDataset.csv")
head(data)
##   anxiety_level self_esteem mental_health_history depression headache
## 1            14          20                     0         11        2
## 2            15           8                     1         15        5
## 3            12          18                     1         14        2
## 4            16          12                     1         15        4
## 5            16          28                     0          7        2
## 6            20          13                     1         21        3
##   blood_pressure sleep_quality breathing_problem noise_level living_conditions
## 1              1             2                 4           2                 3
## 2              3             1                 4           3                 1
## 3              1             2                 2           2                 2
## 4              3             1                 3           4                 2
## 5              3             5                 1           3                 2
## 6              3             1                 4           3                 2
##   safety basic_needs academic_performance study_load
## 1      3           2                    3          2
## 2      2           2                    1          4
## 3      3           2                    2          3
## 4      2           2                    2          4
## 5      4           3                    4          3
## 6      2           1                    2          5
##   teacher_student_relationship future_career_concerns social_support
## 1                            3                      3              2
## 2                            1                      5              1
## 3                            3                      2              2
## 4                            1                      4              1
## 5                            1                      2              1
## 6                            2                      5              1
##   peer_pressure extracurricular_activities bullying stress_level
## 1             3                          3        2            1
## 2             4                          5        5            2
## 3             3                          2        2            1
## 4             4                          4        5            2
## 5             5                          0        5            1
## 6             4                          4        5            2

3. Eksplorasi Data Awal

# cek missing value
colSums(is.na(data))
##                anxiety_level                  self_esteem 
##                            0                            0 
##        mental_health_history                   depression 
##                            0                            0 
##                     headache               blood_pressure 
##                            0                            0 
##                sleep_quality            breathing_problem 
##                            0                            0 
##                  noise_level            living_conditions 
##                            0                            0 
##                       safety                  basic_needs 
##                            0                            0 
##         academic_performance                   study_load 
##                            0                            0 
## teacher_student_relationship       future_career_concerns 
##                            0                            0 
##               social_support                peer_pressure 
##                            0                            0 
##   extracurricular_activities                     bullying 
##                            0                            0 
##                 stress_level 
##                            0
summary(data)
##  anxiety_level    self_esteem    mental_health_history   depression   
##  Min.   : 0.00   Min.   : 0.00   Min.   :0.0000        Min.   : 0.00  
##  1st Qu.: 6.00   1st Qu.:11.00   1st Qu.:0.0000        1st Qu.: 6.00  
##  Median :11.00   Median :19.00   Median :0.0000        Median :12.00  
##  Mean   :11.06   Mean   :17.78   Mean   :0.4927        Mean   :12.56  
##  3rd Qu.:16.00   3rd Qu.:26.00   3rd Qu.:1.0000        3rd Qu.:19.00  
##  Max.   :21.00   Max.   :30.00   Max.   :1.0000        Max.   :27.00  
##     headache     blood_pressure  sleep_quality  breathing_problem
##  Min.   :0.000   Min.   :1.000   Min.   :0.00   Min.   :0.000    
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.00   1st Qu.:2.000    
##  Median :3.000   Median :2.000   Median :2.50   Median :3.000    
##  Mean   :2.508   Mean   :2.182   Mean   :2.66   Mean   :2.754    
##  3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:4.00   3rd Qu.:4.000    
##  Max.   :5.000   Max.   :3.000   Max.   :5.00   Max.   :5.000    
##   noise_level    living_conditions     safety       basic_needs   
##  Min.   :0.000   Min.   :0.000     Min.   :0.000   Min.   :0.000  
##  1st Qu.:2.000   1st Qu.:2.000     1st Qu.:2.000   1st Qu.:2.000  
##  Median :3.000   Median :2.000     Median :2.000   Median :3.000  
##  Mean   :2.649   Mean   :2.518     Mean   :2.737   Mean   :2.773  
##  3rd Qu.:3.000   3rd Qu.:3.000     3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000     Max.   :5.000   Max.   :5.000  
##  academic_performance   study_load    teacher_student_relationship
##  Min.   :0.000        Min.   :0.000   Min.   :0.000               
##  1st Qu.:2.000        1st Qu.:2.000   1st Qu.:2.000               
##  Median :2.000        Median :2.000   Median :2.000               
##  Mean   :2.773        Mean   :2.622   Mean   :2.648               
##  3rd Qu.:4.000        3rd Qu.:3.000   3rd Qu.:4.000               
##  Max.   :5.000        Max.   :5.000   Max.   :5.000               
##  future_career_concerns social_support  peer_pressure  
##  Min.   :0.000          Min.   :0.000   Min.   :0.000  
##  1st Qu.:1.000          1st Qu.:1.000   1st Qu.:2.000  
##  Median :2.000          Median :2.000   Median :2.000  
##  Mean   :2.649          Mean   :1.882   Mean   :2.735  
##  3rd Qu.:4.000          3rd Qu.:3.000   3rd Qu.:4.000  
##  Max.   :5.000          Max.   :3.000   Max.   :5.000  
##  extracurricular_activities    bullying      stress_level   
##  Min.   :0.000              Min.   :0.000   Min.   :0.0000  
##  1st Qu.:2.000              1st Qu.:1.000   1st Qu.:0.0000  
##  Median :2.500              Median :3.000   Median :1.0000  
##  Mean   :2.767              Mean   :2.617   Mean   :0.9964  
##  3rd Qu.:4.000              3rd Qu.:4.000   3rd Qu.:2.0000  
##  Max.   :5.000              Max.   :5.000   Max.   :2.0000
# correlation heatmap — berguna buat lihat mana yang saling berkaitan
cor_matrix <- cor(data)
corrplot(
  cor_matrix,
  method = "color",
  tl.cex = 0.65,
  mar    = c(0, 0, 1, 0),
  title  = "Correlation Matrix - StressLevelDataset"
)

boxplot(
  data,
  las      = 2,
  cex.axis = 0.65,
  main     = "Boxplot Semua Variabel",
  col      = "lightblue"
)


4. Preprocessing: Reverse Coding

Sebelum membangun model, dua indikator perlu di-reverse code karena arahnya berlawanan dengan konstruk latennya:

  • self_esteem → semakin tinggi self-esteem, semakin rendah tekanan psikologis. Karena konstruk Psychological_Factors merepresentasikan beban psikologis, indikator ini harus dibalik.
  • social_support → semakin tinggi dukungan sosial, semakin rendah stres sosial. Karena konstruk Social_Factors merepresentasikan stresor sosial, indikator ini juga harus dibalik.
# max self_esteem = 30, max social_support = 3 (sudah dicek dari data)
data$self_esteem_rev    <- max(data$self_esteem)    - data$self_esteem
data$social_support_rev <- max(data$social_support) - data$social_support

# cek sekilas hasilnya
head(data[, c("self_esteem", "self_esteem_rev", "social_support", "social_support_rev")])
##   self_esteem self_esteem_rev social_support social_support_rev
## 1          20              10              2                  1
## 2           8              22              1                  2
## 3          18              12              2                  1
## 4          12              18              1                  2
## 5          28               2              1                  2
## 6          13              17              1                  2

5. Measurement Model (Outer Model)

measurement_model <- constructs(

  # Faktor Psikologis — semua indikator kini searah (semakin tinggi = semakin stres)
  reflective(
    "Psychological_Factors",
    c("anxiety_level", "self_esteem_rev", "depression")
  ),

  # Faktor Akademik
  reflective(
    "Academic_Factors",
    c("study_load", "future_career_concerns")
  ),

  # Faktor Sosial — social_support_rev sudah dibalik agar searah dengan peer_pressure & bullying
  reflective(
    "Social_Factors",
    c("social_support_rev", "peer_pressure", "bullying")
  ),

  # Stress Level — single item, CR dan AVE akan trivially = 1 (keterbatasan model)
  reflective(
    "Stress_Level",
    single_item("stress_level")
  )

)

6. Structural Model (Inner Model)

structural_model <- relationships(
  paths(
    from = c("Psychological_Factors", "Academic_Factors", "Social_Factors"),
    to   = "Stress_Level"
  )
)

7. Estimasi SEM PLS

pls_model <- estimate_pls(
  data              = data,
  measurement_model = measurement_model,
  structural_model  = structural_model
)

summary(pls_model)
## 
## Results from  package seminr (2.4.2)
## 
## Path Coefficients:
##                       Stress_Level
## R^2                          0.794
## AdjR^2                       0.794
## Psychological_Factors        0.777
## Academic_Factors             0.310
## Social_Factors              -0.199
## 
## Reliability:
##                       alpha  rhoA  rhoC   AVE
## Psychological_Factors 0.869 0.869 0.869 0.689
## Academic_Factors      0.731 0.744 0.736 0.583
## Social_Factors        0.801 0.809 0.804 0.579
## Stress_Level          1.000 1.000 1.000 1.000
## 
## Alpha, rhoA, and rhoC should exceed 0.7 while AVE should exceed 0.5

8. Evaluasi Outer Model

8.1 Composite Reliability (CR) & AVE

summary(pls_model)$reliability
##                       alpha  rhoA  rhoC   AVE
## Psychological_Factors 0.869 0.869 0.869 0.689
## Academic_Factors      0.731 0.744 0.736 0.583
## Social_Factors        0.801 0.809 0.804 0.579
## Stress_Level          1.000 1.000 1.000 1.000
## 
## Alpha, rhoA, and rhoC should exceed 0.7 while AVE should exceed 0.5

Interpretasi:

  • CR > 0.7 → konstruk reliabel ✓
  • AVE > 0.5 → convergent validity terpenuhi ✓
  • Stress_Level adalah single-item construct sehingga CR dan AVE bernilai 1 secara trivial — ini adalah keterbatasan model yang perlu disebutkan dalam laporan.

8.2 Outer Loadings

pls_model$outer_loadings
##                        Psychological_Factors Academic_Factors Social_Factors
## anxiety_level                      0.8235960        0.0000000      0.0000000
## self_esteem_rev                    0.8452811        0.0000000      0.0000000
## depression                         0.8208944        0.0000000      0.0000000
## study_load                         0.0000000        0.7013837      0.0000000
## future_career_concerns             0.0000000        0.8213453      0.0000000
## social_support_rev                 0.0000000        0.0000000      0.6943951
## peer_pressure                      0.0000000        0.0000000      0.7582764
## bullying                           0.0000000        0.0000000      0.8246733
## stress_level                       0.0000000        0.0000000      0.0000000
##                        Stress_Level
## anxiety_level                     0
## self_esteem_rev                   0
## depression                        0
## study_load                        0
## future_career_concerns            0
## social_support_rev                0
## peer_pressure                     0
## bullying                          0
## stress_level                      1

Interpretasi:
Indikator dianggap valid apabila outer loading > 0.7. Jika ada yang di bawah itu, pertimbangkan untuk dikeluarkan dari konstruk.


8.3 Discriminant Validity (FL Criteria)

summary(pls_model)$validity$fl_criteria
##                       Psychological_Factors Academic_Factors Social_Factors
## Psychological_Factors                 0.830                .              .
## Academic_Factors                      0.828            0.764              .
## Social_Factors                        0.851            0.804          0.761
## Stress_Level                          0.834            0.780          0.819
##                       Stress_Level
## Psychological_Factors            .
## Academic_Factors                 .
## Social_Factors                   .
## Stress_Level                 1.000
## 
## FL Criteria table reports square root of AVE on the diagonal and construct correlations on the lower triangle.

Interpretasi:
Discriminant validity terpenuhi apabila setiap indikator memiliki loading tertinggi pada konstruknya sendiri dibandingkan konstruk lain (nilai diagonal > nilai off-diagonal pada baris yang sama).


9. Evaluasi Inner Model

9.1 VIF (Variance Inflation Factor)

summary(pls_model)$vif_antecedents
## Stress_Level :
## Psychological_Factors      Academic_Factors        Social_Factors 
##                 4.599                 3.586                 4.090

Interpretasi: VIF < 5 mengindikasikan tidak ada masalah multikolinearitas antar konstruk eksogen.


9.2 R-Squared

pls_model$rSquared
##        Stress_Level
## Rsq       0.7943958
## AdjRsq    0.7938330

Interpretasi: Semakin mendekati 1, semakin besar kemampuan konstruk eksogen menjelaskan variansi Stress_Level. Nilai > 0.67 = kuat, 0.33–0.67 = moderat, 0.19–0.33 = lemah.


9.3 f-Squared (Effect Size)

fSquared(pls_model, iv = "Psychological_Factors", dv = "Stress_Level")
## [1] -0.06741771
fSquared(pls_model, iv = "Academic_Factors",      dv = "Stress_Level")
## [1] -0.0270953
fSquared(pls_model, iv = "Social_Factors",         dv = "Stress_Level")
## [1] -0.005417874

Interpretasi: f² < 0.02 = tidak signifikan | 0.02–0.15 = kecil | 0.15–0.35 = sedang | > 0.35 = besar.


10. Bootstrapping (Uji Signifikansi Path Coefficient)

# nboot = 5000 sudah cukup untuk estimasi stabil
boot_model <- bootstrap_model(
  seminr_model = pls_model,
  nboot        = 5000,
  cores        = 1,
  seed         = 123
)

summary(boot_model)
## 
## Results from Bootstrap resamples:  5000
## 
## Bootstrapped Structural Paths:
##                                         Original Est. Bootstrap Mean
## Psychological_Factors  ->  Stress_Level         0.777          0.142
## Academic_Factors  ->  Stress_Level              0.310          0.749
## Social_Factors  ->  Stress_Level               -0.199         -0.008
##                                         Bootstrap SD T Stat. 2.5% CI 97.5% CI
## Psychological_Factors  ->  Stress_Level       31.645   0.025  -7.440    7.332
## Academic_Factors  ->  Stress_Level            20.345   0.015  -4.142    5.471
## Social_Factors  ->  Stress_Level              27.875  -0.007  -7.645    7.657
##                                         Bootstrap P Val
## Psychological_Factors  ->  Stress_Level           0.558
## Academic_Factors  ->  Stress_Level                0.530
## Social_Factors  ->  Stress_Level                  0.914
## 
## Bootstrapped Weights:
##                                              Original Est. Bootstrap Mean
## anxiety_level  ->  Psychological_Factors             0.372          0.372
## self_esteem_rev  ->  Psychological_Factors           0.381          0.381
## depression  ->  Psychological_Factors                0.370          0.370
## study_load  ->  Academic_Factors                     0.518          0.519
## future_career_concerns  ->  Academic_Factors         0.607          0.607
## social_support_rev  ->  Social_Factors               0.360          0.360
## peer_pressure  ->  Social_Factors                    0.393          0.393
## bullying  ->  Social_Factors                         0.427          0.427
## stress_level  ->  Stress_Level                       1.000          1.000
##                                              Bootstrap SD T Stat. 2.5% CI
## anxiety_level  ->  Psychological_Factors            0.007  54.338   0.359
## self_esteem_rev  ->  Psychological_Factors          0.007  52.631   0.368
## depression  ->  Psychological_Factors               0.006  58.908   0.358
## study_load  ->  Academic_Factors                    0.012  43.263   0.495
## future_career_concerns  ->  Academic_Factors        0.011  53.922   0.585
## social_support_rev  ->  Social_Factors              0.010  37.727   0.341
## peer_pressure  ->  Social_Factors                   0.009  42.771   0.375
## bullying  ->  Social_Factors                        0.009  47.148   0.410
## stress_level  ->  Stress_Level                      0.000       .   1.000
##                                              97.5% CI Bootstrap P Val
## anxiety_level  ->  Psychological_Factors        0.385           0.000
## self_esteem_rev  ->  Psychological_Factors      0.396           0.000
## depression  ->  Psychological_Factors           0.383           0.000
## study_load  ->  Academic_Factors                0.542           0.000
## future_career_concerns  ->  Academic_Factors    0.630           0.000
## social_support_rev  ->  Social_Factors          0.379           0.000
## peer_pressure  ->  Social_Factors               0.411           0.000
## bullying  ->  Social_Factors                    0.446           0.000
## stress_level  ->  Stress_Level                  1.000           0.000
## 
## Bootstrapped Loadings:
##                                              Original Est. Bootstrap Mean
## anxiety_level  ->  Psychological_Factors             0.824          0.824
## self_esteem_rev  ->  Psychological_Factors           0.845          0.845
## depression  ->  Psychological_Factors                0.821          0.821
## study_load  ->  Academic_Factors                     0.701          0.702
## future_career_concerns  ->  Academic_Factors         0.821          0.821
## social_support_rev  ->  Social_Factors               0.694          0.695
## peer_pressure  ->  Social_Factors                    0.758          0.758
## bullying  ->  Social_Factors                         0.825          0.825
## stress_level  ->  Stress_Level                       1.000          1.000
##                                              Bootstrap SD T Stat. 2.5% CI
## anxiety_level  ->  Psychological_Factors            0.018  45.293   0.788
## self_esteem_rev  ->  Psychological_Factors          0.015  56.503   0.815
## depression  ->  Psychological_Factors               0.017  47.022   0.786
## study_load  ->  Academic_Factors                    0.020  34.335   0.661
## future_career_concerns  ->  Academic_Factors        0.026  32.097   0.770
## social_support_rev  ->  Social_Factors              0.022  31.312   0.650
## peer_pressure  ->  Social_Factors                   0.022  35.251   0.714
## bullying  ->  Social_Factors                        0.020  42.195   0.785
## stress_level  ->  Stress_Level                      0.000       .   1.000
##                                              97.5% CI Bootstrap P Val
## anxiety_level  ->  Psychological_Factors        0.859           0.000
## self_esteem_rev  ->  Psychological_Factors      0.873           0.000
## depression  ->  Psychological_Factors           0.854           0.000
## study_load  ->  Academic_Factors                0.741           0.000
## future_career_concerns  ->  Academic_Factors    0.870           0.000
## social_support_rev  ->  Social_Factors          0.736           0.000
## peer_pressure  ->  Social_Factors               0.799           0.000
## bullying  ->  Social_Factors                    0.861           0.000
## stress_level  ->  Stress_Level                  1.000           0.000
## 
## Bootstrapped HTMT:
##                                             Original Est. Bootstrap Mean
## Psychological_Factors  ->  Academic_Factors         1.032          1.032
## Psychological_Factors  ->  Social_Factors           1.020          1.021
## Psychological_Factors  ->  Stress_Level             0.895          0.895
## Academic_Factors  ->  Social_Factors                1.040          1.041
## Academic_Factors  ->  Stress_Level                  0.907          0.908
## Social_Factors  ->  Stress_Level                    0.914          0.914
##                                             Bootstrap SD 2.5% CI 97.5% CI
## Psychological_Factors  ->  Academic_Factors        0.021   0.993    1.074
## Psychological_Factors  ->  Social_Factors          0.015   0.990    1.049
## Psychological_Factors  ->  Stress_Level            0.014   0.867    0.921
## Academic_Factors  ->  Social_Factors               0.025   0.991    1.091
## Academic_Factors  ->  Stress_Level                 0.023   0.862    0.952
## Social_Factors  ->  Stress_Level                   0.014   0.885    0.941
##                                             Bootstrap P Val
## Psychological_Factors  ->  Academic_Factors           0.116
## Psychological_Factors  ->  Social_Factors             0.176
## Psychological_Factors  ->  Stress_Level               0.000
## Academic_Factors  ->  Social_Factors                  0.106
## Academic_Factors  ->  Stress_Level                    0.000
## Social_Factors  ->  Stress_Level                      0.000
## 
## Bootstrapped Total Paths:
##                                         Original Est. Bootstrap Mean
## Psychological_Factors  ->  Stress_Level         0.777          0.142
## Academic_Factors  ->  Stress_Level              0.310          0.749
## Social_Factors  ->  Stress_Level               -0.199         -0.008
##                                         Bootstrap SD 2.5% CI 97.5% CI
## Psychological_Factors  ->  Stress_Level       31.645  -7.440    7.332
## Academic_Factors  ->  Stress_Level            20.345  -4.142    5.471
## Social_Factors  ->  Stress_Level              27.875  -7.645    7.657

Interpretasi:
Path coefficient dinyatakan signifikan apabila p-value < 0.05 atau t-value > 1.96 (two-tailed, α = 5%).


11. Visualisasi Path Diagram

plot(pls_model)

Dataset: Ryusei Tanaka. (2023). Student Stress Factors: A Comprehensive Analysis. Kaggle.
Analisis menggunakan package seminr (Ray et al., 2021) di R.