Install dan load package yang diperlukan

library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.4.3
library(DataExplorer)
## Warning: package 'DataExplorer' was built under R version 4.4.3
library(lavaan)
## Warning: package 'lavaan' was built under R version 4.4.3
## This is lavaan 0.6-19
## lavaan is FREE software! Please report any bugs.
library(semPlot)
## Warning: package 'semPlot' was built under R version 4.4.3
library(psych)
## Warning: package 'psych' was built under R version 4.4.3
## 
## Attaching package: 'psych'
## The following object is masked from 'package:lavaan':
## 
##     cor2cov
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha

Load Data

data <- read_excel("C:/Users/eliza/Downloads/2. Response(1).xlsx")

head(data)
## # A tibble: 6 × 23
##    TSC1  TSC2  TSC3  TSC4  TSC5   TE1   TE2   TE3   TE4   TE5   EE1   EE2   EE3
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     4     4     4     4     4     4     4     4     4     4     4     4     4
## 2     4     4     4     4     4     4     4     4     4     4     4     4     4
## 3     4     4     5     4     5     5     4     4     5     4     4     5     5
## 4     4     4     5     4     5     5     4     4     5     4     4     5     5
## 5     4     5     3     4     4     4     4     4     4     4     4     4     4
## 6     4     5     3     4     4     4     4     4     4     4     4     4     4
## # ℹ 10 more variables: EE4 <dbl>, EE5 <dbl>, DE1 <dbl>, DE2 <dbl>, DE3 <dbl>,
## #   RPA1 <dbl>, RPA2 <dbl>, RPA3 <dbl>, RPA4 <dbl>, RPA5 <dbl>

Cek Missing Value

# Cek jumlah missing value per kolom
missing_counts <- colSums(is.na(data))

# Tampilkan hanya kolom yang punya missing value
missing_counts[missing_counts > 0]
## named numeric(0)

EDA (Eksplorasi Data Awal)

#Ringkasan statistik
summary(data)
##       TSC1            TSC2            TSC3            TSC4      
##  Min.   :1.000   Min.   :2.000   Min.   :2.000   Min.   :2.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :4.000   Median :4.000   Median :4.000   Median :4.000  
##  Mean   :3.653   Mean   :3.809   Mean   :3.732   Mean   :3.709  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##       TSC5            TE1             TE2             TE3       
##  Min.   :2.000   Min.   :1.000   Min.   :2.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:4.000   1st Qu.:4.000   1st Qu.:4.000  
##  Median :4.000   Median :4.000   Median :4.000   Median :4.000  
##  Mean   :3.822   Mean   :4.061   Mean   :4.043   Mean   :4.121  
##  3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##       TE4             TE5             EE1             EE2       
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :4.000   Median :4.000   Median :4.000   Median :4.000  
##  Mean   :4.105   Mean   :3.902   Mean   :3.812   Mean   :3.727  
##  3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##       EE3             EE4             EE5             DE1       
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:4.000  
##  Median :4.000   Median :4.000   Median :4.000   Median :4.000  
##  Mean   :3.878   Mean   :3.687   Mean   :3.987   Mean   :3.925  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##       DE2             DE3             RPA1            RPA2      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:4.000  
##  Median :4.000   Median :4.000   Median :4.000   Median :4.000  
##  Mean   :3.596   Mean   :3.817   Mean   :3.933   Mean   :3.941  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##       RPA3            RPA4            RPA5      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :4.000   Median :4.000   Median :4.000  
##  Mean   :3.884   Mean   :3.869   Mean   :3.842  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000
#Struktur data
str(data)
## tibble [876 × 23] (S3: tbl_df/tbl/data.frame)
##  $ TSC1: num [1:876] 4 4 4 4 4 4 1 1 2 2 ...
##  $ TSC2: num [1:876] 4 4 4 4 5 5 4 4 2 2 ...
##  $ TSC3: num [1:876] 4 4 5 5 3 3 4 4 2 2 ...
##  $ TSC4: num [1:876] 4 4 4 4 4 4 4 4 2 2 ...
##  $ TSC5: num [1:876] 4 4 5 5 4 4 4 4 2 2 ...
##  $ TE1 : num [1:876] 4 4 5 5 4 4 3 3 1 1 ...
##  $ TE2 : num [1:876] 4 4 4 4 4 4 3 3 2 2 ...
##  $ TE3 : num [1:876] 4 4 4 4 4 4 3 3 1 1 ...
##  $ TE4 : num [1:876] 4 4 5 5 4 4 3 3 1 1 ...
##  $ TE5 : num [1:876] 4 4 4 4 4 4 3 3 1 1 ...
##  $ EE1 : num [1:876] 4 4 4 4 4 4 4 4 1 1 ...
##  $ EE2 : num [1:876] 4 4 5 5 4 4 4 4 1 1 ...
##  $ EE3 : num [1:876] 4 4 5 5 4 4 4 4 1 1 ...
##  $ EE4 : num [1:876] 4 4 4 4 4 4 4 4 1 1 ...
##  $ EE5 : num [1:876] 4 4 5 5 4 4 3 3 1 1 ...
##  $ DE1 : num [1:876] 4 4 5 5 4 4 1 1 3 3 ...
##  $ DE2 : num [1:876] 4 4 5 5 4 4 1 1 2 2 ...
##  $ DE3 : num [1:876] 4 4 5 5 4 4 4 4 2 2 ...
##  $ RPA1: num [1:876] 4 4 5 5 4 4 3 3 2 2 ...
##  $ RPA2: num [1:876] 4 4 4 4 4 4 3 3 1 2 ...
##  $ RPA3: num [1:876] 4 4 5 5 4 4 3 4 2 1 ...
##  $ RPA4: num [1:876] 4 4 4 4 4 4 4 3 2 2 ...
##  $ RPA5: num [1:876] 4 4 5 5 4 4 4 4 1 1 ...
# Distribusi untuk semua variabel numerik
plot_histogram(data)

# Korelasi antar variabel numerik
plot_correlation(data, type = "continuous")

# Distribusi perkolom
numeric_data <- data %>% select(where(is.numeric))

for (col in names(numeric_data)) {
  print(
    ggplot(data, aes_string(y = col)) +
      geom_boxplot(fill = "skyblue") +
      labs(title = paste("Boxplot of", col), y = col)
  )
}
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# Boxplot per kolom
boxplot(numeric_data,
        main = "Boxplot Semua Variabel Numerik (Base R)",
        col = "skyblue",
        las = 2,      # Rotasi label sumbu x
        outline = TRUE)

Handling Outliers

# Mengambil data numerik dari data asli
numeric_data <- data %>% dplyr::select(where(is.numeric))

# Simpan data asli untuk perbandingan (jika perlu)
numeric_data_raw <- numeric_data

# Fungsi Z-score clipping untuk outlier
zscore_clip <- function(x, z_thresh = 3) {
  z <- scale(x)
  x[z < -z_thresh] <- mean(x[z >= -z_thresh & z <= z_thresh], na.rm = TRUE)
  x[z >  z_thresh] <- mean(x[z >= -z_thresh & z <= z_thresh], na.rm = TRUE)
  return(x)
}

# Terapkan clipping outlier (tanpa membuat NA)
numeric_data_clean <- numeric_data %>%
  mutate(across(everything(), zscore_clip))

# Imputasi dengan median jika masih ada NA (cadangan, bisa dilepas kalau tidak perlu)
safe_median <- function(x) {
  if (all(is.na(x))) return(0)
  median(x, na.rm = TRUE)
}

numeric_data_imputed <- numeric_data_clean %>%
  mutate(across(everything(), ~ ifelse(is.na(.), safe_median(.), .)))

# Cek missing value sebelum dan sesudah imputasi
cat("Missing setelah z-score clipping:\n")
## Missing setelah z-score clipping:
print(colSums(is.na(numeric_data_clean)))
## TSC1 TSC2 TSC3 TSC4 TSC5  TE1  TE2  TE3  TE4  TE5  EE1  EE2  EE3  EE4  EE5  DE1 
##    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 
##  DE2  DE3 RPA1 RPA2 RPA3 RPA4 RPA5 
##    0    0    0    0    0    0    0
cat("\nMissing setelah imputasi:\n")
## 
## Missing setelah imputasi:
print(colSums(is.na(numeric_data_imputed)))
## TSC1 TSC2 TSC3 TSC4 TSC5  TE1  TE2  TE3  TE4  TE5  EE1  EE2  EE3  EE4  EE5  DE1 
##    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 
##  DE2  DE3 RPA1 RPA2 RPA3 RPA4 RPA5 
##    0    0    0    0    0    0    0

Uji Reliabilitas dengan Cronbach’s Alpha

# List variabel per konstruk
konstruk_list <- list(
  TSC = c("TSC1", "TSC2", "TSC3", "TSC4", "TSC5"),
  TE  = c("TE1", "TE2", "TE3", "TE4", "TE5"),
  EE  = c("EE1", "EE2", "EE3", "EE4", "EE5"),
  DE  = c("DE1", "DE2", "DE3"),
  RPA = c("RPA1", "RPA2", "RPA3", "RPA4", "RPA5")
)

# Uji alpha untuk setiap konstruk
for (nama_konstruk in names(konstruk_list)) {
  indikator <- konstruk_list[[nama_konstruk]]
  sub_data <- numeric_data_imputed[, indikator]
  
  cat("\n Reliabilitas untuk konstruk:", nama_konstruk, "\n")
  print(alpha(sub_data))
}
## 
##  Reliabilitas untuk konstruk: TSC 
## 
## Reliability analysis   
## Call: alpha(x = sub_data)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N  ase mean   sd median_r
##       0.81      0.81    0.77      0.46 4.2 0.01  3.7 0.49     0.45
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.79  0.81  0.83
## Duhachek  0.79  0.81  0.83
## 
##  Reliability if an item is dropped:
##      raw_alpha std.alpha G6(smc) average_r S/N alpha se   var.r med.r
## TSC1      0.77      0.77    0.72      0.46 3.4    0.013 0.00061  0.46
## TSC2      0.76      0.76    0.71      0.45 3.2    0.013 0.00120  0.45
## TSC3      0.77      0.77    0.72      0.46 3.4    0.013 0.00118  0.45
## TSC4      0.78      0.78    0.73      0.47 3.6    0.012 0.00053  0.47
## TSC5      0.76      0.76    0.71      0.44 3.2    0.013 0.00094  0.45
## 
##  Item statistics 
##        n raw.r std.r r.cor r.drop mean   sd
## TSC1 876  0.75  0.74  0.65   0.58  3.7 0.67
## TSC2 876  0.76  0.77  0.68   0.61  3.8 0.64
## TSC3 876  0.75  0.75  0.66   0.59  3.7 0.64
## TSC4 876  0.73  0.73  0.62   0.56  3.7 0.67
## TSC5 876  0.77  0.77  0.69   0.62  3.8 0.65
## 
## Non missing response frequency for each item
##         2    3 3.65903890160183    4    5 miss
## TSC1 0.03 0.38                0 0.51 0.09    0
## TSC2 0.01 0.28                0 0.59 0.12    0
## TSC3 0.02 0.31                0 0.58 0.09    0
## TSC4 0.02 0.35                0 0.53 0.10    0
## TSC5 0.01 0.28                0 0.58 0.13    0
## 
##  Reliabilitas untuk konstruk: TE 
## 
## Reliability analysis   
## Call: alpha(x = sub_data)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.85      0.85    0.83      0.53 5.7 0.0082  4.1 0.54     0.54
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.83  0.85  0.86
## Duhachek  0.83  0.85  0.86
## 
##  Reliability if an item is dropped:
##     raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## TE1      0.81      0.82    0.78      0.53 4.5   0.0104 0.0051  0.51
## TE2      0.81      0.82    0.78      0.53 4.5   0.0104 0.0081  0.51
## TE3      0.81      0.81    0.77      0.51 4.2   0.0108 0.0060  0.51
## TE4      0.80      0.80    0.76      0.50 4.1   0.0111 0.0043  0.51
## TE5      0.85      0.85    0.81      0.58 5.5   0.0085 0.0021  0.57
## 
##  Item statistics 
##       n raw.r std.r r.cor r.drop mean   sd
## TE1 876  0.80  0.79  0.73   0.66  4.1 0.70
## TE2 876  0.79  0.79  0.72   0.66  4.0 0.70
## TE3 876  0.81  0.82  0.76   0.70  4.2 0.64
## TE4 876  0.83  0.83  0.79   0.72  4.1 0.64
## TE5 876  0.73  0.72  0.60   0.55  3.9 0.74
## 
## Non missing response frequency for each item
##        2    3 3.90846681922197    4 4.0675057208238 4.13163972286374
## TE1 0.01 0.17                0 0.55               0             0.00
## TE2 0.01 0.20                0 0.54               0             0.00
## TE3 0.00 0.14                0 0.56               0             0.00
## TE4 0.00 0.15                0 0.56               0             0.01
## TE5 0.03 0.23                0 0.54               0             0.00
##     4.15242494226328    5 miss
## TE1             0.00 0.26    0
## TE2             0.00 0.26    0
## TE3             0.01 0.29    0
## TE4             0.00 0.28    0
## TE5             0.00 0.20    0
## 
##  Reliabilitas untuk konstruk: EE 
## 
## Reliability analysis   
## Call: alpha(x = sub_data)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.87      0.87    0.85      0.58 6.9 0.0068  3.8 0.64     0.58
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.86  0.87  0.89
## Duhachek  0.86  0.87  0.89
## 
##  Reliability if an item is dropped:
##     raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## EE1      0.85      0.85    0.82      0.59 5.8   0.0081 0.0017  0.60
## EE2      0.84      0.84    0.80      0.57 5.2   0.0088 0.0012  0.55
## EE3      0.84      0.84    0.81      0.57 5.4   0.0087 0.0019  0.55
## EE4      0.84      0.84    0.81      0.58 5.4   0.0086 0.0011  0.58
## EE5      0.85      0.85    0.82      0.59 5.8   0.0081 0.0018  0.60
## 
##  Item statistics 
##       n raw.r std.r r.cor r.drop mean   sd
## EE1 876  0.79  0.80  0.72   0.67  3.8 0.73
## EE2 876  0.83  0.83  0.78   0.73  3.8 0.80
## EE3 876  0.83  0.82  0.77   0.72  3.9 0.82
## EE4 876  0.82  0.82  0.76   0.71  3.7 0.79
## EE5 876  0.80  0.80  0.72   0.68  4.0 0.80
## 
## Non missing response frequency for each item
##        2    3 3.69336384439359 3.75866050808314 3.82454128440367
## EE1 0.03 0.28                0             0.00                0
## EE2 0.05 0.32                0             0.01                0
## EE3 0.04 0.27                0             0.00                0
## EE4 0.05 0.37                0             0.00                0
## EE5 0.03 0.23                0             0.00                0
##     3.88443935926773 3.99427917620137    4    5 miss
## EE1                0                0 0.52 0.17    0
## EE2                0                0 0.44 0.18    0
## EE3                0                0 0.45 0.24    0
## EE4                0                0 0.42 0.16    0
## EE5                0                0 0.45 0.28    0
## 
##  Reliabilitas untuk konstruk: DE 
## 
## Reliability analysis   
## Call: alpha(x = sub_data)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.71      0.71    0.62      0.45 2.4 0.017  3.8 0.52     0.46
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.67  0.71  0.74
## Duhachek  0.67  0.71  0.74
## 
##  Reliability if an item is dropped:
##     raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## DE1      0.63      0.63    0.46      0.46 1.7    0.025    NA  0.46
## DE2      0.65      0.65    0.48      0.48 1.8    0.024    NA  0.48
## DE3      0.57      0.57    0.40      0.40 1.3    0.029    NA  0.40
## 
##  Item statistics 
##       n raw.r std.r r.cor r.drop mean   sd
## DE1 876  0.78  0.79  0.61   0.51  3.9 0.65
## DE2 876  0.78  0.78  0.60   0.50  3.6 0.65
## DE3 876  0.82  0.81  0.67   0.56  3.8 0.69
## 
## Non missing response frequency for each item
##        2    3 3.61379310344828 3.82379862700229 3.93807339449541    4    5 miss
## DE1 0.01 0.20             0.00                0                0 0.61 0.17    0
## DE2 0.02 0.41             0.01                0                0 0.49 0.07    0
## DE3 0.01 0.30             0.00                0                0 0.54 0.15    0
## 
##  Reliabilitas untuk konstruk: RPA 
## 
## Reliability analysis   
## Call: alpha(x = sub_data)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.82       0.5   5 0.0089  3.9 0.58     0.47
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.82  0.83  0.85
## Duhachek  0.82  0.83  0.85
## 
##  Reliability if an item is dropped:
##      raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## RPA1      0.78      0.78    0.74      0.48 3.7   0.0119 0.0051  0.47
## RPA2      0.78      0.78    0.74      0.47 3.5   0.0122 0.0078  0.44
## RPA3      0.78      0.78    0.76      0.47 3.6   0.0122 0.0165  0.43
## RPA4      0.81      0.81    0.79      0.52 4.4   0.0103 0.0203  0.52
## RPA5      0.84      0.84    0.81      0.56 5.1   0.0091 0.0105  0.55
## 
##  Item statistics 
##        n raw.r std.r r.cor r.drop mean   sd
## RPA1 876  0.81  0.81  0.78   0.69  4.0 0.77
## RPA2 876  0.82  0.82  0.79   0.71  4.0 0.73
## RPA3 876  0.82  0.82  0.76   0.70  3.9 0.74
## RPA4 876  0.74  0.74  0.63   0.58  3.9 0.75
## RPA5 876  0.68  0.68  0.54   0.50  3.9 0.74
## 
## Non missing response frequency for each item
##         2    3 3.86866359447005 3.87857961053837 3.91013824884793
## RPA1 0.02 0.24             0.00                0             0.00
## RPA2 0.03 0.20             0.00                0             0.00
## RPA3 0.03 0.24             0.00                0             0.01
## RPA4 0.04 0.23             0.00                0             0.00
## RPA5 0.03 0.26             0.01                0             0.00
##      3.96651270207852 3.97803468208092    4    5 miss
## RPA1             0.01             0.00 0.46 0.26    0
## RPA2             0.00             0.01 0.53 0.23    0
## RPA3             0.00             0.00 0.52 0.20    0
## RPA4             0.00             0.00 0.54 0.19    0
## RPA5             0.00             0.00 0.52 0.18    0
colSums(is.na(numeric_data_clean))
## TSC1 TSC2 TSC3 TSC4 TSC5  TE1  TE2  TE3  TE4  TE5  EE1  EE2  EE3  EE4  EE5  DE1 
##    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 
##  DE2  DE3 RPA1 RPA2 RPA3 RPA4 RPA5 
##    0    0    0    0    0    0    0

Uji Validitas dengan EFA

# Uji KMO
KMO(numeric_data_clean)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = numeric_data_clean)
## Overall MSA =  0.94
## MSA for each item = 
## TSC1 TSC2 TSC3 TSC4 TSC5  TE1  TE2  TE3  TE4  TE5  EE1  EE2  EE3  EE4  EE5  DE1 
## 0.95 0.96 0.94 0.94 0.96 0.94 0.95 0.92 0.92 0.96 0.95 0.94 0.95 0.93 0.98 0.87 
##  DE2  DE3 RPA1 RPA2 RPA3 RPA4 RPA5 
## 0.85 0.90 0.92 0.91 0.95 0.96 0.95
# Menentukan jumlah faktor jika kamu sudah tahu (misalnya 3 faktor)
efa_result <- fa(numeric_data_clean, nfactors = 3, rotate = "varimax")

# Menampilkan hasil loading faktor
print(efa_result$loadings, cutoff = 0.3)
## 
## Loadings:
##      MR1   MR3   MR2  
## TSC1 0.405       0.454
## TSC2 0.419       0.472
## TSC3 0.359       0.543
## TSC4 0.382       0.452
## TSC5 0.435       0.449
## TE1        0.658      
## TE2        0.611      
## TE3        0.701      
## TE4        0.738      
## TE5  0.342 0.449      
## EE1  0.541 0.360      
## EE2  0.670            
## EE3  0.613            
## EE4  0.548       0.317
## EE5  0.577 0.362      
## DE1              0.555
## DE2              0.505
## DE3              0.593
## RPA1 0.725            
## RPA2 0.702            
## RPA3 0.666            
## RPA4 0.534            
## RPA5 0.457            
## 
##                  MR1   MR3   MR2
## SS loadings    4.953 2.932 2.787
## Proportion Var 0.215 0.127 0.121
## Cumulative Var 0.215 0.343 0.464
# Parallel Analysis (menentukan jumlah faktor optimal)
fa.parallel(numeric_data_clean, fa = "fa")

## Parallel analysis suggests that the number of factors =  6  and the number of components =  NA

Modeling dengan SEM

# Spesifikasi model SEM berdasarkan teori dan hasil EFA
model_sem <- '
  TSC =~ TSC1 + TSC2 + TSC3 + TSC4 + TSC5
  TE  =~ TE1 + TE2 + TE3 + TE4 + TE5
  EE  =~ EE1 + EE2 + EE3 + EE4 + EE5
  DE  =~ DE1 + DE2 + DE3
  RPA =~ RPA1 + RPA2 + RPA3 + RPA4 + RPA5

  # Structural paths (misalnya TSC & TE mempengaruhi burnout: EE, DE, RPA)
  EE ~ TSC + TE
  DE ~ TSC + TE
  RPA ~ TSC + TE
'

fit_sem <- sem(model_sem, data = data)
summary(fit_sem, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 62 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        56
## 
##   Number of observations                           876
## 
## Model Test User Model:
##                                                       
##   Test statistic                               863.884
##   Degrees of freedom                               220
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                             10422.842
##   Degrees of freedom                               253
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.937
##   Tucker-Lewis Index (TLI)                       0.927
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -17541.444
##   Loglikelihood unrestricted model (H1)     -17109.502
##                                                       
##   Akaike (AIC)                               35194.889
##   Bayesian (BIC)                             35462.309
##   Sample-size adjusted Bayesian (SABIC)      35284.466
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.058
##   90 Percent confidence interval - lower         0.054
##   90 Percent confidence interval - upper         0.062
##   P-value H_0: RMSEA <= 0.050                    0.001
##   P-value H_0: RMSEA >= 0.080                    0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.040
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TSC =~                                                                
##     TSC1              1.000                               0.452    0.660
##     TSC2              0.993    0.057   17.461    0.000    0.449    0.703
##     TSC3              0.938    0.056   16.654    0.000    0.424    0.663
##     TSC4              0.923    0.059   15.739    0.000    0.417    0.620
##     TSC5              1.026    0.058   17.631    0.000    0.464    0.711
##   TE =~                                                                 
##     TE1               1.000                               0.548    0.771
##     TE2               0.925    0.042   22.024    0.000    0.507    0.727
##     TE3               1.033    0.042   24.713    0.000    0.566    0.804
##     TE4               1.086    0.041   26.770    0.000    0.595    0.864
##     TE5               0.903    0.046   19.618    0.000    0.495    0.657
##   EE =~                                                                 
##     EE1               1.000                               0.567    0.748
##     EE2               1.135    0.051   22.355    0.000    0.644    0.759
##     EE3               1.154    0.049   23.358    0.000    0.654    0.791
##     EE4               1.069    0.048   22.451    0.000    0.606    0.762
##     EE5               1.094    0.048   22.564    0.000    0.620    0.766
##   DE =~                                                                 
##     DE1               1.000                               0.454    0.670
##     DE2               0.981    0.066   14.838    0.000    0.445    0.653
##     DE3               1.150    0.073   15.733    0.000    0.522    0.748
##   RPA =~                                                                
##     RPA1              1.000                               0.699    0.839
##     RPA2              0.980    0.034   29.186    0.000    0.685    0.852
##     RPA3              0.848    0.034   24.764    0.000    0.593    0.752
##     RPA4              0.678    0.035   19.312    0.000    0.474    0.620
##     RPA5              0.616    0.037   16.661    0.000    0.431    0.548
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   EE ~                                                                  
##     TSC               0.683    0.062   11.074    0.000    0.544    0.544
##     TE                0.377    0.043    8.672    0.000    0.364    0.364
##   DE ~                                                                  
##     TSC               0.400    0.061    6.598    0.000    0.398    0.398
##     TE                0.240    0.046    5.227    0.000    0.290    0.290
##   RPA ~                                                                 
##     TSC               0.642    0.077    8.323    0.000    0.415    0.415
##     TE                0.467    0.059    7.943    0.000    0.366    0.366
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TSC ~~                                                                
##     TE                0.164    0.014   11.953    0.000    0.662    0.662
##  .EE ~~                                                                 
##    .DE               -0.008    0.006   -1.217    0.224   -0.070   -0.070
##    .RPA               0.057    0.009    6.453    0.000    0.371    0.371
##  .DE ~~                                                                 
##    .RPA              -0.021    0.009   -2.374    0.018   -0.123   -0.123
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .TSC1              0.264    0.015   18.146    0.000    0.264    0.564
##    .TSC2              0.206    0.012   17.395    0.000    0.206    0.506
##    .TSC3              0.229    0.013   18.102    0.000    0.229    0.560
##    .TSC4              0.279    0.015   18.689    0.000    0.279    0.616
##    .TSC5              0.210    0.012   17.214    0.000    0.210    0.494
##    .TE1               0.206    0.012   17.583    0.000    0.206    0.406
##    .TE2               0.229    0.012   18.373    0.000    0.229    0.471
##    .TE3               0.176    0.011   16.728    0.000    0.176    0.354
##    .TE4               0.121    0.009   14.178    0.000    0.121    0.254
##    .TE5               0.323    0.017   19.213    0.000    0.323    0.569
##    .EE1               0.254    0.014   18.009    0.000    0.254    0.441
##    .EE2               0.305    0.017   17.795    0.000    0.305    0.424
##    .EE3               0.257    0.015   17.071    0.000    0.257    0.375
##    .EE4               0.265    0.015   17.734    0.000    0.265    0.419
##    .EE5               0.271    0.015   17.661    0.000    0.271    0.413
##    .DE1               0.252    0.016   15.549    0.000    0.252    0.550
##    .DE2               0.267    0.017   16.066    0.000    0.267    0.574
##    .DE3               0.215    0.017   12.626    0.000    0.215    0.441
##    .RPA1              0.206    0.014   14.844    0.000    0.206    0.297
##    .RPA2              0.178    0.013   14.170    0.000    0.178    0.275
##    .RPA3              0.270    0.015   17.644    0.000    0.270    0.434
##    .RPA4              0.360    0.019   19.376    0.000    0.360    0.615
##    .RPA5              0.431    0.022   19.864    0.000    0.431    0.699
##     TSC               0.204    0.020   10.283    0.000    1.000    1.000
##     TE                0.301    0.023   13.070    0.000    1.000    1.000
##    .EE                0.099    0.010    9.785    0.000    0.308    0.308
##    .DE                0.124    0.014    8.796    0.000    0.604    0.604
##    .RPA               0.241    0.019   12.734    0.000    0.493    0.493
# Menjalankan SEM
fit <- sem(model_sem, data = numeric_data_clean)

# Ringkasan hasil SEM
summary(fit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 64 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        56
## 
##   Number of observations                           876
## 
## Model Test User Model:
##                                                       
##   Test statistic                               837.560
##   Degrees of freedom                               220
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              9660.461
##   Degrees of freedom                               253
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.934
##   Tucker-Lewis Index (TLI)                       0.925
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -17203.104
##   Loglikelihood unrestricted model (H1)     -16784.323
##                                                       
##   Akaike (AIC)                               34518.207
##   Bayesian (BIC)                             34785.628
##   Sample-size adjusted Bayesian (SABIC)      34607.784
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.057
##   90 Percent confidence interval - lower         0.053
##   90 Percent confidence interval - upper         0.061
##   P-value H_0: RMSEA <= 0.050                    0.004
##   P-value H_0: RMSEA >= 0.080                    0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.042
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TSC =~                                                                
##     TSC1              1.000                               0.451    0.671
##     TSC2              0.994    0.056   17.664    0.000    0.449    0.703
##     TSC3              0.946    0.056   16.927    0.000    0.427    0.668
##     TSC4              0.926    0.058   15.915    0.000    0.418    0.621
##     TSC5              1.027    0.058   17.831    0.000    0.463    0.711
##   TE =~                                                                 
##     TE1               1.000                               0.516    0.740
##     TE2               0.982    0.048   20.577    0.000    0.506    0.726
##     TE3               0.941    0.044   21.526    0.000    0.485    0.759
##     TE4               1.000    0.044   22.755    0.000    0.516    0.804
##     TE5               0.909    0.051   17.877    0.000    0.469    0.633
##   EE =~                                                                 
##     EE1               1.000                               0.543    0.739
##     EE2               1.146    0.050   22.717    0.000    0.622    0.782
##     EE3               1.165    0.052   22.495    0.000    0.632    0.774
##     EE4               1.086    0.050   21.765    0.000    0.589    0.750
##     EE5               1.120    0.051   22.120    0.000    0.608    0.762
##   DE =~                                                                 
##     DE1               1.000                               0.414    0.640
##     DE2               0.935    0.070   13.339    0.000    0.387    0.599
##     DE3               1.265    0.087   14.550    0.000    0.524    0.765
##   RPA =~                                                                
##     RPA1              1.000                               0.636    0.823
##     RPA2              0.930    0.036   26.040    0.000    0.591    0.806
##     RPA3              0.880    0.036   24.118    0.000    0.559    0.758
##     RPA4              0.730    0.039   18.933    0.000    0.464    0.622
##     RPA5              0.621    0.039   15.921    0.000    0.395    0.536
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   EE ~                                                                  
##     TSC               0.624    0.057   11.032    0.000    0.519    0.519
##     TE                0.414    0.044    9.356    0.000    0.394    0.394
##   DE ~                                                                  
##     TSC               0.411    0.056    7.333    0.000    0.448    0.448
##     TE                0.173    0.044    3.945    0.000    0.216    0.216
##   RPA ~                                                                 
##     TSC               0.589    0.069    8.586    0.000    0.418    0.418
##     TE                0.452    0.057    7.985    0.000    0.367    0.367
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TSC ~~                                                                
##     TE                0.146    0.013   11.449    0.000    0.627    0.627
##  .EE ~~                                                                 
##    .DE               -0.006    0.006   -1.097    0.273   -0.063   -0.063
##    .RPA               0.061    0.008    7.386    0.000    0.441    0.441
##  .DE ~~                                                                 
##    .RPA              -0.014    0.008   -1.751    0.080   -0.093   -0.093
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .TSC1              0.249    0.014   17.913    0.000    0.249    0.550
##    .TSC2              0.206    0.012   17.323    0.000    0.206    0.506
##    .TSC3              0.227    0.013   17.969    0.000    0.227    0.554
##    .TSC4              0.278    0.015   18.624    0.000    0.278    0.614
##    .TSC5              0.210    0.012   17.148    0.000    0.210    0.494
##    .TE1               0.219    0.013   17.371    0.000    0.219    0.452
##    .TE2               0.230    0.013   17.664    0.000    0.230    0.473
##    .TE3               0.173    0.010   16.932    0.000    0.173    0.424
##    .TE4               0.146    0.009   15.561    0.000    0.146    0.354
##    .TE5               0.329    0.017   18.986    0.000    0.329    0.599
##    .EE1               0.245    0.013   18.129    0.000    0.245    0.454
##    .EE2               0.246    0.014   17.259    0.000    0.246    0.389
##    .EE3               0.267    0.015   17.432    0.000    0.267    0.400
##    .EE4               0.269    0.015   17.928    0.000    0.269    0.437
##    .EE5               0.267    0.015   17.700    0.000    0.267    0.419
##    .DE1               0.247    0.016   15.862    0.000    0.247    0.590
##    .DE2               0.268    0.016   16.931    0.000    0.268    0.641
##    .DE3               0.194    0.018   10.972    0.000    0.194    0.415
##    .RPA1              0.192    0.013   14.922    0.000    0.192    0.322
##    .RPA2              0.188    0.012   15.624    0.000    0.188    0.350
##    .RPA3              0.232    0.014   17.110    0.000    0.232    0.426
##    .RPA4              0.341    0.018   19.167    0.000    0.341    0.613
##    .RPA5              0.387    0.020   19.809    0.000    0.387    0.713
##     TSC               0.204    0.019   10.481    0.000    1.000    1.000
##     TE                0.266    0.022   12.173    0.000    1.000    1.000
##    .EE                0.094    0.010    9.738    0.000    0.320    0.320
##    .DE                0.108    0.013    8.322    0.000    0.632    0.632
##    .RPA               0.201    0.017   12.176    0.000    0.498    0.498

CFA

# Model CFA tanpa structural path
model_cfa <- '
  TSC =~ TSC1 + TSC2 + TSC3 + TSC4 + TSC5
  TE  =~ TE1 + TE2 + TE3 + TE4 + TE5
  EE  =~ EE1 + EE2 + EE3 + EE4 + EE5
  DE  =~ DE1 + DE2 + DE3
  RPA =~ RPA1 + RPA2 + RPA3 + RPA4 + RPA5
'

fit_cfa <- cfa(model_cfa, data = numeric_data_imputed)

# Ringkasan hasil CFA
summary(fit_cfa, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 68 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        56
## 
##   Number of observations                           876
## 
## Model Test User Model:
##                                                       
##   Test statistic                               837.560
##   Degrees of freedom                               220
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              9660.461
##   Degrees of freedom                               253
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.934
##   Tucker-Lewis Index (TLI)                       0.925
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -17203.104
##   Loglikelihood unrestricted model (H1)     -16784.323
##                                                       
##   Akaike (AIC)                               34518.207
##   Bayesian (BIC)                             34785.628
##   Sample-size adjusted Bayesian (SABIC)      34607.784
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.057
##   90 Percent confidence interval - lower         0.053
##   90 Percent confidence interval - upper         0.061
##   P-value H_0: RMSEA <= 0.050                    0.004
##   P-value H_0: RMSEA >= 0.080                    0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.042
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TSC =~                                                                
##     TSC1              1.000                               0.451    0.671
##     TSC2              0.994    0.056   17.664    0.000    0.449    0.703
##     TSC3              0.946    0.056   16.927    0.000    0.427    0.668
##     TSC4              0.926    0.058   15.915    0.000    0.418    0.621
##     TSC5              1.027    0.058   17.831    0.000    0.463    0.711
##   TE =~                                                                 
##     TE1               1.000                               0.516    0.740
##     TE2               0.982    0.048   20.577    0.000    0.506    0.726
##     TE3               0.941    0.044   21.526    0.000    0.485    0.759
##     TE4               1.000    0.044   22.755    0.000    0.516    0.804
##     TE5               0.909    0.051   17.877    0.000    0.469    0.633
##   EE =~                                                                 
##     EE1               1.000                               0.543    0.739
##     EE2               1.146    0.050   22.717    0.000    0.622    0.782
##     EE3               1.165    0.052   22.495    0.000    0.632    0.774
##     EE4               1.086    0.050   21.765    0.000    0.589    0.750
##     EE5               1.120    0.051   22.120    0.000    0.608    0.762
##   DE =~                                                                 
##     DE1               1.000                               0.414    0.640
##     DE2               0.935    0.070   13.339    0.000    0.387    0.599
##     DE3               1.265    0.087   14.550    0.000    0.524    0.765
##   RPA =~                                                                
##     RPA1              1.000                               0.636    0.823
##     RPA2              0.930    0.036   26.040    0.000    0.591    0.806
##     RPA3              0.880    0.036   24.118    0.000    0.559    0.758
##     RPA4              0.730    0.039   18.933    0.000    0.464    0.622
##     RPA5              0.621    0.039   15.921    0.000    0.395    0.536
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TSC ~~                                                                
##     TE                0.146    0.013   11.449    0.000    0.627    0.627
##     EE                0.188    0.015   12.706    0.000    0.766    0.766
##     DE                0.109    0.011    9.805    0.000    0.583    0.583
##     RPA               0.186    0.015   12.049    0.000    0.648    0.648
##   TE ~~                                                                 
##     EE                0.201    0.015   13.024    0.000    0.719    0.719
##     DE                0.106    0.011    9.278    0.000    0.496    0.496
##     RPA               0.206    0.016   12.503    0.000    0.629    0.629
##   EE ~~                                                                 
##     DE                0.105    0.012    8.999    0.000    0.469    0.469
##     RPA               0.262    0.019   13.976    0.000    0.760    0.760
##   DE ~~                                                                 
##     RPA               0.098    0.013    7.724    0.000    0.374    0.374
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .TSC1              0.249    0.014   17.913    0.000    0.249    0.550
##    .TSC2              0.206    0.012   17.323    0.000    0.206    0.506
##    .TSC3              0.227    0.013   17.969    0.000    0.227    0.554
##    .TSC4              0.278    0.015   18.624    0.000    0.278    0.614
##    .TSC5              0.210    0.012   17.148    0.000    0.210    0.494
##    .TE1               0.219    0.013   17.371    0.000    0.219    0.452
##    .TE2               0.230    0.013   17.664    0.000    0.230    0.473
##    .TE3               0.173    0.010   16.932    0.000    0.173    0.424
##    .TE4               0.146    0.009   15.561    0.000    0.146    0.354
##    .TE5               0.329    0.017   18.986    0.000    0.329    0.599
##    .EE1               0.245    0.013   18.129    0.000    0.245    0.454
##    .EE2               0.246    0.014   17.259    0.000    0.246    0.389
##    .EE3               0.267    0.015   17.432    0.000    0.267    0.400
##    .EE4               0.269    0.015   17.928    0.000    0.269    0.437
##    .EE5               0.267    0.015   17.700    0.000    0.267    0.419
##    .DE1               0.247    0.016   15.862    0.000    0.247    0.590
##    .DE2               0.268    0.016   16.931    0.000    0.268    0.641
##    .DE3               0.194    0.018   10.972    0.000    0.194    0.415
##    .RPA1              0.192    0.013   14.922    0.000    0.192    0.322
##    .RPA2              0.188    0.012   15.624    0.000    0.188    0.350
##    .RPA3              0.232    0.014   17.110    0.000    0.232    0.426
##    .RPA4              0.341    0.018   19.167    0.000    0.341    0.613
##    .RPA5              0.387    0.020   19.809    0.000    0.387    0.713
##     TSC               0.204    0.019   10.481    0.000    1.000    1.000
##     TE                0.266    0.022   12.174    0.000    1.000    1.000
##     EE                0.294    0.024   12.307    0.000    1.000    1.000
##     DE                0.172    0.019    8.996    0.000    1.000    1.000
##     RPA               0.404    0.028   14.214    0.000    1.000    1.000
semPaths(fit_cfa,
         what = "std",          
         layout = "spring",     
         edge.label.cex = 0.9,  
         sizeMan = 4,           
         sizeLat = 5,          
         nCharNodes = 0,        
         residuals = FALSE,     
         optimizeLatRes = TRUE, 
         edge.color = "black")