Pada tahap pertama, kita memuat library seminr
yang didesain secara spesifik untuk mengeksekusi kerangka Partial
Least Squares berbasis varians, serta fungsi komputasi statistik
pelengkap psych.
library(seminr)
library(psych)
dataset_survey <- read.csv("Raw_Data.csv", header = TRUE, sep = ",")
Langkah ini bertujuan untuk mengecek struktur dan tipe data, mengidentifikasi missing value, dan mengevaluasi distribusi univariat kuesioner sebelum analisis lebih lanjut.
str(dataset_survey)
## 'data.frame': 528 obs. of 23 variables:
## $ EC1 : int 4 4 4 5 4 5 5 4 5 4 ...
## $ EC2 : int 4 3 5 5 4 5 5 4 5 4 ...
## $ EC3 : int 5 5 5 5 4 5 5 4 5 4 ...
## $ EK1 : int 5 5 4 4 4 5 4 4 5 5 ...
## $ EK2 : int 4 5 4 4 4 5 5 4 5 5 ...
## $ EK3 : int 5 5 4 4 4 5 4 4 4 4 ...
## $ SC1 : int 4 5 5 5 5 5 5 5 5 4 ...
## $ SC2 : int 4 5 4 5 4 5 5 4 5 5 ...
## $ SC3 : int 5 5 4 3 4 5 5 4 5 5 ...
## $ SC4 : int 4 5 4 5 4 5 5 4 5 5 ...
## $ PK1 : int 5 4 4 4 3 5 5 4 5 5 ...
## $ PK2 : int 4 4 4 5 3 5 5 4 5 5 ...
## $ PK3 : int 4 5 4 3 3 5 5 4 5 5 ...
## $ ATT1: int 4 5 4 5 4 5 5 4 5 5 ...
## $ ATT2: int 4 5 4 5 4 5 5 4 5 5 ...
## $ ATT3: int 4 4 4 5 4 5 5 4 5 5 ...
## $ ATT4: int 4 4 4 5 4 5 5 4 5 5 ...
## $ MO1 : int 4 3 4 5 5 5 5 4 5 5 ...
## $ MO2 : int 3 3 4 4 4 4 4 5 4 5 ...
## $ MO3 : int 3 4 5 4 4 4 5 5 4 4 ...
## $ INT1: int 5 5 4 5 5 5 5 4 5 5 ...
## $ INT2: int 5 5 4 5 5 5 5 2 5 5 ...
## $ INT3: int 4 5 4 4 4 5 4 3 5 5 ...
jumlah_na <- sum(is.na(dataset_survey))
cat("Jumlah Missing Value pada Dataset:", jumlah_na, "\n")
## Jumlah Missing Value pada Dataset: 0
Kita mengekstraksi tendensi rata-rata (mean) dan skewness untuk memeriksa distribusi data. Hal ini penting untuk membuktikan asumsi distribusi data yang tidak normal, yang mana akan memvalidasi perlunya teknik non-parametrik seperti PLS.
# Tinjauan Mean, Standar Deviasi, dan Skewness
deskriptif <- describe(dataset_survey)
print(deskriptif)
## vars n mean sd median trimmed mad min max range skew kurtosis se
## EC1 1 528 4.39 0.67 4 4.49 1.48 2 5 3 -0.70 -0.47 0.03
## EC2 2 528 4.44 0.71 5 4.55 0.00 2 5 3 -0.94 -0.07 0.03
## EC3 3 528 4.42 0.70 5 4.53 0.00 2 5 3 -0.92 0.10 0.03
## EK1 4 528 4.39 0.67 4 4.48 1.48 2 5 3 -0.79 0.14 0.03
## EK2 5 528 4.46 0.61 5 4.53 0.00 3 5 2 -0.67 -0.52 0.03
## EK3 6 528 4.37 0.69 4 4.47 1.48 1 5 4 -1.06 1.75 0.03
## SC1 7 528 4.57 0.68 5 4.71 0.00 1 5 4 -1.46 1.67 0.03
## SC2 8 528 4.52 0.65 5 4.63 0.00 3 5 2 -1.01 -0.11 0.03
## SC3 9 528 4.45 0.71 5 4.56 0.00 2 5 3 -0.95 -0.20 0.03
## SC4 10 528 4.54 0.66 5 4.66 0.00 2 5 3 -1.16 0.28 0.03
## PK1 11 528 4.32 0.76 4 4.41 1.48 2 5 3 -0.78 -0.30 0.03
## PK2 12 528 4.29 0.79 4 4.39 1.48 1 5 4 -1.08 1.33 0.03
## PK3 13 528 4.16 0.98 4 4.28 1.48 1 5 4 -1.06 0.71 0.04
## ATT1 14 528 4.53 0.68 5 4.66 0.00 3 5 2 -1.13 -0.02 0.03
## ATT2 15 528 4.53 0.68 5 4.66 0.00 2 5 3 -1.21 0.60 0.03
## ATT3 16 528 4.51 0.67 5 4.62 0.00 2 5 3 -1.12 0.49 0.03
## ATT4 17 528 4.43 0.67 5 4.53 0.00 2 5 3 -0.91 0.26 0.03
## MO1 18 528 4.27 0.64 4 4.34 0.00 2 5 3 -0.49 0.10 0.03
## MO2 19 528 4.16 0.78 4 4.25 0.00 1 5 4 -1.04 1.85 0.03
## MO3 20 528 4.35 0.68 4 4.45 1.48 1 5 4 -0.79 0.50 0.03
## INT1 21 528 4.34 0.77 5 4.43 0.00 2 5 3 -0.83 -0.25 0.03
## INT2 22 528 4.39 0.74 5 4.50 0.00 1 5 4 -1.04 0.73 0.03
## INT3 23 528 4.34 0.70 4 4.44 1.48 2 5 3 -0.75 0.01 0.03
# Plot Matriks Korelasi (Bivariate)
matriks_korelasi <- cor(dataset_survey)
print(round(matriks_korelasi, 2))
## EC1 EC2 EC3 EK1 EK2 EK3 SC1 SC2 SC3 SC4 PK1 PK2 PK3 ATT1 ATT2
## EC1 1.00 0.60 0.67 0.59 0.48 0.50 0.39 0.51 0.44 0.51 0.48 0.37 0.36 0.58 0.56
## EC2 0.60 1.00 0.61 0.50 0.51 0.46 0.27 0.41 0.38 0.45 0.44 0.39 0.31 0.42 0.48
## EC3 0.67 0.61 1.00 0.54 0.53 0.56 0.34 0.47 0.46 0.44 0.50 0.41 0.36 0.56 0.50
## EK1 0.59 0.50 0.54 1.00 0.65 0.56 0.34 0.46 0.48 0.49 0.47 0.40 0.33 0.49 0.47
## EK2 0.48 0.51 0.53 0.65 1.00 0.58 0.31 0.46 0.43 0.46 0.44 0.42 0.31 0.53 0.47
## EK3 0.50 0.46 0.56 0.56 0.58 1.00 0.28 0.36 0.37 0.36 0.36 0.33 0.31 0.41 0.39
## SC1 0.39 0.27 0.34 0.34 0.31 0.28 1.00 0.54 0.47 0.47 0.36 0.24 0.27 0.52 0.42
## SC2 0.51 0.41 0.47 0.46 0.46 0.36 0.54 1.00 0.57 0.62 0.51 0.45 0.32 0.62 0.52
## SC3 0.44 0.38 0.46 0.48 0.43 0.37 0.47 0.57 1.00 0.60 0.49 0.31 0.31 0.52 0.50
## SC4 0.51 0.45 0.44 0.49 0.46 0.36 0.47 0.62 0.60 1.00 0.41 0.29 0.26 0.52 0.47
## PK1 0.48 0.44 0.50 0.47 0.44 0.36 0.36 0.51 0.49 0.41 1.00 0.71 0.53 0.59 0.55
## PK2 0.37 0.39 0.41 0.40 0.42 0.33 0.24 0.45 0.31 0.29 0.71 1.00 0.59 0.46 0.41
## PK3 0.36 0.31 0.36 0.33 0.31 0.31 0.27 0.32 0.31 0.26 0.53 0.59 1.00 0.35 0.42
## ATT1 0.58 0.42 0.56 0.49 0.53 0.41 0.52 0.62 0.52 0.52 0.59 0.46 0.35 1.00 0.69
## ATT2 0.56 0.48 0.50 0.47 0.47 0.39 0.42 0.52 0.50 0.47 0.55 0.41 0.42 0.69 1.00
## ATT3 0.56 0.48 0.55 0.47 0.50 0.42 0.46 0.52 0.49 0.52 0.57 0.49 0.41 0.71 0.69
## ATT4 0.53 0.48 0.47 0.45 0.44 0.36 0.41 0.47 0.45 0.45 0.52 0.49 0.38 0.58 0.61
## MO1 0.34 0.32 0.29 0.37 0.29 0.25 0.30 0.30 0.29 0.32 0.28 0.31 0.20 0.39 0.42
## MO2 0.38 0.32 0.33 0.41 0.33 0.30 0.29 0.34 0.33 0.34 0.36 0.38 0.27 0.45 0.43
## MO3 0.34 0.33 0.27 0.38 0.29 0.25 0.31 0.36 0.34 0.33 0.32 0.32 0.28 0.41 0.44
## INT1 0.50 0.53 0.51 0.58 0.48 0.37 0.27 0.46 0.48 0.41 0.52 0.48 0.42 0.47 0.55
## INT2 0.49 0.46 0.46 0.52 0.50 0.37 0.30 0.40 0.41 0.41 0.57 0.50 0.40 0.57 0.53
## INT3 0.42 0.42 0.40 0.44 0.47 0.33 0.28 0.42 0.39 0.36 0.50 0.44 0.37 0.47 0.50
## ATT3 ATT4 MO1 MO2 MO3 INT1 INT2 INT3
## EC1 0.56 0.53 0.34 0.38 0.34 0.50 0.49 0.42
## EC2 0.48 0.48 0.32 0.32 0.33 0.53 0.46 0.42
## EC3 0.55 0.47 0.29 0.33 0.27 0.51 0.46 0.40
## EK1 0.47 0.45 0.37 0.41 0.38 0.58 0.52 0.44
## EK2 0.50 0.44 0.29 0.33 0.29 0.48 0.50 0.47
## EK3 0.42 0.36 0.25 0.30 0.25 0.37 0.37 0.33
## SC1 0.46 0.41 0.30 0.29 0.31 0.27 0.30 0.28
## SC2 0.52 0.47 0.30 0.34 0.36 0.46 0.40 0.42
## SC3 0.49 0.45 0.29 0.33 0.34 0.48 0.41 0.39
## SC4 0.52 0.45 0.32 0.34 0.33 0.41 0.41 0.36
## PK1 0.57 0.52 0.28 0.36 0.32 0.52 0.57 0.50
## PK2 0.49 0.49 0.31 0.38 0.32 0.48 0.50 0.44
## PK3 0.41 0.38 0.20 0.27 0.28 0.42 0.40 0.37
## ATT1 0.71 0.58 0.39 0.45 0.41 0.47 0.57 0.47
## ATT2 0.69 0.61 0.42 0.43 0.44 0.55 0.53 0.50
## ATT3 1.00 0.70 0.50 0.54 0.52 0.56 0.58 0.51
## ATT4 0.70 1.00 0.54 0.52 0.47 0.52 0.54 0.46
## MO1 0.50 0.54 1.00 0.63 0.53 0.40 0.43 0.39
## MO2 0.54 0.52 0.63 1.00 0.68 0.47 0.49 0.45
## MO3 0.52 0.47 0.53 0.68 1.00 0.50 0.47 0.43
## INT1 0.56 0.52 0.40 0.47 0.50 1.00 0.66 0.59
## INT2 0.58 0.54 0.43 0.49 0.47 0.66 1.00 0.69
## INT3 0.51 0.46 0.39 0.45 0.43 0.59 0.69 1.00
Langkah ini merekonstruksi variabel observasi (indikator kuesioner)
ke dalam komposit model reflektif PLS. Spesifikasi di bawah ini telah
disesuaikan secara presisi dengan jumlah indikator asli yang ada pada
file Raw_Data.csv.
model_pengukuran <- constructs(
composite("Kepedulian_Lingkungan", multi_items("EC", 1:3)),
composite("Pengetahuan_Lingkungan", multi_items("EK", 1:3)),
composite("Kepedulian_Sosial", multi_items("SC", 1:4)),
composite("Penget_Isu_Sosial", multi_items("PK", 1:3)),
composite("Kewajiban_Moral", multi_items("MO", 1:3)),
composite("Sikap", multi_items("ATT", 1:4)),
composite("Intensi_Beralih", multi_items("INT", 1:3))
)
Di sini kita menentukan jalur deterministik (Path Coefficients) yang menghubungkan antar variabel laten, termasuk merepresentasikan uji hipotesis mediasi.
model_struktural <- relationships(
paths(from = c("Kepedulian_Lingkungan", "Pengetahuan_Lingkungan",
"Kepedulian_Sosial", "Penget_Isu_Sosial"),
to = c("Kewajiban_Moral", "Sikap")),
paths(from = c("Kewajiban_Moral", "Sikap"),
to = c("Intensi_Beralih"))
)
Menjalankan komputasi algoritma utama dan memverifikasi batas toleransi Structural Multicollinearity untuk menjamin model bebas bias. VIF idealnya berada di bawah angka 3.3 (atau maksimal 5.0).
pls_model_estimasi <- estimate_pls(data = dataset_survey,
measurement_model = model_pengukuran,
structural_model = model_struktural,
inner_weights = path_weighting)
ringkasan_model <- summary(pls_model_estimasi)
cat("\n--- INNER VIF (Multikolinearitas Struktural) ---\n")
##
## --- INNER VIF (Multikolinearitas Struktural) ---
print(ringkasan_model$vif_antecedents)
## Kewajiban_Moral :
## Kepedulian_Lingkungan Pengetahuan_Lingkungan Kepedulian_Sosial
## 2.313 2.179 1.812
## Penget_Isu_Sosial
## 1.585
##
## Sikap :
## Kepedulian_Lingkungan Pengetahuan_Lingkungan Kepedulian_Sosial
## 2.313 2.179 1.812
## Penget_Isu_Sosial
## 1.585
##
## Intensi_Beralih :
## Kewajiban_Moral Sikap
## 1.659 1.659
Tahap ini mengekstraksi parameter ketahanan instrumen pengukur, meliputi Outer Loadings, Cronbach’s Alpha, Composite Reliability (CR), Average Variance Extracted (AVE), dan nilai HTMT untuk validitas diskriminan.
cat("\n--- OUTER LOADINGS ---\n")
##
## --- OUTER LOADINGS ---
print(ringkasan_model$loadings)
## Kepedulian_Lingkungan Pengetahuan_Lingkungan Kepedulian_Sosial
## EC1 0.885 0.000 0.000
## EC2 0.838 0.000 0.000
## EC3 0.876 0.000 0.000
## EK1 0.000 0.878 0.000
## EK2 0.000 0.876 0.000
## EK3 0.000 0.810 0.000
## SC1 0.000 0.000 0.753
## SC2 0.000 0.000 0.849
## SC3 0.000 0.000 0.812
## SC4 0.000 0.000 0.831
## PK1 0.000 0.000 0.000
## PK2 0.000 0.000 0.000
## PK3 0.000 0.000 0.000
## MO1 0.000 0.000 0.000
## MO2 0.000 0.000 0.000
## MO3 0.000 0.000 0.000
## ATT1 0.000 0.000 0.000
## ATT2 0.000 0.000 0.000
## ATT3 0.000 0.000 0.000
## ATT4 0.000 0.000 0.000
## INT1 0.000 0.000 0.000
## INT2 0.000 0.000 0.000
## INT3 0.000 0.000 0.000
## Penget_Isu_Sosial Kewajiban_Moral Sikap Intensi_Beralih
## EC1 0.000 0.000 0.000 0.000
## EC2 0.000 0.000 0.000 0.000
## EC3 0.000 0.000 0.000 0.000
## EK1 0.000 0.000 0.000 0.000
## EK2 0.000 0.000 0.000 0.000
## EK3 0.000 0.000 0.000 0.000
## SC1 0.000 0.000 0.000 0.000
## SC2 0.000 0.000 0.000 0.000
## SC3 0.000 0.000 0.000 0.000
## SC4 0.000 0.000 0.000 0.000
## PK1 0.891 0.000 0.000 0.000
## PK2 0.896 0.000 0.000 0.000
## PK3 0.789 0.000 0.000 0.000
## MO1 0.000 0.819 0.000 0.000
## MO2 0.000 0.900 0.000 0.000
## MO3 0.000 0.861 0.000 0.000
## ATT1 0.000 0.000 0.865 0.000
## ATT2 0.000 0.000 0.865 0.000
## ATT3 0.000 0.000 0.897 0.000
## ATT4 0.000 0.000 0.833 0.000
## INT1 0.000 0.000 0.000 0.859
## INT2 0.000 0.000 0.000 0.901
## INT3 0.000 0.000 0.000 0.861
cat("\n--- RELIABILITAS & VALIDITAS KONVERGEN (CR, AVE) ---\n")
##
## --- RELIABILITAS & VALIDITAS KONVERGEN (CR, AVE) ---
print(ringkasan_model$reliability)
## alpha rhoA rhoC AVE
## Kepedulian_Lingkungan 0.835 0.840 0.901 0.751
## Pengetahuan_Lingkungan 0.817 0.829 0.891 0.732
## Kepedulian_Sosial 0.827 0.831 0.885 0.660
## Penget_Isu_Sosial 0.824 0.847 0.895 0.740
## Kewajiban_Moral 0.825 0.831 0.896 0.741
## Sikap 0.888 0.889 0.923 0.749
## Intensi_Beralih 0.845 0.849 0.907 0.764
##
## Alpha, rhoA, and rhoC should exceed 0.7 while AVE should exceed 0.5
cat("\n--- VALIDITAS DISKRIMINAN (Rasio HTMT) ---\n")
##
## --- VALIDITAS DISKRIMINAN (Rasio HTMT) ---
print(ringkasan_model$validity$htmt)
## Kepedulian_Lingkungan Pengetahuan_Lingkungan
## Kepedulian_Lingkungan . .
## Pengetahuan_Lingkungan 0.845 .
## Kepedulian_Sosial 0.723 0.703
## Penget_Isu_Sosial 0.650 0.621
## Kewajiban_Moral 0.525 0.528
## Sikap 0.797 0.712
## Intensi_Beralih 0.733 0.727
## Kepedulian_Sosial Penget_Isu_Sosial Kewajiban_Moral
## Kepedulian_Lingkungan . . .
## Pengetahuan_Lingkungan . . .
## Kepedulian_Sosial . . .
## Penget_Isu_Sosial 0.611 . .
## Kewajiban_Moral 0.557 0.496 .
## Sikap 0.819 0.737 0.738
## Intensi_Beralih 0.643 0.744 0.711
## Sikap Intensi_Beralih
## Kepedulian_Lingkungan . .
## Pengetahuan_Lingkungan . .
## Kepedulian_Sosial . .
## Penget_Isu_Sosial . .
## Kewajiban_Moral . .
## Sikap . .
## Intensi_Beralih 0.795 .
Melihat kapasitas daya ramal (determinasi) dari model struktural terhadap sentimen atau perilaku konkrit dari intensi beralih konsumen.
cat("\n--- R-SQUARE & PATH COEFFICIENTS ---\n")
##
## --- R-SQUARE & PATH COEFFICIENTS ---
print(ringkasan_model$paths)
## Kewajiban_Moral Sikap Intensi_Beralih
## R^2 0.283 0.655 0.519
## AdjR^2 0.277 0.653 0.517
## Kepedulian_Lingkungan 0.110 0.280 .
## Pengetahuan_Lingkungan 0.147 0.067 .
## Kepedulian_Sosial 0.224 0.355 .
## Penget_Isu_Sosial 0.163 0.268 .
## Kewajiban_Moral . . 0.267
## Sikap . . 0.522
Mengekstraksi signifikansi dari Path Coefficients, T-Statistics, dan P-Value melalui teknik resampling (bootstrapping sebanyak 5000 sub-sampel) untuk menarik simpulan kausalitas final uji hipotesis.
# Menjalankan proses bootstrap (menggunakan prosesor paralel agar komputasi lebih cepat)
model_bootstrap <- bootstrap_model(seminr_model = pls_model_estimasi,
nboot = 5000,
cores = parallel::detectCores())
ringkasan_boot <- summary(model_bootstrap)
cat("\n--- HIPOTESIS: PATH COEFFICIENTS, T-VALUE, P-VALUE ---\n")
##
## --- HIPOTESIS: PATH COEFFICIENTS, T-VALUE, P-VALUE ---
print(ringkasan_boot$bootstrapped_paths)
## Original Est. Bootstrap Mean
## Kepedulian_Lingkungan -> Kewajiban_Moral 0.110 0.110
## Kepedulian_Lingkungan -> Sikap 0.280 0.280
## Pengetahuan_Lingkungan -> Kewajiban_Moral 0.147 0.147
## Pengetahuan_Lingkungan -> Sikap 0.067 0.069
## Kepedulian_Sosial -> Kewajiban_Moral 0.224 0.225
## Kepedulian_Sosial -> Sikap 0.355 0.357
## Penget_Isu_Sosial -> Kewajiban_Moral 0.163 0.162
## Penget_Isu_Sosial -> Sikap 0.268 0.265
## Kewajiban_Moral -> Intensi_Beralih 0.267 0.267
## Sikap -> Intensi_Beralih 0.522 0.523
## Bootstrap SD T Stat. 2.5% CI
## Kepedulian_Lingkungan -> Kewajiban_Moral 0.054 2.038 0.007
## Kepedulian_Lingkungan -> Sikap 0.039 7.107 0.203
## Pengetahuan_Lingkungan -> Kewajiban_Moral 0.053 2.785 0.045
## Pengetahuan_Lingkungan -> Sikap 0.044 1.540 -0.019
## Kepedulian_Sosial -> Kewajiban_Moral 0.065 3.431 0.095
## Kepedulian_Sosial -> Sikap 0.052 6.790 0.253
## Penget_Isu_Sosial -> Kewajiban_Moral 0.065 2.490 0.036
## Penget_Isu_Sosial -> Sikap 0.059 4.581 0.155
## Kewajiban_Moral -> Intensi_Beralih 0.043 6.187 0.184
## Sikap -> Intensi_Beralih 0.041 12.596 0.440
## 97.5% CI Bootstrap P Val
## Kepedulian_Lingkungan -> Kewajiban_Moral 0.218 0.034
## Kepedulian_Lingkungan -> Sikap 0.357 0.000
## Pengetahuan_Lingkungan -> Kewajiban_Moral 0.252 0.005
## Pengetahuan_Lingkungan -> Sikap 0.154 0.122
## Kepedulian_Sosial -> Kewajiban_Moral 0.351 0.001
## Kepedulian_Sosial -> Sikap 0.459 0.000
## Penget_Isu_Sosial -> Kewajiban_Moral 0.294 0.008
## Penget_Isu_Sosial -> Sikap 0.381 0.000
## Kewajiban_Moral -> Intensi_Beralih 0.350 0.000
## Sikap -> Intensi_Beralih 0.603 0.000
Mencetak representasi grafis rancang bangun PLS-SEM yang memproyeksikan seluruh muatan pengukuran (outer) serta koefisien struktural prediktif (inner). Plot ini sangat interaktif dan representatif untuk dimasukkan ke dalam laporan akhir.
# Plot visual model PLS-SEM hasil bootstrapping
plot(model_bootstrap)