Penelitian ini menggunakan dataset Online Gaming Anxiety Data yang diperoleh dari Kaggle untuk menganalisis hubungan antara durasi bermain game, problematic gaming, tingkat kecemasan, dan kepuasan hidup. Analisis ini bertujuan untuk memahami mekanisme psikologis di balik perilaku bermain game. Penelitian tidak hanya berfokus pada apakah bermain game dapat meningkatkan kecemasan, tetapi juga bagaimana proses tersebut terjadi melalui hubungan antar variabel seperti problematic gaming, anxiety (GAD), dan satisfaction with life (SWL).

# LOAD PACKAGE
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.3
## Warning: package 'lubridate' was built under R version 4.5.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.0     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.2     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.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(dplyr)
library(tidyr)
library(janitor)
## Warning: package 'janitor' was built under R version 4.5.3
## 
## Attaching package: 'janitor'
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
library(psych)
## 
## Attaching package: 'psych'
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(skimr)
## Warning: package 'skimr' was built under R version 4.5.3
library(ggplot2)
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.5.3
## corrplot 0.95 loaded
library(caret)
## Warning: package 'caret' was built under R version 4.5.3
## Loading required package: lattice
## 
## Attaching package: 'caret'
## 
## The following object is masked from 'package:purrr':
## 
##     lift
library(seminr)
## Warning: package 'seminr' was built under R version 4.5.3
## 
## Attaching package: 'seminr'
## 
## The following object is masked from 'package:purrr':
## 
##     rerun
library(semTools)
## Warning: package 'semTools' was built under R version 4.5.3
## Loading required package: lavaan
## Warning: package 'lavaan' was built under R version 4.5.3
## This is lavaan 0.6-21
## lavaan is FREE software! Please report any bugs.
## 
## Attaching package: 'lavaan'
## 
## The following object is masked from 'package:psych':
## 
##     cor2cov
## 
##  
## ###############################################################################
## This is semTools 0.5-8
## All users of R (or SEM) are invited to submit functions or ideas for functions.
## ###############################################################################
## 
## Attaching package: 'semTools'
## 
## The following objects are masked from 'package:psych':
## 
##     reliability, skew
## 
## The following object is masked from 'package:readr':
## 
##     clipboard
#Import Data
data <- read.csv("GamingStudy_data.csv")
# Struktur data
str(data)
## 'data.frame':    13464 obs. of  55 variables:
##  $ S..No.         : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Timestamp      : num  42052 42052 42052 42052 42052 ...
##  $ GAD1           : int  0 1 0 0 2 0 0 0 2 2 ...
##  $ GAD2           : int  0 2 2 0 1 0 0 0 3 1 ...
##  $ GAD3           : int  0 2 2 0 2 0 0 0 2 2 ...
##  $ GAD4           : int  0 2 0 0 2 0 0 0 2 2 ...
##  $ GAD5           : int  1 0 0 0 2 0 0 0 0 2 ...
##  $ GAD6           : int  0 1 3 0 3 1 0 0 1 1 ...
##  $ GAD7           : int  0 0 1 0 2 0 0 0 2 0 ...
##  $ GADE           : chr  "Not difficult at all" "Somewhat difficult" "Not difficult at all" "Not difficult at all" ...
##  $ SWL1           : int  3 3 2 2 2 3 3 3 2 3 ...
##  $ SWL2           : int  5 5 6 5 2 5 4 6 3 3 ...
##  $ SWL3           : int  5 2 5 5 4 3 4 4 3 3 ...
##  $ SWL4           : int  5 5 2 3 5 3 3 3 3 2 ...
##  $ SWL5           : int  5 1 2 2 1 3 2 7 1 2 ...
##  $ Game           : chr  "Skyrim" "Other" "Other" "Other" ...
##  $ Platform       : chr  "Console (PS, Xbox, ...)" "PC" "PC" "PC" ...
##  $ Hours          : int  15 8 0 20 20 4 30 25 2 25 ...
##  $ earnings       : chr  "I play for fun" "I play for fun" "I play for fun" "I play for fun" ...
##  $ whyplay        : chr  "having fun" "having fun" "having fun" "improving" ...
##  $ League         : chr  "N/A" "N/A" "n/a" "N/A" ...
##  $ highestleague  : logi  NA NA NA NA NA NA ...
##  $ streams        : int  0 2 0 5 1 0 8 0 0 0 ...
##  $ SPIN1          : int  1 2 1 2 2 1 1 0 1 1 ...
##  $ SPIN2          : int  0 1 0 0 0 1 2 0 1 1 ...
##  $ SPIN3          : int  0 1 1 0 0 2 2 0 4 1 ...
##  $ SPIN4          : int  1 3 2 1 0 3 3 0 4 1 ...
##  $ SPIN5          : int  0 2 3 3 1 2 1 0 4 3 ...
##  $ SPIN6          : int  0 3 4 0 0 1 1 0 4 3 ...
##  $ SPIN7          : int  1 1 2 0 0 0 1 0 4 0 ...
##  $ SPIN8          : int  0 3 1 0 4 0 2 0 4 1 ...
##  $ SPIN9          : int  0 4 0 0 2 0 3 0 3 2 ...
##  $ SPIN10         : int  0 0 1 0 0 1 1 0 3 2 ...
##  $ SPIN11         : int  0 3 1 1 1 0 3 0 4 3 ...
##  $ SPIN12         : int  0 0 3 3 0 0 1 0 4 1 ...
##  $ SPIN13         : int  0 1 0 0 0 0 0 NA 2 0 ...
##  $ SPIN14         : int  1 3 2 0 0 1 1 0 4 3 ...
##  $ SPIN15         : int  0 3 4 1 0 1 2 0 4 2 ...
##  $ SPIN16         : int  1 1 4 0 3 0 1 0 2 0 ...
##  $ SPIN17         : int  0 2 2 0 0 0 1 0 3 2 ...
##  $ Narcissism     : int  1 1 4 2 1 2 2 5 1 1 ...
##  $ Gender         : chr  "Male" "Male" "Female" "Male" ...
##  $ Age            : int  25 41 32 28 19 24 29 23 23 27 ...
##  $ Work           : chr  "Unemployed / between jobs" "Unemployed / between jobs" "Employed" "Employed" ...
##  $ Degree         : chr  "Bachelor\xa0(or equivalent)" "Bachelor\xa0(or equivalent)" "Bachelor\xa0(or equivalent)" "Bachelor\xa0(or equivalent)" ...
##  $ Birthplace     : chr  "USA" "USA" "Germany" "USA" ...
##  $ Residence      : chr  "USA" "USA" "Germany" "USA" ...
##  $ Reference      : chr  "Reddit" "Reddit" "Reddit" "Reddit" ...
##  $ Playstyle      : chr  "Singleplayer" "Multiplayer - online - with strangers" "Singleplayer" "Multiplayer - online - with online acquaintances or teammates" ...
##  $ accept         : chr  "Accept" "Accept" "Accept" "Accept" ...
##  $ GAD_T          : int  1 8 8 0 14 1 0 0 12 10 ...
##  $ SWL_T          : int  23 16 17 17 14 17 16 23 12 13 ...
##  $ SPIN_T         : int  5 33 31 11 13 13 26 NA 55 26 ...
##  $ Residence_ISO3 : chr  "USA" "USA" "DEU" "USA" ...
##  $ Birthplace_ISO3: chr  "USA" "USA" "DEU" "USA" ...
glimpse(data)
## Rows: 13,464
## Columns: 55
## $ S..No.          <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,…
## $ Timestamp       <dbl> 42052.00, 42052.01, 42052.04, 42052.07, 42052.09, 4205…
## $ GAD1            <int> 0, 1, 0, 0, 2, 0, 0, 0, 2, 2, 3, 0, 0, 0, 0, 3, 1, 0, …
## $ GAD2            <int> 0, 2, 2, 0, 1, 0, 0, 0, 3, 1, 3, 0, 0, 0, 0, 1, 0, 0, …
## $ GAD3            <int> 0, 2, 2, 0, 2, 0, 0, 0, 2, 2, 3, 0, 0, 1, 0, 2, 1, 0, …
## $ GAD4            <int> 0, 2, 0, 0, 2, 0, 0, 0, 2, 2, 3, 0, 0, 0, 1, 1, 1, 0, …
## $ GAD5            <int> 1, 0, 0, 0, 2, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, …
## $ GAD6            <int> 0, 1, 3, 0, 3, 1, 0, 0, 1, 1, 3, 0, 0, 1, 1, 1, 1, 0, …
## $ GAD7            <int> 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 3, 0, 0, 1, 0, 0, 0, 1, …
## $ GADE            <chr> "Not difficult at all", "Somewhat difficult", "Not dif…
## $ SWL1            <int> 3, 3, 2, 2, 2, 3, 3, 3, 2, 3, 5, 7, 6, 6, 2, 5, 3, 5, …
## $ SWL2            <int> 5, 5, 6, 5, 2, 5, 4, 6, 3, 3, 5, 7, 6, 7, 4, 6, 3, 2, …
## $ SWL3            <int> 5, 2, 5, 5, 4, 3, 4, 4, 3, 3, 6, 7, 7, 3, 3, 6, 3, 4, …
## $ SWL4            <int> 5, 5, 2, 3, 5, 3, 3, 3, 3, 2, 6, 5, 6, 6, 2, 5, 3, 6, …
## $ SWL5            <int> 5, 1, 2, 2, 1, 3, 2, 7, 1, 2, 5, 7, 6, 4, 2, 6, 3, 2, …
## $ Game            <chr> "Skyrim", "Other", "Other", "Other", "Other", "Other",…
## $ Platform        <chr> "Console (PS, Xbox, ...)", "PC", "PC", "PC", "Console …
## $ Hours           <int> 15, 8, 0, 20, 20, 4, 30, 25, 2, 25, 14, 25, 10, 25, 30…
## $ earnings        <chr> "I play for fun", "I play for fun", "I play for fun", …
## $ whyplay         <chr> "having fun", "having fun", "having fun", "improving",…
## $ League          <chr> "N/A", "N/A", "n/a", "N/A", "n/a", "-", "N/A", "N/A", …
## $ highestleague   <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ streams         <int> 0, 2, 0, 5, 1, 0, 8, 0, 0, 0, 0, 2, 0, 1, 5, 0, 5, 1, …
## $ SPIN1           <int> 1, 2, 1, 2, 2, 1, 1, 0, 1, 1, 0, 1, 1, 0, 2, 0, 2, 1, …
## $ SPIN2           <int> 0, 1, 0, 0, 0, 1, 2, 0, 1, 1, 0, 0, 3, 4, 1, 3, 4, 1, …
## $ SPIN3           <int> 0, 1, 1, 0, 0, 2, 2, 0, 4, 1, 0, 0, 1, 2, 3, 3, 1, 1, …
## $ SPIN4           <int> 1, 3, 2, 1, 0, 3, 3, 0, 4, 1, 1, 1, 2, 3, 3, 4, 1, 0, …
## $ SPIN5           <int> 0, 2, 3, 3, 1, 2, 1, 0, 4, 3, 1, 0, 2, 4, 1, 2, 2, 1, …
## $ SPIN6           <int> 0, 3, 4, 0, 0, 1, 1, 0, 4, 3, 1, 0, 1, 1, 1, 2, 2, 1, …
## $ SPIN7           <int> 1, 1, 2, 0, 0, 0, 1, 0, 4, 0, 0, 0, 1, 4, 0, 1, 3, 0, …
## $ SPIN8           <int> 0, 3, 1, 0, 4, 0, 2, 0, 4, 1, 0, 0, 0, 1, 4, 3, 1, 0, …
## $ SPIN9           <int> 0, 4, 0, 0, 2, 0, 3, 0, 3, 2, 0, 1, 3, 4, 3, 4, 3, 1, …
## $ SPIN10          <int> 0, 0, 1, 0, 0, 1, 1, 0, 3, 2, 0, 0, 0, 1, 2, 2, 1, 0, …
## $ SPIN11          <int> 0, 3, 1, 1, 1, 0, 3, 0, 4, 3, 0, 0, 3, 1, 3, 1, 4, 1, …
## $ SPIN12          <int> 0, 0, 3, 3, 0, 0, 1, 0, 4, 1, 0, 0, 2, 4, 2, 0, 2, 0, …
## $ SPIN13          <int> 0, 1, 0, 0, 0, 0, 0, NA, 2, 0, 0, 0, 0, 0, 2, 1, 1, 0,…
## $ SPIN14          <int> 1, 3, 2, 0, 0, 1, 1, 0, 4, 3, 2, 0, 1, 0, 2, 2, 3, 0, …
## $ SPIN15          <int> 0, 3, 4, 1, 0, 1, 2, 0, 4, 2, 1, 0, 1, 0, 2, 2, 2, 1, …
## $ SPIN16          <int> 1, 1, 4, 0, 3, 0, 1, 0, 2, 0, 0, 0, 1, 0, 1, 0, 2, 0, …
## $ SPIN17          <int> 0, 2, 2, 0, 0, 0, 1, 0, 3, 2, 0, 0, 1, 0, 1, 0, 2, 0, …
## $ Narcissism      <int> 1, 1, 4, 2, 1, 2, 2, 5, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, …
## $ Gender          <chr> "Male", "Male", "Female", "Male", "Male", "Male", "Mal…
## $ Age             <int> 25, 41, 32, 28, 19, 24, 29, 23, 23, 27, 21, 25, 18, 19…
## $ Work            <chr> "Unemployed / between jobs", "Unemployed / between job…
## $ Degree          <chr> "Bachelor\xa0(or equivalent)", "Bachelor\xa0(or equiva…
## $ Birthplace      <chr> "USA", "USA", "Germany", "USA", "USA", "USA", "USA", "…
## $ Residence       <chr> "USA", "USA", "Germany", "USA", "South Korea", "USA", …
## $ Reference       <chr> "Reddit", "Reddit", "Reddit", "Reddit", "Reddit", "Red…
## $ Playstyle       <chr> "Singleplayer", "Multiplayer - online - with strangers…
## $ accept          <chr> "Accept", "Accept", "Accept", "Accept", "Accept", "Acc…
## $ GAD_T           <int> 1, 8, 8, 0, 14, 1, 0, 0, 12, 10, 19, 0, 0, 3, 2, 8, 4,…
## $ SWL_T           <int> 23, 16, 17, 17, 14, 17, 16, 23, 12, 13, 27, 33, 31, 26…
## $ SPIN_T          <int> 5, 33, 31, 11, 13, 13, 26, NA, 55, 26, 6, 3, 23, 29, 3…
## $ Residence_ISO3  <chr> "USA", "USA", "DEU", "USA", "KOR", "USA", "USA", "JPN"…
## $ Birthplace_ISO3 <chr> "USA", "USA", "DEU", "USA", "USA", "USA", "USA", "USA"…
# Dimensi data
dim(data)
## [1] 13464    55
# Nama variabel
names(data)
##  [1] "S..No."          "Timestamp"       "GAD1"            "GAD2"           
##  [5] "GAD3"            "GAD4"            "GAD5"            "GAD6"           
##  [9] "GAD7"            "GADE"            "SWL1"            "SWL2"           
## [13] "SWL3"            "SWL4"            "SWL5"            "Game"           
## [17] "Platform"        "Hours"           "earnings"        "whyplay"        
## [21] "League"          "highestleague"   "streams"         "SPIN1"          
## [25] "SPIN2"           "SPIN3"           "SPIN4"           "SPIN5"          
## [29] "SPIN6"           "SPIN7"           "SPIN8"           "SPIN9"          
## [33] "SPIN10"          "SPIN11"          "SPIN12"          "SPIN13"         
## [37] "SPIN14"          "SPIN15"          "SPIN16"          "SPIN17"         
## [41] "Narcissism"      "Gender"          "Age"             "Work"           
## [45] "Degree"          "Birthplace"      "Residence"       "Reference"      
## [49] "Playstyle"       "accept"          "GAD_T"           "SWL_T"          
## [53] "SPIN_T"          "Residence_ISO3"  "Birthplace_ISO3"
# CLEANING NAMA KOLOM
data <- clean_names(data)
# Cek nama kolom setelah cleaning
names(data)
##  [1] "s_no"            "timestamp"       "gad1"            "gad2"           
##  [5] "gad3"            "gad4"            "gad5"            "gad6"           
##  [9] "gad7"            "gade"            "swl1"            "swl2"           
## [13] "swl3"            "swl4"            "swl5"            "game"           
## [17] "platform"        "hours"           "earnings"        "whyplay"        
## [21] "league"          "highestleague"   "streams"         "spin1"          
## [25] "spin2"           "spin3"           "spin4"           "spin5"          
## [29] "spin6"           "spin7"           "spin8"           "spin9"          
## [33] "spin10"          "spin11"          "spin12"          "spin13"         
## [37] "spin14"          "spin15"          "spin16"          "spin17"         
## [41] "narcissism"      "gender"          "age"             "work"           
## [45] "degree"          "birthplace"      "residence"       "reference"      
## [49] "playstyle"       "accept"          "gad_t"           "swl_t"          
## [53] "spin_t"          "residence_iso3"  "birthplace_iso3"

Nama variabel dibersihkan menggunakan fungsi clean_names() agar format penamaan variabel menjadi konsisten dan memudahkan proses analisis

# MEMILIH VARIABEL PENELITIAN
data_sem <- data %>%
  select(
    # Moderator
    gender,
    # Variabel eksogen
    hours,
    # GAD
    gad1:gad7,
    # SWL
    swl1:swl5,
    # SPIN
    spin1:spin7
  )

Variabel yang digunakan dalam penelitian terdiri dari: - hours sebagai variabel eksogen, - gender sebagai variabel moderator, - indikator GAD, SWL, dan SPIN sebagai konstruk penelitian.

# CEK STRUKTUR DATA
str(data_sem)
## 'data.frame':    13464 obs. of  21 variables:
##  $ gender: chr  "Male" "Male" "Female" "Male" ...
##  $ hours : int  15 8 0 20 20 4 30 25 2 25 ...
##  $ gad1  : int  0 1 0 0 2 0 0 0 2 2 ...
##  $ gad2  : int  0 2 2 0 1 0 0 0 3 1 ...
##  $ gad3  : int  0 2 2 0 2 0 0 0 2 2 ...
##  $ gad4  : int  0 2 0 0 2 0 0 0 2 2 ...
##  $ gad5  : int  1 0 0 0 2 0 0 0 0 2 ...
##  $ gad6  : int  0 1 3 0 3 1 0 0 1 1 ...
##  $ gad7  : int  0 0 1 0 2 0 0 0 2 0 ...
##  $ swl1  : int  3 3 2 2 2 3 3 3 2 3 ...
##  $ swl2  : int  5 5 6 5 2 5 4 6 3 3 ...
##  $ swl3  : int  5 2 5 5 4 3 4 4 3 3 ...
##  $ swl4  : int  5 5 2 3 5 3 3 3 3 2 ...
##  $ swl5  : int  5 1 2 2 1 3 2 7 1 2 ...
##  $ spin1 : int  1 2 1 2 2 1 1 0 1 1 ...
##  $ spin2 : int  0 1 0 0 0 1 2 0 1 1 ...
##  $ spin3 : int  0 1 1 0 0 2 2 0 4 1 ...
##  $ spin4 : int  1 3 2 1 0 3 3 0 4 1 ...
##  $ spin5 : int  0 2 3 3 1 2 1 0 4 3 ...
##  $ spin6 : int  0 3 4 0 0 1 1 0 4 3 ...
##  $ spin7 : int  1 1 2 0 0 0 1 0 4 0 ...
summary(data_sem)
##     gender              hours              gad1            gad2       
##  Length:13464       Min.   :   0.00   Min.   :0.000   Min.   :0.0000  
##  Class :character   1st Qu.:  12.00   1st Qu.:0.000   1st Qu.:0.0000  
##  Mode  :character   Median :  20.00   Median :1.000   Median :0.0000  
##                     Mean   :  22.25   Mean   :0.861   Mean   :0.6734  
##                     3rd Qu.:  28.00   3rd Qu.:1.000   3rd Qu.:1.0000  
##                     Max.   :8000.00   Max.   :3.000   Max.   :3.0000  
##                     NA's   :30                                        
##       gad3             gad4             gad5            gad6      
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:0.000  
##  Median :1.0000   Median :0.0000   Median :0.000   Median :1.000  
##  Mean   :0.9658   Mean   :0.7241   Mean   :0.488   Mean   :0.911  
##  3rd Qu.:2.0000   3rd Qu.:1.0000   3rd Qu.:1.000   3rd Qu.:1.000  
##  Max.   :3.0000   Max.   :3.0000   Max.   :3.000   Max.   :3.000  
##                                                                   
##       gad7             swl1           swl2            swl3      
##  Min.   :0.0000   Min.   :1.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:2.00   1st Qu.:3.000   1st Qu.:3.000  
##  Median :0.0000   Median :4.00   Median :5.000   Median :5.000  
##  Mean   :0.5888   Mean   :3.72   Mean   :4.602   Mean   :4.345  
##  3rd Qu.:1.0000   3rd Qu.:5.00   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :3.0000   Max.   :7.00   Max.   :7.000   Max.   :7.000  
##                                                                 
##       swl4            swl5           spin1            spin2      
##  Min.   :1.000   Min.   :1.000   Min.   :0.0000   Min.   :0.000  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:0.0000   1st Qu.:0.000  
##  Median :4.000   Median :3.000   Median :1.0000   Median :1.000  
##  Mean   :3.762   Mean   :3.359   Mean   :0.8569   Mean   :1.211  
##  3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:1.0000   3rd Qu.:2.000  
##  Max.   :7.000   Max.   :7.000   Max.   :4.0000   Max.   :4.000  
##                                  NA's   :124      NA's   :154    
##      spin3           spin4           spin5           spin6      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:0.000   1st Qu.:1.000   1st Qu.:0.000   1st Qu.:0.000  
##  Median :1.000   Median :2.000   Median :1.000   Median :1.000  
##  Mean   :1.095   Mean   :1.683   Mean   :1.249   Mean   :1.348  
##  3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :4.000   Max.   :4.000   Max.   :4.000   Max.   :4.000  
##  NA's   :140     NA's   :159     NA's   :166     NA's   :156    
##      spin7      
##  Min.   :0.000  
##  1st Qu.:0.000  
##  Median :1.000  
##  Mean   :1.051  
##  3rd Qu.:2.000  
##  Max.   :4.000  
##  NA's   :138

Berdasarkan hasil str(data_sem) dan summary(data_sem), dataset penelitian terdiri dari 13.401 observasi dan 21 variabel yang meliputi variabel gender, hours bermain game, indikator GAD, SWL, dan SPIN. Variabel gender bertipe karakter, sedangkan variabel lainnya didominasi oleh tipe numerik berupa skala Likert.

Variabel hours memiliki rentang nilai yang sangat besar, yaitu dari 0 hingga 8000 jam dengan rata-rata 22,26 jam. Nilai maksimum yang sangat tinggi menunjukkan adanya indikasi outlier pada variabel tersebut sehingga perlu dilakukan penanganan lebih lanjut.

Indikator konstruk GAD (gad1–gad7) memiliki rentang skor 0–3 dengan nilai rata-rata relatif rendah, yang menunjukkan tingkat kecemasan responden cenderung berada pada kategori rendah hingga sedang. Konstruk SWL (swl1–swl5) memiliki rentang skor 1–7 dengan rata-rata relatif tinggi, yang menunjukkan sebagian besar responden memiliki tingkat kepuasan hidup yang cukup baik.

Sementara itu, indikator SPIN (spin1–spin7) memiliki rentang skor 0–4 dengan rata-rata sedang, yang menunjukkan adanya variasi tingkat kecemasan sosial pada responden. Secara umum, struktur data sudah sesuai untuk analisis karena variabel indikator telah berbentuk numerik dan dapat digunakan pada tahap analisis berikutnya.

# CEK MISSING VALUE
# Jumlah missing value
colSums(is.na(data_sem))
## gender  hours   gad1   gad2   gad3   gad4   gad5   gad6   gad7   swl1   swl2 
##      0     30      0      0      0      0      0      0      0      0      0 
##   swl3   swl4   swl5  spin1  spin2  spin3  spin4  spin5  spin6  spin7 
##      0      0      0    124    154    140    159    166    156    138
# Persentase missing value
sapply(data_sem, function(x){
  sum(is.na(x)) / length(x) * 100
})
##    gender     hours      gad1      gad2      gad3      gad4      gad5      gad6 
## 0.0000000 0.2228164 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
##      gad7      swl1      swl2      swl3      swl4      swl5     spin1     spin2 
## 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.9209745 1.1437908 
##     spin3     spin4     spin5     spin6     spin7 
## 1.0398099 1.1809269 1.2329174 1.1586453 1.0249554
# HANDLE MISSING VALUE
# Numerik -> Median
num_cols <- sapply(data_sem, is.numeric)

preprocess <- preProcess(
  data_sem[, num_cols],
  method = "medianImpute"
)
data_sem[, num_cols] <- predict(
  preprocess,
  data_sem[, num_cols]
)

Berdasarkan hasil dari pengeckan missing value =, ditemukan Presentase missing value sebesar <5% maka dilakukan penanganan pada missing value dengan metode median imputation karena metode ini lebih robust terhadap outlier.

# Cek ulang
colSums(is.na(data_sem))
## gender  hours   gad1   gad2   gad3   gad4   gad5   gad6   gad7   swl1   swl2 
##      0      0      0      0      0      0      0      0      0      0      0 
##   swl3   swl4   swl5  spin1  spin2  spin3  spin4  spin5  spin6  spin7 
##      0      0      0      0      0      0      0      0      0      0
# CEK DUPLIKAT
sum(duplicated(data_sem))
## [1] 63
# Hapus duplikat
data_sem <- distinct(data_sem)

Terdapat 63 data duplikat maka ditangani dengan menghapus data yang duplikat agar kualitas data tetap terjaga.

# CEK OUTLIER (boxplot)
data_long <- data_sem %>%
  select(hours, gad1:gad7, swl1:swl5, spin1:spin7) %>%
  pivot_longer(cols = everything(), names_to = "variabel", values_to = "nilai")
boxplot_all <- ggplot(data_long, aes(x = variabel, y = nilai)) +
  geom_boxplot(fill = "#3498db", color = "#2c3e50", 
               outlier.colour = "red", outlier.shape = 16, outlier.size = 1.5) +
  facet_wrap(~ variabel, scales = "free", ncol = 5) + 
  theme_minimal() +
  labs(title = "Deteksi Outlier semua Variabel",
       x = NULL, y = "Skor / Nilai") +
  theme(axis.text.x = element_blank(), 
        axis.ticks.x = element_blank(),
        strip.text = element_text(face = "bold", size = 10))
print(boxplot_all)

Terlihat pada variabel hours terdapat outrliers yang sangat ekstrem maka perlu dilakukan penanganan,terdapat juga titik yang teridentifikasi sebagai outlier pada variabel konstruk GAD dan SPIN. Namun, outlier pada variabel-variabel tersebut tidak dilakukan penanganan atau penghapusan data. Hal ini karena indikator GAD dan SPIN merupakan data hasil skala Likert yang memiliki rentang nilai terbatas dan bersifat ordinal. Pada data skala Likert, kemunculan nilai outlier masih dianggap wajar karena mencerminkan variasi persepsi, pengalaman maupun kondisi psikologis responden yang sebenarnya.

# MENANGANI OUTLIER HOURS
z_hours <- scale(data_sem$hours)

outlier_hours <- which(abs(z_hours) > 3)

jumlah_outlier_hours <- length(outlier_hours)

print(jumlah_outlier_hours)
## [1] 2
print(outlier_hours)
## [1] 3848 9399
data_sem$hours[outlier_hours]
## [1] 8000  420
#Menghapus Outlier hours
data_clean <- data_sem[-outlier_hours, ]

Outlier pada variabel hours dideteksi menggunakan metode Z-score dengan batas ±3.Terdapat 2 Data yang termasuk outlier ekstrem dihapus agar model lebih stabil dan tidak bias

#Cek dimensi
dim(data_sem)
## [1] 13401    21
dim(data_clean)
## [1] 13399    21
# STANDARDISASI DATA DAN ENCODING
# Standardisasi hanya numerik
data_clean <- data_clean %>%
  mutate(hours = as.vector(scale(hours)))

# ENCODING DATA GENDER
data_clean$gender <- as.factor(data_clean$gender)
data_clean$gender_num <- ifelse(
  data_clean$gender == "Male", 1,
  ifelse(
    data_clean$gender == "Female", 0,
    NA
  )
)

#Menghapus gender selain male/ female
data_clean <- data_clean %>%
  filter(!is.na(gender_num))

#Cek ulang
table(data_sem$gender)
## 
## Female   Male  Other 
##    712  12638     51
table(data_clean$gender)
## 
## Female   Male  Other 
##    712  12638      0
table(data_clean$gender_num)
## 
##     0     1 
##   712 12638

Variabel hours distandardisasi agar berada pada skala yang sama. Variabel gender dilakukan encoding dengan kode Male = 1 dan Female = 0. untuk memudahkan analisis, karena yang dibutuhkan jenis kelamin maka other dihapus.

# CEK DATA AKHIR
str(data_clean)
## 'data.frame':    13350 obs. of  22 variables:
##  $ gender    : Factor w/ 3 levels "Female","Male",..: 2 2 1 2 2 2 2 1 1 1 ...
##  $ hours     : num  -0.482 -0.99 -1.57 -0.119 -0.119 ...
##  $ gad1      : int  0 1 0 0 2 0 0 0 2 2 ...
##  $ gad2      : int  0 2 2 0 1 0 0 0 3 1 ...
##  $ gad3      : int  0 2 2 0 2 0 0 0 2 2 ...
##  $ gad4      : int  0 2 0 0 2 0 0 0 2 2 ...
##  $ gad5      : int  1 0 0 0 2 0 0 0 0 2 ...
##  $ gad6      : int  0 1 3 0 3 1 0 0 1 1 ...
##  $ gad7      : int  0 0 1 0 2 0 0 0 2 0 ...
##  $ swl1      : int  3 3 2 2 2 3 3 3 2 3 ...
##  $ swl2      : int  5 5 6 5 2 5 4 6 3 3 ...
##  $ swl3      : int  5 2 5 5 4 3 4 4 3 3 ...
##  $ swl4      : int  5 5 2 3 5 3 3 3 3 2 ...
##  $ swl5      : int  5 1 2 2 1 3 2 7 1 2 ...
##  $ spin1     : num  1 2 1 2 2 1 1 0 1 1 ...
##  $ spin2     : num  0 1 0 0 0 1 2 0 1 1 ...
##  $ spin3     : num  0 1 1 0 0 2 2 0 4 1 ...
##  $ spin4     : num  1 3 2 1 0 3 3 0 4 1 ...
##  $ spin5     : num  0 2 3 3 1 2 1 0 4 3 ...
##  $ spin6     : num  0 3 4 0 0 1 1 0 4 3 ...
##  $ spin7     : num  1 1 2 0 0 0 1 0 4 0 ...
##  $ gender_num: num  1 1 0 1 1 1 1 0 0 0 ...
summary(data_clean)
##     gender          hours                gad1             gad2       
##  Female:  712   Min.   :-1.570364   Min.   :0.0000   Min.   :0.0000  
##  Male  :12638   1st Qu.:-0.699512   1st Qu.:0.0000   1st Qu.:0.0000  
##  Other :    0   Median :-0.118944   Median :1.0000   Median :0.0000  
##                 Mean   :-0.002319   Mean   :0.8586   Mean   :0.6713  
##                 3rd Qu.: 0.461624   3rd Qu.:1.0000   3rd Qu.:1.0000  
##                 Max.   :10.040995   Max.   :3.0000   Max.   :3.0000  
##       gad3             gad4             gad5             gad6     
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.0000   Min.   :0.00  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.00  
##  Median :1.0000   Median :0.0000   Median :0.0000   Median :1.00  
##  Mean   :0.9645   Mean   :0.7219   Mean   :0.4861   Mean   :0.91  
##  3rd Qu.:2.0000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.00  
##  Max.   :3.0000   Max.   :3.0000   Max.   :3.0000   Max.   :3.00  
##       gad7            swl1            swl2            swl3      
##  Min.   :0.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:0.000   1st Qu.:2.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :0.000   Median :4.000   Median :5.000   Median :5.000  
##  Mean   :0.587   Mean   :3.721   Mean   :4.603   Mean   :4.349  
##  3rd Qu.:1.000   3rd Qu.:5.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :3.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##       swl4            swl5           spin1            spin2      
##  Min.   :1.000   Min.   :1.000   Min.   :0.0000   Min.   :0.000  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:0.0000   1st Qu.:0.000  
##  Median :4.000   Median :3.000   Median :1.0000   Median :1.000  
##  Mean   :3.763   Mean   :3.359   Mean   :0.8586   Mean   :1.209  
##  3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:1.0000   3rd Qu.:2.000  
##  Max.   :7.000   Max.   :7.000   Max.   :4.0000   Max.   :4.000  
##      spin3           spin4           spin5           spin6      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:0.000   1st Qu.:1.000   1st Qu.:0.000   1st Qu.:0.000  
##  Median :1.000   Median :2.000   Median :1.000   Median :1.000  
##  Mean   :1.094   Mean   :1.688   Mean   :1.247   Mean   :1.345  
##  3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :4.000   Max.   :4.000   Max.   :4.000   Max.   :4.000  
##      spin7         gender_num    
##  Min.   :0.000   Min.   :0.0000  
##  1st Qu.:0.000   1st Qu.:1.0000  
##  Median :1.000   Median :1.0000  
##  Mean   :1.051   Mean   :0.9467  
##  3rd Qu.:2.000   3rd Qu.:1.0000  
##  Max.   :4.000   Max.   :1.0000
# TAHAP EDA (EXPLORATORY DATA ANALYSIS)
describe(data_clean)
##            vars     n mean   sd median trimmed  mad   min   max range  skew
## gender*       1 13350 1.95 0.22   2.00    2.00 0.00  1.00  2.00  1.00 -3.98
## hours         2 13350 0.00 1.00  -0.12   -0.13 0.86 -1.57 10.04 11.61  1.87
## gad1          3 13350 0.86 0.92   1.00    0.72 1.48  0.00  3.00  3.00  0.93
## gad2          4 13350 0.67 0.91   0.00    0.50 0.00  0.00  3.00  3.00  1.24
## gad3          5 13350 0.96 0.98   1.00    0.83 1.48  0.00  3.00  3.00  0.74
## gad4          6 13350 0.72 0.92   0.00    0.56 0.00  0.00  3.00  3.00  1.12
## gad5          7 13350 0.49 0.84   0.00    0.29 0.00  0.00  3.00  3.00  1.72
## gad6          8 13350 0.91 0.93   1.00    0.79 1.48  0.00  3.00  3.00  0.79
## gad7          9 13350 0.59 0.89   0.00    0.41 0.00  0.00  3.00  3.00  1.43
## swl1         10 13350 3.72 1.73   4.00    3.74 2.97  1.00  7.00  6.00  0.05
## swl2         11 13350 4.60 1.69   5.00    4.69 1.48  1.00  7.00  6.00 -0.49
## swl3         12 13350 4.35 1.81   5.00    4.42 1.48  1.00  7.00  6.00 -0.35
## swl4         13 13350 3.76 1.82   4.00    3.75 2.97  1.00  7.00  6.00  0.08
## swl5         14 13350 3.36 1.91   3.00    3.24 2.97  1.00  7.00  6.00  0.41
## spin1        15 13350 0.86 0.90   1.00    0.75 1.48  0.00  4.00  4.00  0.90
## spin2        16 13350 1.21 1.14   1.00    1.09 1.48  0.00  4.00  4.00  0.65
## spin3        17 13350 1.09 1.16   1.00    0.93 1.48  0.00  4.00  4.00  0.90
## spin4        18 13350 1.69 1.22   2.00    1.63 1.48  0.00  4.00  4.00  0.22
## spin5        19 13350 1.25 1.21   1.00    1.11 1.48  0.00  4.00  4.00  0.71
## spin6        20 13350 1.35 1.27   1.00    1.21 1.48  0.00  4.00  4.00  0.61
## spin7        21 13350 1.05 1.21   1.00    0.87 1.48  0.00  4.00  4.00  0.95
## gender_num   22 13350 0.95 0.22   1.00    1.00 0.00  0.00  1.00  1.00 -3.98
##            kurtosis   se
## gender*       13.80 0.00
## hours          6.61 0.01
## gad1           0.01 0.01
## gad2           0.54 0.01
## gad3          -0.51 0.01
## gad4           0.28 0.01
## gad5           2.06 0.01
## gad6          -0.28 0.01
## gad7           1.02 0.01
## swl1          -1.24 0.02
## swl2          -0.80 0.01
## swl3          -1.06 0.02
## swl4          -1.18 0.02
## swl5          -1.07 0.02
## spin1          0.41 0.01
## spin2         -0.50 0.01
## spin3         -0.08 0.01
## spin4         -0.95 0.01
## spin5         -0.51 0.01
## spin6         -0.75 0.01
## spin7         -0.18 0.01
## gender_num    13.80 0.00
# Total Score untuk Visualisasi
# Total GAD
data_clean$gad_total <- rowMeans(
  data_clean[, paste0("gad", 1:7)]
)
# Total SWL
data_clean$swl_total <- rowMeans(
  data_clean[, paste0("swl", 1:5)]
)
# Total SPIN
data_clean$spin_total <- rowMeans(
  data_clean[, paste0("spin", 1:7)]
)

Total score digunakan untuk mempermudah visualisasi distribusi masing-masing konstruk

# VISUALISASI DISTRIBUSI GENDER
gender_plot <- ggplot(
  data_clean,
  aes(x = gender)
) +
  
  geom_bar(
    fill = "skyblue",
    color = "black"
  ) +
  
  labs(
    title = "Distribusi Gender",
    x = "Gender",
    y = "Frekuensi"
  ) +
  
  theme_minimal()

print(gender_plot)

Visualisasi distribusi gender menunjukkan bahwa mayoritas responden dalam penelitian berjenis kelamin laki-laki (Male), sedangkan jumlah responden perempuan (Female) jauh lebih sedikit. Hal ini menunjukkan bahwa data penelitian didominasi oleh responden laki-laki sehingga karakteristik perilaku gaming dalam penelitian lebih banyak merepresentasikan kelompok laki-laki dibandingkan perempuan.

# VISUALISASI DISTRIBUSI HOURS
hours_plot <- ggplot(
  data_clean,
  aes(x = hours)
) +
  
  geom_histogram(
    bins = 30,
    fill = "orange",
    color = "black"
  ) +
  
  labs(
    title = "Distribusi Hours",
    x = "Hours Bermain",
    y = "Frekuensi"
  ) +
  theme_minimal()
print(hours_plot)

Histogram distribusi hours menunjukkan bahwa sebagian besar responden memiliki durasi bermain game pada rentang rendah hingga sedang, yang terlihat dari tingginya frekuensi di sekitar nilai tengah. Distribusi data cenderung right-skewed (miring ke kanan) karena terdapat beberapa responden dengan durasi bermain yang sangat tinggi dibandingkan mayoritas data lainnya. Hal ini menunjukkan adanya sebagian kecil pemain yang bermain game dalam waktu jauh lebih lama dibandingkan responden lainnya.

# VISUALISASI DISTRIBUSI GAD
gad_plot <- ggplot(
  data_clean,
  aes(x = gad_total)
) +
  geom_histogram(
    bins = 30,
    fill = "red",
    color = "black"
  ) +
  labs(
    title = "Distribusi Skor GAD",
    x = "Skor GAD",
    y = "Frekuensi"
  ) +
  theme_minimal()
print(gad_plot)

Histogram skor GAD menunjukkan bahwa sebagian besar responden memiliki tingkat kecemasan umum (Generalized Anxiety Disorder) pada kategori rendah hingga sedang. Distribusi data cenderung miring ke kanan, yang menandakan hanya sebagian kecil responden memiliki skor kecemasan yang tinggi. Dengan demikian, mayoritas responden dalam penelitian ini tidak menunjukkan tingkat kecemasan yang ekstrem.

# VISUALISASI DISTRIBUSI SPIN
spin_plot <- ggplot(
  data_clean,
  aes(x = spin_total)
) +
  geom_histogram(
    bins = 30,
    fill = "purple",
    color = "black"
  ) +
  
  labs(
    title = "Distribusi Skor SPIN",
    x = "Skor SPIN",
    y = "Frekuensi"
  ) +
  
  theme_minimal()

print(spin_plot)

Histogram skor SPIN menunjukkan bahwa sebagian besar responden memiliki tingkat kecemasan sosial pada kategori rendah hingga sedang. Distribusi juga terlihat right-skewed, di mana frekuensi skor tinggi semakin menurun. Hal ini mengindikasikan bahwa hanya sebagian kecil responden yang memiliki tingkat kecemasan sosial yang tinggi.

# BOXPLOT KONSTRUK
boxplot_construct <- data_clean %>%
  
  select(
    gad_total,
    swl_total,
    spin_total
  ) %>%
  
  pivot_longer(
    cols = everything(),
    names_to = "konstruk",
    values_to = "nilai"
  ) %>%
  ggplot(
    aes(x = konstruk, y = nilai, fill = konstruk)
  ) +
  geom_boxplot() +
  
  labs(
    title = "Boxplot Konstruk",
    x = "Konstruk",
    y = "Nilai"
  ) +
  
  theme_minimal()
print(boxplot_construct)

Boxplot konstruk menunjukkan perbedaan sebaran nilai pada masing-masing konstruk penelitian. Konstruk SWL memiliki median paling tinggi dibandingkan GAD dan SPIN, yang menunjukkan bahwa tingkat kepuasan hidup responden relatif lebih tinggi. Sementara itu, konstruk GAD memiliki median paling rendah sehingga tingkat kecemasan umum responden cenderung rendah. Pada boxplot juga terlihat beberapa titik outlier pada konstruk GAD dan SPIN. Namun, outlier tersebut tidak dilakukan penanganan karena data berasal dari skala Likert yang memiliki rentang nilai terbatas dan tetap. Nilai-nilai ekstrem tersebut masih dianggap representatif terhadap kondisi nyata responden. Selain itu, apabila dilakukan penghapusan atau perubahan data, maka dapat mengubah karakteristik asli data penelitian dan mengurangi representasi jawaban responden yang sebenarnya.

# KORELASI ANTAR KONSTRUK
correlation_data <- data_clean %>%
  
  select(
    hours,
    gad_total,
    swl_total,
    spin_total
  )
# Matriks korelasi
cor_matrix <- cor(correlation_data)

print(cor_matrix)
##                  hours   gad_total  swl_total  spin_total
## hours       1.00000000  0.09256554 -0.1321346  0.06947151
## gad_total   0.09256554  1.00000000 -0.4031813  0.42658076
## swl_total  -0.13213459 -0.40318135  1.0000000 -0.27897413
## spin_total  0.06947151  0.42658076 -0.2789741  1.00000000
corrplot(
  cor_matrix,
  method = "color",
  type = "upper",
  addCoef.col = "black",
  tl.col = "black"
)

Hasil korelasi menunjukkan bahwa:

-Variabel hours memiliki korelasi positif sangat lemah terhadap gad_total (0,09) dan spin_total (0,07), sehingga durasi bermain game hanya memiliki hubungan kecil terhadap kecemasan umum maupun kecemasan sosial.

-Variabel hours memiliki korelasi negatif lemah terhadap swl_total (-0,13), yang menunjukkan bahwa semakin tinggi durasi bermain game, maka kepuasan hidup cenderung sedikit menurun.

-Konstruk gad_total memiliki korelasi positif sedang dengan spin_total (0,43), yang berarti semakin tinggi kecemasan umum maka kecemasan sosial juga cenderung meningkat.

-Konstruk gad_total memiliki korelasi negatif sedang dengan swl_total (-0,40), sehingga semakin tinggi kecemasan umum maka kepuasan hidup cenderung menurun.

-Konstruk swl_total dan spin_total memiliki korelasi negatif lemah hingga sedang (-0,28), yang menunjukkan bahwa peningkatan kecemasan sosial cenderung diikuti penurunan kepuasan hidup.

Secara keseluruhan, hasil korelasi menunjukkan adanya hubungan yang sesuai dengan teori antara kecemasan, kepuasan hidup, dan durasi bermain game.

#SEM OUTER MODEL
# DATA FINAL SEM
sem_data <- data_clean %>%
  select(
    # Variabel eksogen
    hours,
    # Moderator
    gender_num,
    # Konstruk GAD
    gad1:gad7,
    # Konstruk SWL
    swl1:swl5,
    # Konstruk SPIN
    spin1:spin7
  )

sem_data$hours_x_gender <- sem_data$hours * data_clean$gender_num
# CEK STRUKTUR DATA SEM
str(sem_data)
## 'data.frame':    13350 obs. of  22 variables:
##  $ hours         : num  -0.482 -0.99 -1.57 -0.119 -0.119 ...
##  $ gender_num    : num  1 1 0 1 1 1 1 0 0 0 ...
##  $ gad1          : int  0 1 0 0 2 0 0 0 2 2 ...
##  $ gad2          : int  0 2 2 0 1 0 0 0 3 1 ...
##  $ gad3          : int  0 2 2 0 2 0 0 0 2 2 ...
##  $ gad4          : int  0 2 0 0 2 0 0 0 2 2 ...
##  $ gad5          : int  1 0 0 0 2 0 0 0 0 2 ...
##  $ gad6          : int  0 1 3 0 3 1 0 0 1 1 ...
##  $ gad7          : int  0 0 1 0 2 0 0 0 2 0 ...
##  $ swl1          : int  3 3 2 2 2 3 3 3 2 3 ...
##  $ swl2          : int  5 5 6 5 2 5 4 6 3 3 ...
##  $ swl3          : int  5 2 5 5 4 3 4 4 3 3 ...
##  $ swl4          : int  5 5 2 3 5 3 3 3 3 2 ...
##  $ swl5          : int  5 1 2 2 1 3 2 7 1 2 ...
##  $ spin1         : num  1 2 1 2 2 1 1 0 1 1 ...
##  $ spin2         : num  0 1 0 0 0 1 2 0 1 1 ...
##  $ spin3         : num  0 1 1 0 0 2 2 0 4 1 ...
##  $ spin4         : num  1 3 2 1 0 3 3 0 4 1 ...
##  $ spin5         : num  0 2 3 3 1 2 1 0 4 3 ...
##  $ spin6         : num  0 3 4 0 0 1 1 0 4 3 ...
##  $ spin7         : num  1 1 2 0 0 0 1 0 4 0 ...
##  $ hours_x_gender: num  -0.482 -0.99 0 -0.119 -0.119 ...
summary(sem_data)
##      hours             gender_num          gad1             gad2       
##  Min.   :-1.570364   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:-0.699512   1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :-0.118944   Median :1.0000   Median :1.0000   Median :0.0000  
##  Mean   :-0.002319   Mean   :0.9467   Mean   :0.8586   Mean   :0.6713  
##  3rd Qu.: 0.461624   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.0000  
##  Max.   :10.040995   Max.   :1.0000   Max.   :3.0000   Max.   :3.0000  
##       gad3             gad4             gad5             gad6     
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.0000   Min.   :0.00  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.00  
##  Median :1.0000   Median :0.0000   Median :0.0000   Median :1.00  
##  Mean   :0.9645   Mean   :0.7219   Mean   :0.4861   Mean   :0.91  
##  3rd Qu.:2.0000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.00  
##  Max.   :3.0000   Max.   :3.0000   Max.   :3.0000   Max.   :3.00  
##       gad7            swl1            swl2            swl3      
##  Min.   :0.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:0.000   1st Qu.:2.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :0.000   Median :4.000   Median :5.000   Median :5.000  
##  Mean   :0.587   Mean   :3.721   Mean   :4.603   Mean   :4.349  
##  3rd Qu.:1.000   3rd Qu.:5.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :3.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##       swl4            swl5           spin1            spin2      
##  Min.   :1.000   Min.   :1.000   Min.   :0.0000   Min.   :0.000  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:0.0000   1st Qu.:0.000  
##  Median :4.000   Median :3.000   Median :1.0000   Median :1.000  
##  Mean   :3.763   Mean   :3.359   Mean   :0.8586   Mean   :1.209  
##  3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:1.0000   3rd Qu.:2.000  
##  Max.   :7.000   Max.   :7.000   Max.   :4.0000   Max.   :4.000  
##      spin3           spin4           spin5           spin6      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:0.000   1st Qu.:1.000   1st Qu.:0.000   1st Qu.:0.000  
##  Median :1.000   Median :2.000   Median :1.000   Median :1.000  
##  Mean   :1.094   Mean   :1.688   Mean   :1.247   Mean   :1.345  
##  3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :4.000   Max.   :4.000   Max.   :4.000   Max.   :4.000  
##      spin7       hours_x_gender     
##  Min.   :0.000   Min.   :-1.570364  
##  1st Qu.:0.000   1st Qu.:-0.626941  
##  Median :1.000   Median :-0.118944  
##  Mean   :1.051   Mean   : 0.007193  
##  3rd Qu.:2.000   3rd Qu.: 0.461624  
##  Max.   :4.000   Max.   : 9.315285

Berdasarkan hasil str(sem_data) dan summary(sem_data), dataset akhir SEM terdiri dari 13.350 observasi dan 22 variabel setelah dilakukan preprocessing, penghapusan outlier, dan encoding data.

Variabel hours telah melalui proses standardisasi sehingga memiliki rata-rata mendekati 0. Hal ini bertujuan untuk menyamakan skala data agar proses estimasi model SEM-PLS menjadi lebih stabil. Variabel gender_num telah berhasil dikonversi ke bentuk numerik dengan kode 1 untuk laki-laki dan 0 untuk perempuan. Nilai rata-rata sebesar 0,9467 menunjukkan bahwa mayoritas responden dalam dataset adalah laki-laki.

Indikator konstruk GAD, SWL, dan SPIN tetap berada pada rentang skala aslinya dan menunjukkan distribusi data yang cukup bervariasi. Nilai median pada sebagian besar indikator berada di tengah rentang skala, sehingga data dinilai cukup representatif dalam menggambarkan kondisi responden.

Variabel hours_x_gender merupakan variabel interaksi moderasi antara durasi bermain game dan gender. Variabel ini digunakan untuk menguji apakah gender memoderasi pengaruh durasi bermain game terhadap konstruk SPIN. Secara keseluruhan, data akhir telah siap digunakan untuk proses estimasi modelkarena seluruh variabel telah sesuai dengan kebutuhan analisis.

# MEMBUAT OUTER MODEL
measurement_model <- constructs(
  composite(
    "HOURS", 
    single_item("hours")
  ),
  composite(
    "GAD",
    multi_items("gad", 1:7),
    weights = mode_A
  ),
  composite(
    "SWL",
    multi_items("swl", 1:5),
    weights = mode_A
  ),
  composite(
    "SPIN",
    multi_items("spin", 2:7),
    weights = mode_A),
  composite(
      "GENDER", 
      single_item("gender_num")),
  composite(
    "MODERASI",
    single_item("hours_x_gender"))
  )

# MENAMPILKAN OUTER MODEL
measurement_model
## $composite
## [1] "HOURS" "hours" "A"    
## attr(,"class")
## [1] "character" "construct" "composite"
## 
## $composite
##  [1] "GAD"  "gad1" "A"    "GAD"  "gad2" "A"    "GAD"  "gad3" "A"    "GAD" 
## [11] "gad4" "A"    "GAD"  "gad5" "A"    "GAD"  "gad6" "A"    "GAD"  "gad7"
## [21] "A"   
## attr(,"class")
## [1] "character" "construct" "composite"
## 
## $composite
##  [1] "SWL"  "swl1" "A"    "SWL"  "swl2" "A"    "SWL"  "swl3" "A"    "SWL" 
## [11] "swl4" "A"    "SWL"  "swl5" "A"   
## attr(,"class")
## [1] "character" "construct" "composite"
## 
## $composite
##  [1] "SPIN"  "spin2" "A"     "SPIN"  "spin3" "A"     "SPIN"  "spin4" "A"    
## [10] "SPIN"  "spin5" "A"     "SPIN"  "spin6" "A"     "SPIN"  "spin7" "A"    
## attr(,"class")
## [1] "character" "construct" "composite"
## 
## $composite
## [1] "GENDER"     "gender_num" "A"         
## attr(,"class")
## [1] "character" "construct" "composite"
## 
## $composite
## [1] "MODERASI"       "hours_x_gender" "A"             
## attr(,"class")
## [1] "character" "construct" "composite"
## 
## attr(,"class")
## [1] "list"              "measurement_model" "seminr_model"

Berdasarkan hasil pembentukan outer model, penelitian ini memiliki enam konstruk, yaitu HOURS, GAD, SWL, SPIN, GENDER, dan MODERASI. Konstruk GAD, SWL, dan SPIN dibentuk menggunakan beberapa indikator (multi-items) dengan pendekatan Mode A yang menunjukkan bahwa indikator bersifat reflektif. Konstruk GAD diukur menggunakan indikator gad1 hingga gad7, konstruk SWL menggunakan indikator swl1 hingga swl5, sedangkan konstruk SPIN menggunakan indikator spin2 hingga spin7. Sementara itu, konstruk HOURS, GENDER, dan MODERASI menggunakan indikator tunggal (single item), yaitu masing-masing diukur oleh variabel hours, gender_num, dan hours_x_gender. Variabel MODERASI merupakan variabel interaksi antara durasi bermain game (hours) dan gender (gender_num) yang digunakan untuk menguji efek moderasi gender terhadap hubungan dalam model penelitian. Hasil menunjukkan bahwa seluruh konstruk berhasil didefinisikan dengan baik pada model pengukuran (measurement model) sehingga model siap digunakan pada tahap estimasi SEM-PLS selanjutnya.

# Membuat Structural Model
structural_model <- relationships(
  # A. Jalur Mediasi Utama
  paths(from = "HOURS", to = c("SPIN", "GAD", "SWL")),
  paths(from = "SPIN",  to = c("GAD", "SWL")),
  
  # B. Jalur Kontrol/Direct Efek dari Moderator
  paths(from = "GENDER", to = "SPIN"),
  
  # C. Jalur Moderasi (Efek Interaksi)
  paths(from = "MODERASI", to = "SPIN")
)

Kode di atas membuat 4 jalur model struktur utama dengan fungsi relationships() dan paths() sebagai arsitek yang menggambar jalur panah pengaruh antar variabel dalam program. Pembagian jalur tersebut dibagi menjadi tiga jenis jalur yang berbeda, yakni jalur mediasi utama, jalur direct effect, dan jalur interaksi atau moderasi. Masing-masing jalur menjelaskan alur alur interaksi variabel yang berbeda-beda. Jalur mediasi utama yang membuat panah hubungan durasi bermain game HOURS dengan kecemasan sosial (SPIN), kecemasan umum (GAD), dan kepuasan hidup (SWL). Selain itu jalur ini juga membuat panah hubungan kecemasan sosial (SPIN) dengan kecemasan umum (GAD), dan kepuasan hidup (SWL), jalur ini yang menjadi mediasi antara HOURS dan GAD & SWL lewat perantara SPIN. Jalur direct effect digunakan untuk menghitung pengaruh langsung GENDER pada variabel targetnya yakni SPIN, tujuannya adalah untuk melihat apakah jenis kelamin benar-benar mempengaruhi tingkatan kecemasan sosial. Jalur moderasi atau interaksi ini bertujuan untuk mengetahui bagaimana variabel interaksi (HOURS & GENDER) berpengaruh dalam kecemasan sosial (SPIN)

# ESTIMASI MODEL PLS
pls_model <- estimate_pls(
  data = sem_data,
  measurement_model = measurement_model,
  structural_model = structural_model
)
## Generating the seminr model
## All 13350 observations are valid.

Model SEM-PLS berhasil diestimasi menggunakan data penelitian, measurement model, dan structural model yang telah dibentuk sebelumnya. Hasil output menunjukkan bahwa seluruh 13.350 observasi dinyatakan valid dan dapat digunakan dalam proses analisis tanpa adanya data yang gagal diproses oleh sistem. Dengan demikian, model siap digunakan untuk tahap evaluasi outer model dan inner model.

# EVALUASI OUTER MODEL
summary_pls <- summary(pls_model)
summary_pls
## 
## Results from  package seminr (2.4.2)
## 
## Path Coefficients:
##            SPIN   GAD    SWL
## R^2       0.026 0.186  0.094
## AdjR^2    0.026 0.185  0.094
## HOURS     0.061 0.057 -0.110
## SPIN          . 0.423 -0.278
## GENDER   -0.142     .      .
## MODERASI  0.021     .      .
## 
## Reliability:
##          alpha  rhoA  rhoC   AVE
## HOURS    1.000 1.000 1.000 1.000
## SPIN     0.809 0.825 0.863 0.515
## GENDER   1.000 1.000 1.000 1.000
## MODERASI 1.000 1.000 1.000 1.000
## GAD      0.855 0.873 0.891 0.544
## SWL      0.865 0.873 0.903 0.652
## 
## Alpha, rhoA, and rhoC should exceed 0.7 while AVE should exceed 0.5
# Cek Outer Loading
summary_pls$loadings
##                 HOURS   SPIN GENDER MODERASI    GAD    SWL
## hours           1.000  0.000  0.000    0.000  0.000 -0.000
## gad1            0.000  0.000 -0.000    0.000  0.810 -0.000
## gad2            0.000  0.000 -0.000    0.000  0.846 -0.000
## gad3            0.000  0.000 -0.000    0.000  0.816 -0.000
## gad4            0.000  0.000 -0.000    0.000  0.763 -0.000
## gad5            0.000  0.000 -0.000    0.000  0.538 -0.000
## gad6            0.000  0.000 -0.000    0.000  0.591 -0.000
## gad7            0.000  0.000 -0.000    0.000  0.742 -0.000
## swl1           -0.000 -0.000  0.000   -0.000 -0.000  0.855
## swl2           -0.000 -0.000  0.000   -0.000 -0.000  0.765
## swl3           -0.000 -0.000  0.000   -0.000 -0.000  0.875
## swl4           -0.000 -0.000 -0.000   -0.000 -0.000  0.814
## swl5           -0.000 -0.000  0.000   -0.000 -0.000  0.718
## spin2           0.000  0.618 -0.000    0.000  0.000 -0.000
## spin3           0.000  0.768 -0.000    0.000  0.000 -0.000
## spin4           0.000  0.720 -0.000    0.000  0.000 -0.000
## spin5           0.000  0.706 -0.000    0.000  0.000 -0.000
## spin6           0.000  0.838 -0.000    0.000  0.000 -0.000
## spin7           0.000  0.635 -0.000    0.000  0.000 -0.000
## gender_num      0.000 -0.000  1.000    0.000 -0.000  0.000
## hours_x_gender  0.000  0.000  0.000    1.000  0.000 -0.000

Hasil outer loading menunjukkan bahwa sebagian besar indikator memiliki nilai loading di atas 0,70 sehingga mampu merepresentasikan konstruk laten dengan baik. Konstruk GAD memiliki loading berkisar antara 0,538–0,846, konstruk SWL berkisar antara 0,718–0,875, dan konstruk SPIN berkisar antara 0,618–0,838. Nilai loading tertinggi terdapat pada indikator swl3 sebesar 0,875 yang menunjukkan indikator tersebut paling kuat merepresentasikan konstruk SWL. Meskipun terdapat beberapa indikator dengan nilai loading di bawah 0,70 seperti gad5, gad6, spin2, dan spin7, indikator tersebut masih dapat dipertahankan karena nilai loading masih mendekati batas minimum yang diperbolehkan dan konstruk secara keseluruhan telah memenuhi syarat reliabilitas dan validitas.

# Cek Reliabilitas & AVE 
summary_pls$reliability
##          alpha  rhoA  rhoC   AVE
## HOURS    1.000 1.000 1.000 1.000
## SPIN     0.809 0.825 0.863 0.515
## GENDER   1.000 1.000 1.000 1.000
## MODERASI 1.000 1.000 1.000 1.000
## GAD      0.855 0.873 0.891 0.544
## SWL      0.865 0.873 0.903 0.652
## 
## Alpha, rhoA, and rhoC should exceed 0.7 while AVE should exceed 0.5

Hasil pengujian reliabilitas menunjukkan bahwa seluruh konstruk memiliki nilai Cronbach’s Alpha, rhoA, dan Composite Reliability (rhoC) di atas 0,70. Hal ini menandakan bahwa seluruh konstruk dalam model memiliki konsistensi internal yang baik dan reliabel untuk digunakan dalam penelitian. Selain itu, nilai Average Variance Extracted (AVE) pada seluruh konstruk juga berada di atas 0,50, yang menunjukkan bahwa konstruk mampu menjelaskan lebih dari 50% varians indikatornya. Dengan demikian, model telah memenuhi syarat validitas konvergen.

# Detail Reliabilitas
summary_pls$reliability[, "alpha"]
##     HOURS      SPIN    GENDER  MODERASI       GAD       SWL 
## 1.0000000 0.8094345 1.0000000 1.0000000 0.8554829 0.8649336
summary_pls$reliability[, "rhoC"]
##     HOURS      SPIN    GENDER  MODERASI       GAD       SWL 
## 1.0000000 0.8631665 1.0000000 1.0000000 0.8909894 0.9030760
summary_pls$reliability[, "AVE"]
##     HOURS      SPIN    GENDER  MODERASI       GAD       SWL 
## 1.0000000 0.5152549 1.0000000 1.0000000 0.5442462 0.6519393

Nilai Cronbach’s Alpha menunjukkan bahwa konstruk SPIN memiliki reliabilitas sebesar 0,809, GAD sebesar 0,855, dan SWL sebesar 0,865. Seluruh nilai tersebut telah memenuhi batas minimum 0,70 sehingga konstruk dinyatakan reliabel. Nilai Composite Reliability (rhoC) pada konstruk SPIN sebesar 0,863, GAD sebesar 0,891, dan SWL sebesar 0,903 juga menunjukkan tingkat reliabilitas yang sangat baik. Sementara itu, nilai AVE masing-masing konstruk berada di atas 0,50, yaitu SPIN sebesar 0,515, GAD sebesar 0,544, dan SWL sebesar 0,652. Hal ini menunjukkan bahwa indikator mampu menjelaskan konstruk laten secara memadai.

# Validitas Diskriminan (Fornell-Larcker & HTMT)
summary_pls$validity$fl_criteria
##           HOURS   SPIN GENDER MODERASI    GAD   SWL
## HOURS     1.000      .      .        .      .     .
## SPIN      0.075  0.718      .        .      .     .
## GENDER    0.042 -0.139  1.000        .      .     .
## MODERASI  0.969  0.080  0.002    1.000      .     .
## GAD       0.089  0.427 -0.124    0.093  0.738     .
## SWL      -0.131 -0.286  0.029   -0.132 -0.409 0.807
## 
## FL Criteria table reports square root of AVE on the diagonal and construct correlations on the lower triangle.
summary_pls$validity$htmt
##          HOURS  SPIN GENDER MODERASI   GAD SWL
## HOURS        .     .      .        .     .   .
## SPIN     0.082     .      .        .     .   .
## GENDER   0.042 0.153      .        .     .   .
## MODERASI 0.969 0.087  0.002        .     .   .
## GAD      0.100 0.503  0.130    0.105     .   .
## SWL      0.142 0.334  0.031    0.143 0.467   .

Berdasarkan kriteria Fornell-Larcker, nilai akar kuadrat AVE pada diagonal utama lebih besar dibandingkan korelasi antar konstruk lainnya. Hal ini menunjukkan bahwa masing-masing konstruk memiliki kemampuan diskriminasi yang baik dan dapat dibedakan satu sama lain. Pada pengujian HTMT, seluruh nilai berada di bawah batas umum 0,90 sehingga validitas diskriminan dinyatakan terpenuhi. Namun, hubungan antara konstruk HOURS dan MODERASI memiliki nilai HTMT yang sangat tinggi sebesar 0,969. Hal ini terjadi karena konstruk MODERASI merupakan variabel interaksi yang dibentuk langsung dari variabel HOURS dan GENDER, sehingga korelasinya secara alami menjadi sangat tinggi. Secara keseluruhan, model masih dapat diterima dan valid untuk digunakan pada analisis.

INNER MODEL

# EVALUASI INNER MODEL
# Nilai Paths Coefficients
summary_pls$paths
##            SPIN   GAD    SWL
## R^2       0.026 0.186  0.094
## AdjR^2    0.026 0.185  0.094
## HOURS     0.061 0.057 -0.110
## SPIN          . 0.423 -0.278
## GENDER   -0.142     .      .
## MODERASI  0.021     .      .

Kode summary_pls$paths berkerja menunjukan hasil pls_model pada jalur-jalur pengaruh yang telah dibuat pada structural_model. Hasilnya pada variabel kecemasan sosial (SPIN), kecemasan umum (GAD), dan kepuasan hidup (SWL) masing-masing memiliki persentase variansi minim (< 20%) yang dapat dijelaskan oleh variabel HOURS, GENDER, dan moderasi. Sedangkan koefisien jalur yang menjelaskan kekuatan pengaruh ke variabel target (dependen) memiliki hasil untuk variabel kecemasan sosial SPIN variabel jenis kelamin (GENDER) memiliki nilai -0.142 yang berarti tar belakang gender responden memberikan kontribusi langsung yang nyata (meskipun skalanya kecil) terhadap variasi tinggi-rendahnya kecemasan sosial, selain itu dengan variabel durasi bermain HOURS menghasilkan nilai 0.061 yang berarti durasi bermain yang dihabiskan seseorang untuk bermain game tidak menjadi faktor utama atau penentu besar-kecilnya kecemasan sosial yang mereka alami di dunia nyata, lalu dengan variabel MODERASI nilai yang dihasilkan sangat minim dengan 0.021 yang mengartikan bahwa efek moderasinya hampir tidak ada. Secara umum, hal ini menunjukkan bahwa Gender tidak bertindak sebagai variabel moderator. Gender tidak memiliki kekuatan untuk memperkuat maupun memperlemah pengaruh durasi bermain game terhadap kecemasan sosial. Pada pengaruh variabel-variabel pada kecemasan umum (GAD) menghasilkan bukti bahwa kecemasan sosial (SPIN) memiliki hubungan yang kuat dengan nilai 0.423 yang berarti bahwa kecemasan sosial diikuti dengan kecemasan umum. Namun, hubungan GAD dengan variabel durasi bermain memiliki nilai yang relatif kecil yakni pada 0.057 yang berarti durasi bermain game tidak mempengaruhi kecemasan umum yang dirasakan oleh objek.

Variabel target terakhir adalah variabel kepuasan hidup (SWL), variabel kecemasan sosial (SPIN) memiliki hubungan negatif yang tinggi dengan variabel SWL ini, dimana nilai pengaruhnya sebesar -0.278 yang berarti semakin tinggi tingkat kecemasan sosial yang dirasakan oleh seorang gamer, maka tingkat kepuasan hidup mereka akan mengalami penurunan secara signifikan. Selain itu, hubungan kepuasan hidup dengan jam bermain (HOURS) menunjukan hubungan negatif yang moderat dengan nilai -0.110 yang berarti semakin tinggi durasi seseorang bermain game maka kepuasan hidupnya akan menurun, jika diimplementasikan pada dunia nyata hal ini dinilai logis karena waktu yang terlalu banyak di dalam game berpotensi mengurangi waktu produktif atau waktu interaksi sosial nyata lainnya yang membangun kepuasan hidup.

# Nilai Effect Size
# 1. HOURS ke SPIN
f2_hours <- fSquared(pls_model, iv = "HOURS", dv = "SPIN")
cat("Effect Size (f^2) HOURS ke SPIN:", f2_hours, "\n")
## Effect Size (f^2) HOURS ke SPIN: 0.0002204753
# 2. GENDER ke SPIN
f2_gender <- fSquared(pls_model, iv = "GENDER", dv = "SPIN")
cat("Effect Size (f^2) GENDER ke SPIN:", f2_gender, "\n")
## Effect Size (f^2) GENDER ke SPIN: 0.02013912
# 3. MODERASI ke SPIN
f2_moderasi <- fSquared(pls_model, iv = "MODERASI", dv = "SPIN")
cat("Effect Size (f^2) MODERASI ke SPIN:", f2_moderasi, "\n")
## Effect Size (f^2) MODERASI ke SPIN: 2.672199e-05

Bagian ini dilakukan untuk mengetahui seberapa besar dampak praktis yang diberikan oleh setiap variabel independen (eksogen) terhadap varians variabel dependen (endogen) di dalam model struktural. Hasil pada masing-masing variabel di atas yakni pada variabel HOURS dan SPIN atau kecemasan sosial menunjukan nilai yang kecil 0.0002204753 yang berarti durasi bermain tidak memiliki pengaruh pada kecemasan sosial (menambahkan variabel HOURS pada model di masa depan tidak akan mempengaruhi nilai SPIN). Selanjutnya adalah ukuran pengaruh variabel GENDER pada SPIN yang menghasilkan nilai sebesar 0.02013912 yang berarti jenis kelamin memiliki pengaruh yang minim (kecil) pada kecemasan sosial yang dirasakan. Variabel yang terakhir adalah variabel MODERASI yang menunjukan nilai sangat kecil, dimana variabel tersebut tidak memiliki efek pengaruh apapun pada kecemasan sosial.

Secara teori efek interaksi antara durasi bermain game dan jenis kelamin sama sekali tidak memiliki daya dukung atau kekuatan prediktif terhadap kecemasan sosial. Hal ini menegaskan bahwa peran jenis kelamin sebagai variabel moderator ditolak, jenis kelamin tidak memperkuat ataupun memperlemah bagaimana durasi bermain game memengaruhi tingkat kecemasan sosial responden.

# Nilai VAF (Variance Accounted For)
paths <- summary(pls_model)$paths
# 1. GAD
target_gad <- "GAD"

gad_direct_effect   <- paths["HOURS", target_gad]
gad_indirect_effect <- paths["HOURS", "SPIN"] * paths["SPIN", target_gad]
gad_total_effect    <- gad_direct_effect + gad_indirect_effect

gad_vaf_skor <- gad_indirect_effect / gad_total_effect

Nilai VAF atau Variance Accounted For adalah nilai yang menunjukan bagaimana SPIN mampu bertindak sebagai mediator yang menghubungkan HOURS pada variabel dependen yang dianalisis. Hasilnya pada variabel kecemasan umum atau GAD nilai VAF yang dihasilkan total 0.08278 yang jika dibagi dengan indirect effect menghasilkan nilai sebesar 31.7% yang berarti variabel SPIN memiliki peran sebagai Partial Mediation (Mediasi Sebagian). Hal ini menandakan durasi bermain game memicu kecemasan sosial yang membantu kecemasan umum, namun efek yang lebih besar akan terasa jika variabel HOURS langsung berhubungan dengan variabel GAD dimana hal ini menunjukan bahwa durasi bermain game yang berlebihan juga mampu memicu kecemasan umum secara langsung tanpa harus membuat individu mengalami kecemasan sosial terlebih dahulu, yang kemungkinan diakibatkan oleh faktor-faktor lain. Lalu untuk variabel SWL atau kepuasan hidup memiliki nilai VAF total sebesar -0.12734 (< 20%) yang berarti variabel SPIN tidak memiliki efek mediasi pada kepuasan hidup dengan durasi bermain game dan jenis kelamin. Meskipun durasi bermain game yang berlebihan terbukti menurunkan kepuasan hidup seseorang secara langsung (sebesar -0.11043), alur penurunan tersebut tidak ditentukan atau dilewati oleh kondisi kecemasan sosial mereka dan berkemungkinan dihasilkan dari efek secara langsung.

# -- Hasil
cat("1. Direct Effect (GAD):", gad_direct_effect, "\n")
## 1. Direct Effect (GAD): 0.05705654
cat("2. Indirect Effect (GAD):", gad_indirect_effect, "\n")
## 2. Indirect Effect (GAD): 0.02572127
cat("3. Total Effect (GAD):", gad_total_effect, "\n")
## 3. Total Effect (GAD): 0.08277781
if (gad_vaf_skor > 0.80) {
  cat("Kesimpulan GAD: FULL MEDIATION (Mediasi Sempurna)\n")
} else if (gad_vaf_skor >= 0.20 && gad_vaf_skor <= 0.80) {
  cat("Kesimpulan GAD: PARTIAL MEDIATION (Mediasi Sebagian)\n")
} else {
  cat("Kesimpulan GAD: NO MEDIATION (Tidak Ada Efek Mediasi)\n")
}
## Kesimpulan GAD: PARTIAL MEDIATION (Mediasi Sebagian)
# 2. SWL
target_swl <- "SWL"

swl_direct_effect   <- paths["HOURS", target_swl]
swl_indirect_effect <- paths["HOURS", "SPIN"] * paths["SPIN", target_swl]
swl_total_effect    <- swl_direct_effect + swl_indirect_effect

swl_vaf_skor <- swl_indirect_effect / swl_total_effect
# -- Hasil
cat("1. Direct Effect (SWL):", swl_direct_effect, "\n")
## 1. Direct Effect (SWL): -0.1104278
cat("2. Indirect Effect (SWL):", swl_indirect_effect, "\n")
## 2. Indirect Effect (SWL): -0.01690961
cat("3. Total Effect (SWL):", swl_total_effect, "\n")
## 3. Total Effect (SWL): -0.1273374
if (swl_vaf_skor > 0.80) {
  cat("Kesimpulan SWL: FULL MEDIATION (Mediasi Sempurna)\n")
} else if (swl_vaf_skor >= 0.20 && swl_vaf_skor <= 0.80) {
  cat("Kesimpulan SWL: PARTIAL MEDIATION (Mediasi Sebagian)\n")
} else {
  cat("Kesimpulan SWL: NO MEDIATION (Tidak Ada Efek Mediasi)\n")
}
## Kesimpulan SWL: NO MEDIATION (Tidak Ada Efek Mediasi)
# Bootstrapping 
boot_model <- bootstrap_model(seminr_model = pls_model, nboot = 500, cores =1)
## Bootstrapping model using seminr...
## SEMinR Model successfully bootstrapped
summary_boot <- summary(boot_model)
summary_boot$bootstrapped_paths
##                    Original Est. Bootstrap Mean Bootstrap SD T Stat. 2.5% CI
## HOURS  ->  SPIN            0.061          0.059        0.052   1.167  -0.044
## HOURS  ->  GAD             0.057          0.057        0.009   6.266   0.039
## HOURS  ->  SWL            -0.110         -0.111        0.009 -11.813  -0.130
## SPIN  ->  GAD              0.423          0.423        0.008  49.988   0.406
## SPIN  ->  SWL             -0.278         -0.278        0.008 -33.161  -0.295
## GENDER  ->  SPIN          -0.142         -0.142        0.011 -13.228  -0.162
## MODERASI  ->  SPIN         0.021          0.022        0.051   0.407  -0.077
##                    97.5% CI Bootstrap P Val
## HOURS  ->  SPIN       0.154           0.256
## HOURS  ->  GAD        0.074           0.000
## HOURS  ->  SWL       -0.093           0.000
## SPIN  ->  GAD         0.438           0.000
## SPIN  ->  SWL        -0.261           0.000
## GENDER  ->  SPIN     -0.121           0.000
## MODERASI  ->  SPIN    0.121           0.672

Hasil Bootstrapping

HOURS -> SPIN, memiliki nilai p-value sebesar 0.232, menunjukkan bahwa durasi bermain game tidak berpengaruh secara signifikan terhadap problematic gaming (kecanduan bermain game) HOURS -> GAD, memiliki nilai p-value sebesar 0.000, menunjukkan bahwa semakin lama bermain game maka dapat meningkatkan tingkat kecemasan. HOURS -> SWL, emmiliki nilai p-value sebesar 0.000, yang menunjukkan bahwa semakin lama durasi dalam bermain game dapat menyebabkan kepuasan hidup yang menurun. SPIN -> GAD, memiliki nilai p-value sebesar 0.000, yang menunjukkan bahwa semakin tinggi problematic gaming maka semakin meningkat tingkat kecemasannya. SPIN -> SWL, memiliki nilai p-value sebesar 0.000, yang menunjukkan bahwa problematic gaming dapat menurunkan kepuasan hidup secara signifikan. GENDER -> SPIN, memiliki nilai p-value sebesar 0.000 yang menunjukkan bahwa variabel gender memiliki pengaruh snagat signifikan terhadap problematic gaming. Hasil ini menunjukkan bahwa responden laki-laki memiliki tingkat spin yang lebih rendah dibandingkan dengan responden perempuan.

Analisis Moderasi

Variabel moderasi tidak memiliki pengaruh signifikan terhadap problematic gaming. Nilai p-value Moderasi -> SPIN menunjukkan angka sebesar 0.732 (tidak signifikan), maka tidak ditemukan bukti bahwa variabel moderasi mampu memperkuat atau memperlemah hubungan antara durasi bermain game dan problematic gaming

Interpretasi Hasil Akhir

Hasil dari Bootstrapping menunjukkan bahwa durasi bermain game tidak memiliki pengaruh yang signifikan terhadap problematic gaming (SPIN), namun memiliki pengaruh yang signifikan terhadap peningkatan kecemasan (GAD) dan penurunan kepuasan hidup (SWL). Selain itu, problematic gaming memiliki pengaruh positif yang kuat terhadap kecemasan dan pengaruh negatif terhadap kepuasan hidup. Variabel Gender menunjukkan pengaruh yang signifikan terhadap provlematic gaming, sementara itu variabel moderasi tidak terbukti signifikan dalam memengaruhi hubungan antara durasi bermain game dan problematic gaming.

Hasil Akhir

Hasil analisis bootstrapping pada model SEM-PLS menunjukkan bahwa struktur hubungan antar variabel dalam penelitian ini tidak seluruhnya signifikan. Secara umum, durasi bermain game (HOURS) tidak memiliki pengaruh signifikan terhadap problematic gaming (SPIN), hal ini menunjukkan bahwa lamanya waktu bermain tidak secara langsung meningkatkan tingkat kecanduan game pada responden. Namun, durasi bermain game berpengaruh secara signifikan terhadap kondisi psikologis khususnya pada peningkatan tingkat kecemasan (GAD) dan penurunan kepuasan hidup (SWL) Variabel problematic gaming (SPIN) memiliki pengaruh yang kuat dan signifikan terhadap variabel psikologis lainnya. SPIN berpengaruh positif terhadap tingkat kecemasan (GAD). Semakin tinggi tingkat problematic gaming maka semakin tinggi pula tingkat kecemasan Individu. Selain itu, SPIN juga berpengaruh negatif terhadap kepuasan hidup (SWL), menunjukkan bahwa problematic gaming dapat menurunkan tingkat kepuasan hidup secara signifikan. Variabel gender juga ditemukan memiliki pengaruh signifikan terhadap problematic gaming, dimana terdapat perbedaan tingkat problematic gaming berdasarkan gender dimana responden laki-laki memiliki tingkat SPIN yang lebih rendah dibandingkan dengan responden perempuan. Namun, variabel moderasi tidak terbukti secara signfiikan memengaruhi hubungan antara durasi bermain game dan problematic gaming. Hal ini menunjukkan bahwa efek durasi bermain game terhadap problematic gaming tidak dipengaruhi oleh variabel moderasi yang diuji dalam penelitian. Secara keseluruhan, hasil penelitian menunjukkan bahwa kondisi psikologis individu lebih dipengaruhi oleh tingkat problematic gaming dibandingkan oleh durasi bermain game itu sendiri.