PENGANTAR MODUL & KARAKTERISTIK DATA

Modul ini memberikan panduan praktis analisis struktural menggunakan pendekatan Structural Equation Modeling - Partial Least Squares (SEM-PLS) dengan Indikator Formatif (Composite) melalui library seminr di R.

Analisis ini bertujuan untuk menguji bagaimana faktor fasilitas demografi dan perilaku belajar aktual di platform memengaruhi capaian hasil akademik akhir mahasiswa.

Spesifikasi Variabel Laten dan Indikator Penelitian

  1. Fasilitas & Demografi (X1): Variabel laten eksogen yang dibentuk secara formatif oleh indikator usia (age) dan kepemilikan akses internet (internet_access).

  2. Perilaku Belajar (X2): Variabel laten endogen/eksogen yang dibentuk secara formatif oleh durasi jam belajar mingguan (study_hours_per_week), tingkat kehadiran (attendance_rate), dan keaktifan ekstrakurikuler (extracurricular).

  3. Hasil Belajar (Y): Variabel laten endogen murni yang dibentuk secara formatif oleh nilai ujian sebelumnya (previous_score) dan nilai ujian akhir (final_score).

Data Understanding Sebelum masuk ke tahap pemodelan struktural, dilakukan pemahaman mendalam terhadap karakteristik dataset student_performance.csv yang digunakan oleh Kelompok 12:

  1. Ukuran Sampel: Dataset terdiri dari 500 baris data observasi mahasiswa (records).

  2. Jenis Data: Merupakan data simulasi/sintetis terstruktur yang dirancang khusus untuk pengujian regresi dan predictive modeling dalam performa akademik.

  3. Sifat Indikator: Indikator pembentuk bersifat formatif (komposit), di mana setiap indikator membawa karakteristik unik yang berbeda dan tidak harus saling berkorelasi tinggi, melainkan bersama-sama membentuk definisi dari variabel latennya.

Load Library

library(tidyverse)
library(seminr)

Tahap awal untuk mengaktifkan package tidyverse untuk manipulasi data dan seminr sebagai library khusus untuk membangun model SEM-PLS dengan pendekatan komposit. Pengaturan chunk telah diatur agar menyembunyikan pesan conflict antar fungsi library.

Load Dataset

data_target <- read.csv("student_performance.csv", stringsAsFactors = FALSE)

Data Cleaning & Preprocessing

names(data_target) <- trimws(names(data_target))

data_bersih_murni <- data_target %>%
  mutate(
    internet_access = ifelse(trimws(internet_access) %in% c("Yes", "yes", "Y", "1"), 1, 0),
    extracurricular = ifelse(trimws(extracurricular) %in% c("Yes", "yes", "Y", "1"), 1, 0),
    
    age = as.numeric(age),
    study_hours_per_week = as.numeric(study_hours_per_week),
    attendance_rate = as.numeric(attendance_rate),
    previous_score = as.numeric(previous_score),
    final_score = as.numeric(final_score)
  ) %>%
  drop_na()

head(data_bersih_murni, 5)
##   student_id gender age study_hours_per_week attendance_rate parent_education
## 1    STU0001   Male  15                   25            63.8         Bachelor
## 2    STU0002 Female  15                    2            54.7         Bachelor
## 3    STU0003 Female  19                   10            90.5      High School
## 4    STU0004   Male  16                   26            66.8      High School
## 5    STU0005 Female  15                   25            73.0      High School
##   internet_access extracurricular previous_score final_score passed
## 1               1               1             41          67    Yes
## 2               1               1             83          28     No
## 3               1               0             73          49     No
## 4               0               1             75          70    Yes
## 5               0               1             67          77    Yes

Pada tahap ini, variabel kategorikal biner seperti internet_access dan extracurricular diubah (dummy coding) menjadi representasi angka murni 1 (untuk jawaban Ya) dan 0 (untuk jawaban Tidak). Variabel numerik kontinu dipastikan bertipe data numeric agar fungsi matriks pada PLS dapat berjalan stabil. Fungsi drop_na() memastikan tidak ada baris data kosong yang mengganggu estimasi.

SPESIFIKASI MODEL SEM-PLS

A. Definisi Outer Model (Measurement Model - Formatif)

model_pengukuran <- constructs(
  composite("Fasilitas_Demografi", c("age", "internet_access")),
  composite("Perilaku_Belajar", c("study_hours_per_week", "attendance_rate", "extracurricular")),
  composite("Hasil_Belajar", c("previous_score", "final_score"))
)

Pendefinisian struktur luar (Outer Model). Karena indikator penelitian bertindak sebagai pembentuk variabel laten (bukan pencerminan), maka fungsi yang digunakan adalah composite(), yang secara otomatis menetapkan bahwa model pengukuran ini bersifat Formatif.

B. Definisi Inner Model (Structural Model)

model_struktural <- relationships(
  paths(from = "Fasilitas_Demografi", to = "Perilaku_Belajar"),
  paths(from = c("Fasilitas_Demografi", "Perilaku_Belajar"), to = "Hasil_Belajar")
)

Membuat spesifikasi hubungan struktural (Inner Model). Model menguji jalur langsung dari Fasilitas Demografi ke Perilaku Belajar, serta pengaruh bersama dari Fasilitas Demografi dan Perilaku Belajar terhadap Hasil Belajar Akhir Mahasiswa.

ESTIMASI MODEL DAN BOOTSTRAPPING

C. Menjalankan Estimasi PLS dan Re-Sampling Boostrap

# A. Estimasi Model PLS Standar
pls_model <- estimate_pls(
  data = data_bersih_murni,
  measurement_model = model_pengukuran,
  structural_model = model_struktural
)
summary_simple <- summary(pls_model)

# B. Estimasi Model Re-sampling Bootstrap (200 kali)
boot_model <- bootstrap_model(
  seminr_model = pls_model,
  nboot = 200,
  seed = 123
)
summary_boot <- summary(boot_model)

Langkah krusial mengeksekusi algoritma PLS-PM. Fungsi estimate_pls digunakan untuk menghitung bobot indikator dan koefisien regresi original. Selanjutnya, fungsi bootstrap_model dijalankan sebanyak 200 kali replikasi sampel acak untuk menghitung standard error, T-Statistik, dan P-Value guna melengkapi pengujian hipotesis (signifikansi).

EVALUASI HASIL DAN INTERPRETASI UNTUK LAPORAN

A. Evaluasi Outer Model (Model Pengukuran Formatif)

cat("--- 1. UJI KOLINIERITAS INDIKATOR (VIF) ---\n")
## --- 1. UJI KOLINIERITAS INDIKATOR (VIF) ---
print(summary_simple$validity$vif_items)
## Fasilitas_Demografi :
##             age internet_access 
##           1.002           1.002 
## 
## Perilaku_Belajar :
## study_hours_per_week      attendance_rate      extracurricular 
##                1.001                1.002                1.003 
## 
## Hasil_Belajar :
## previous_score    final_score 
##          1.028          1.028

Kriteria pengujian model formatif mensyaratkan tidak boleh ada multikolinieritas yang tinggi antar indikator dalam satu blok konstruk (Nilai VIF wajib < 5.00). Berdasarkan output di atas, seluruh nilai VIF indikator berada di kisaran 1.002 hingga 1.028 (mendekati 1), yang membuktikan bahwa seluruh indikator lolos uji asumsi kolinieritas dan terbebas dari bias redundansi data.

cat("\n--- 2. SIGNIFIKANSI BOBOT INDIKATOR (OUTER WEIGHTS) ---\n")
## 
## --- 2. SIGNIFIKANSI BOBOT INDIKATOR (OUTER WEIGHTS) ---
print(summary_simple$weights)
##                      Fasilitas_Demografi Perilaku_Belajar Hasil_Belajar
## age                               -0.630            0.000         0.000
## internet_access                    0.804            0.000         0.000
## study_hours_per_week               0.000            0.960         0.000
## attendance_rate                    0.000            0.290         0.000
## extracurricular                    0.000            0.037         0.000
## previous_score                     0.000            0.000        -0.098
## final_score                        0.000            0.000         1.011

Nilai Outer Weights menunjukkan besarnya kontribusi relatif masing-masing indikator dalam membentuk variabel latennya.

  1. Pada konstruk Perilaku Belajar, indikator jumlah jam belajar mingguan (study_hours_per_week) memberikan kontribusi pembentuk yang mutlak dan paling dominan (0.960) dibandingkan keaktifan ekstrakurikuler yang sangat kecil (0.037).

  2. Pada konstruk Hasil Belajar, komponen nilai akhir (final_score) menjadi kontributor pembentuk utama dengan bobot sebesar 1.011.

B. Evaluasi Inner Model (Model Struktural & Uji Hipotesis)

cat("--- 3. TABEL UJI SIGNIFIKANSI JALUR STRUKTURAL (BOOTSTRAP) ---\n")
## --- 3. TABEL UJI SIGNIFIKANSI JALUR STRUKTURAL (BOOTSTRAP) ---
print(summary_boot$bootstrapped_paths)
##                                           Original Est. Bootstrap Mean
## Fasilitas_Demografi  ->  Perilaku_Belajar         0.076          0.007
## Fasilitas_Demografi  ->  Hasil_Belajar           -0.001         -0.002
## Perilaku_Belajar  ->  Hasil_Belajar               0.861          0.858
##                                           Bootstrap SD T Stat. 2.5% CI 97.5% CI
## Fasilitas_Demografi  ->  Perilaku_Belajar        0.100   0.760  -0.155    0.162
## Fasilitas_Demografi  ->  Hasil_Belajar           0.026  -0.050  -0.054    0.051
## Perilaku_Belajar  ->  Hasil_Belajar              0.014  62.911   0.826    0.881
##                                           Bootstrap P Val
## Fasilitas_Demografi  ->  Perilaku_Belajar           0.930
## Fasilitas_Demografi  ->  Hasil_Belajar              0.980
## Perilaku_Belajar  ->  Hasil_Belajar                 0.000

Kriteria penarikan kesimpulan hipotesis pada taraf kepercayaan 95% adalah: Hubungan dinyatakan SIGNIFIKAN jika nilai T-Statistik > 1.96 dan P-Value < 0.05. Berdasarkan hasil perhitungan Bootstrap Kelompok 12:

  1. Perilaku Belajar -> Hasil Belajar: Memiliki nilai koefisien jalur original (Original Est) sebesar 0.861. Jalur hubungan ini dinyatakan SANGAT SIGNIFIKAN (karena pada visualisasi plot memberikan dampak dorongan kuat, nilai T-Statistik terbukti melewati 1.96, dan P-Value < 0.05). Artinya, semakin giat perilaku belajar mahasiswa (jam belajar tinggi dan rajin hadir), maka capaian hasil akademiknya dipastikan akan meningkat tajam.

  2. Fasilitas Demografi -> Hasil Belajar: Memiliki koefisien jalur original sebesar -0.001 (hampir nol). Hubungan ini dinyatakan TIDAK SIGNIFIKAN. Artinya, faktor usia dan kepemilikan internet tidak memiliki korelasi langsung dalam mendikte tinggi-rendahnya nilai akademis akhir mahasiswa.

cat("\n--- 4. NILAI UKURAN KEBAIKAN MODEL (R-SQUARE) ---\n")
## 
## --- 4. NILAI UKURAN KEBAIKAN MODEL (R-SQUARE) ---
print(pls_model$rSquared)
##        Perilaku_Belajar Hasil_Belajar
## Rsq         0.005827186     0.7403295
## AdjRsq      0.003830855     0.7392845

Nilai \(R^2\) untuk variabel endogen Hasil Belajar diperoleh sebesar 0.7403 (atau 74.03%). Interpretasi: Angka ini menunjukkan bahwa kesuluruhan variansi nilai akademik mahasiswa mampu dijelaskan secara bersama-sama oleh variabel Fasilitas Demografi dan Perilaku Belajar sebesar 74.03%. Nilai ini masuk ke dalam kriteria Model yang Sangat Kuat (Substantial) dalam klasifikasi riset perilaku dan pendidikan. Sisanya sebesar 25.97% dipengaruhi oleh faktor luar yang tidak dimasukkan dalam model eksperimen ini.

VISUALISASI JALUR STRUKTURAL SEM-PLS

plot(pls_model)

Diagram jalur di atas mengonfirmasi arah pemodelan struktural. Panah tebal dari Perilaku Belajar ke Hasil Belajar merepresentasikan nilai keofisien jalur positif kuat (\(\beta = 0.861\)) yang mendominasi model, dilengkapi dengan tampilan nilai kontribusi variansi \(R^2 = 0.74\) yang tertera tepat di dalam lingkaran variabel dependen Hasil Belajar.

Komputasi Otomatis Sistem Untuk F-Square

r2_lengkap <- pls_model$rSquared["Rsq", "Hasil_Belajar"]

# --- MODEL TANPA PERILAKU BELAJAR ---
model_struktural_tanpa_perilaku <- relationships(
  paths(from = "Fasilitas_Demografi", to = "Hasil_Belajar")
)
model_tanpa_perilaku <- estimate_pls(
  data = data_bersih_murni, 
  measurement_model = model_pengukuran, 
  structural_model = model_struktural_tanpa_perilaku
)
r2_tanpa_perilaku <- model_tanpa_perilaku$rSquared["Rsq", "Hasil_Belajar"]

# --- MODEL TANPA FASILITAS DEMOGRAFI ---
model_struktural_tanpa_fasilitas <- relationships(
  paths(from = "Perilaku_Belajar", to = "Hasil_Belajar")
)
model_tanpa_fasilitas <- estimate_pls(
  data = data_bersih_murni, 
  measurement_model = model_pengukuran, 
  structural_model = model_struktural_tanpa_fasilitas
)
r2_tanpa_fasilitas <- model_tanpa_fasilitas$rSquared["Rsq", "Hasil_Belajar"]

# --- RUMUS MATEMATIS F-SQUARE ---
f2_perilaku_belajar <- (r2_lengkap - r2_tanpa_perilaku) / (1 - r2_lengkap)
f2_fasilitas_demografi <- (r2_lengkap - r2_tanpa_fasilitas) / (1 - r2_lengkap)

tabel_f2_sistem <- matrix(c(f2_fasilitas_demografi, f2_perilaku_belajar), nrow = 2, ncol = 1)
rownames(tabel_f2_sistem) <- c("Fasilitas_Demografi -> Hasil_Belajar", "Perilaku_Belajar -> Hasil_Belajar")
colnames(tabel_f2_sistem) <- c("f-Square (Effect Size)")

REKAPITULASI HASIL EVALUASI

print(summary_boot$bootstrapped_paths)
##                                           Original Est. Bootstrap Mean
## Fasilitas_Demografi  ->  Perilaku_Belajar         0.076          0.007
## Fasilitas_Demografi  ->  Hasil_Belajar           -0.001         -0.002
## Perilaku_Belajar  ->  Hasil_Belajar               0.861          0.858
##                                           Bootstrap SD T Stat. 2.5% CI 97.5% CI
## Fasilitas_Demografi  ->  Perilaku_Belajar        0.100   0.760  -0.155    0.162
## Fasilitas_Demografi  ->  Hasil_Belajar           0.026  -0.050  -0.054    0.051
## Perilaku_Belajar  ->  Hasil_Belajar              0.014  62.911   0.826    0.881
##                                           Bootstrap P Val
## Fasilitas_Demografi  ->  Perilaku_Belajar           0.930
## Fasilitas_Demografi  ->  Hasil_Belajar              0.980
## Perilaku_Belajar  ->  Hasil_Belajar                 0.000
print(pls_model$rSquared)
##        Perilaku_Belajar Hasil_Belajar
## Rsq         0.005827186     0.7403295
## AdjRsq      0.003830855     0.7392845
print(tabel_f2_sistem)
##                                      f-Square (Effect Size)
## Fasilitas_Demografi -> Hasil_Belajar           -0.001111047
## Perilaku_Belajar -> Hasil_Belajar               2.800759859
print(summary_simple$validity$vif_items)
## Fasilitas_Demografi :
##             age internet_access 
##           1.002           1.002 
## 
## Perilaku_Belajar :
## study_hours_per_week      attendance_rate      extracurricular 
##                1.001                1.002                1.003 
## 
## Hasil_Belajar :
## previous_score    final_score 
##          1.028          1.028

INTERPRETASI DAN PEMBAHASAN HASIL ANALISIS

  1. Analisis Pengaruh dan Uji Hipotesis Struktural

Berdasarkan temuan empiris melalui pemodelan bootstrapping, variabel Perilaku Belajar terbukti memiliki pengaruh positif yang sangat kuat dan signifikan secara mutlak terhadap Hasil Belajar mahasiswa. Nilai T-Statistik yang menyentuh angka 62.911 jauh melampaui batas kritis 1.96, diperkuat dengan nilai P-Value sebesar 0.000 yang berada di bawah alpha 5%. Hal ini mengindikasikan bahwa semakin disiplin mahasiswa dalam mengalokasikan jam belajar mingguan serta menjaga tingkat kehadiran di kelas, maka capaian nilai ujian akhir mereka dipastikan akan meningkat secara nyata.Sebaliknya, karakteristik Fasilitas Demografi tidak memperlihatkan pengaruh yang nyata, baik terhadap Perilaku Belajar (\(P = 0.930\)) maupun langsung terhadap Hasil Belajar (\(P = 0.980\)). Indikator latar belakang usia mahasiswa serta kepemilikan akses internet rumah tidak menjadi parameter penentu atau intervensi bagi tinggi-rendahnya nilai akademik akhir. Peluang untuk meraih performa akademik yang unggul terbuka sama besar bagi setiap mahasiswa tanpa mendasarkan pada latar belakang demografinya.

  1. Analisis Kekuatan Prediksi Model (R-Square)

Nilai \(R^2\) pada konstruk Hasil Belajar yang berada di angka 74.03% menunjukkan tingkat akurasi prediksi yang sangat tinggi.Angka yang melebihi ambang batas 70% ini masuk ke dalam kategori Substantial (Sangat Kuat). Artinya, variansi naik-turunnya performa akademik akhir mahasiswa sebesar 74.03% dapat dijelaskan dengan sangat baik oleh kombinasi variabel Fasilitas Demografi dan Perilaku Belajar di dalam model. Sisa sebesar 25.97% lainnya dipengaruhi oleh faktor luar yang tidak dimasukkan ke dalam ruang lingkup penelitian praktikum ini.Sementara itu, nilai \(R^2\) pada Perilaku Belajar yang hanya sebesar 0.58% menunjukkan bahwa karakteristik demografi bawaan (age dan internet_access) hampir tidak memiliki andil sama sekali dalam membentuk pola kedisiplinan belajar mahasiswa.

  1. Analisis Kontribusi Praktis Parsial (f-Square)

Pengujian nilai \(f^2\) bertujuan untuk melihat dampak praktis secara mandiri saat suatu variabel dilepaskan dari sistem pemodelan. Variabel Perilaku Belajar menghasilkan nilai \(f^2\) sebesar 2.8008. Nilai ini berada jauh di atas ambang batas efek besar (\(> 0.35\)), sehingga diklasifikasikan memiliki Large Effect Size (Efek Besar). Hal ini menegaskan bahwa Perilaku Belajar merupakan pilar penggerak utama yang paling vital di dalam struktur model.Di sisi lain, variabel Fasilitas Demografi menghasilkan nilai \(f^2\) sebesar -0.0011 (mendekati nol mutlak) yang berada di bawah batas minimal 0.02, sehingga diklasifikasikan sebagai No Effect Size (Tidak Memiliki Efek). Secara praktis, mengeluarkan variabel demografi dari model tidak akan mengurangi kebaikan atau daya ramal model.

  1. Kelayakan Model Pengukuran Formatif (Uji VIF)

Pada model dengan pendekatan indikator formatif (komposit), prasyarat utama yang harus dipenuhi adalah bebas dari masalah multikolinieritas antar-indikator pembentuknya. Hasil pengujian menunjukkan seluruh nilai VIF item berada pada rentang sangat rendah, yaitu antara 1.002 hingga 1.028. Karena tidak ada satu pun indikator yang menyentuh atau melebihi batas toleransi kritis (<5.00), maka model pengukuran formatif Kelompok 12 dinyatakan lolos uji asumsi kelayakan secara mutlak. Setiap indikator membawa informasi uniknya masing-masing tanpa adanya tumpang tindih data yang mengganggu kestabilan estimasi model.