#Perilaku Belajar (X2): Diukur melalui variabel study_hours_weekly, login_frequency_weekly, dan avg_session_duration_min. #Partisipasi (X3): Diukur melalui variabel assignments_submitted, forum_posts, dan quiz_attempts. #Hasil Belajar (Y): Diukur melalui variabel avg_quiz_score, engagement_score, dan final_grade.
# 1. Mengaktifkan Library Utama
library(tidyverse)
library(seminr)
# 2. Membaca Dataset
data_mentah <- read.csv2("online_learning_engagement_dataset.csv", stringsAsFactors = FALSE)
# 3. Proses Transformasi Data secara Absolut
data_bersih <- data_mentah %>%
mutate(
age = as.numeric(age),
internet_speed_mbps = as.numeric(internet_speed_mbps),
study_hours_weekly = as.numeric(study_hours_weekly),
login_frequency_weekly = as.numeric(login_frequency_weekly),
# CARA ABSOLUT: Hilangkan titik, ubah ke numerik, lalu potong digit agar nilasinya logis
avg_session_duration_min = as.numeric(gsub("\\.", "", avg_session_duration_min)),
avg_session_duration_min = avg_session_duration_min / (10^ (nchar(as.character(avg_session_duration_min)) - 2)),
video_watch_time_min = as.numeric(gsub("\\.", "", video_watch_time_min)),
video_watch_time_min = video_watch_time_min / (10^ (nchar(as.character(video_watch_time_min)) - 2)),
engagement_score = as.numeric(gsub("\\.", "", engagement_score)),
engagement_score = engagement_score / (10^ (nchar(as.character(engagement_score)) - 2)),
final_grade = as.numeric(gsub("\\.", "", final_grade)),
final_grade = final_grade / (10^ (nchar(as.character(final_grade)) - 2)),
assignments_submitted = as.numeric(assignments_submitted),
forum_posts = as.numeric(forum_posts),
quiz_attempts = as.numeric(quiz_attempts),
avg_quiz_score = as.numeric(avg_quiz_score),
attendance_rate = as.numeric(attendance_rate),
dropout = as.factor(dropout)
) %>%
drop_na()
# Cek hasil angka apakah sudah normal (tidak ratusan juta lagi)
head(data_bersih, 5)
## student_id age gender country device_type internet_speed_mbps
## 1 1 24 Female USA Laptop 44.70
## 2 2 37 Female Germany Tablet 61.10
## 3 3 46 Female Australia Tablet 43.10
## 4 4 32 Male India Tablet 26.99
## 5 5 28 Male India Laptop 52.28
## study_hours_weekly login_frequency_weekly avg_session_duration_min
## 1 15.92 10 40.05275
## 2 6.37 8 32.44267
## 3 6.64 7 43.61451
## 4 10.91 5 30.69726
## 5 7.41 6 47.40300
## video_watch_time_min assignments_submitted forum_posts quiz_attempts
## 1 29.40998 3 4 6
## 2 40.03977 7 14 5
## 3 19.02397 1 14 5
## 4 37.04516 3 1 2
## 5 15.13413 4 4 6
## avg_quiz_score attendance_rate engagement_score final_grade dropout
## 1 46.69 0.93 80.46499 22.44764 0
## 2 62.65 0.59 63.12988 39.74990 1
## 3 58.42 0.43 41.43199 31.06169 1
## 4 61.21 0.65 61.25258 41.30063 0
## 5 74.92 0.55 49.79706 39.14900 1
# 1. Spesifikasi Measurement Model (Outer Model)
model_pengukuran <- constructs(
composite("Fasilitas_Demografi", c("age", "internet_speed_mbps")),
composite("Perilaku_Belajar", c("study_hours_weekly", "login_frequency_weekly", "avg_session_duration_min")),
composite("Partisipasi", c("assignments_submitted", "forum_posts", "quiz_attempts")),
composite("Hasil_Belajar", c("avg_quiz_score", "engagement_score", "final_grade"))
)
# 2. Spesifikasi Structural Model (Inner Model)
model_struktural <- relationships(
paths(from = "Fasilitas_Demografi", to = c("Perilaku_Belajar", "Partisipasi")),
paths(from = c("Perilaku_Belajar", "Partisipasi"), to = "Hasil_Belajar")
)
pls_model <- estimate_pls(
data = data_bersih,
measurement_model = model_pengukuran,
structural_model = model_struktural
)
# Menggunakan nboot = 5 untuk memancing bypass lock memori komputer Anda
boot_model <- bootstrap_model(
seminr_model = pls_model,
nboot = 5,
cores = 1
)
summary_boot <- summary(boot_model)
# 3. Membuat Ringkasan Hasil
summary_boot <- summary(boot_model)
# 1. Uji Hubungan Struktural (Uji Jalur / Hipotesis)
# Hubungan dinyatakan Signifikan apabila nilai p-value < 0.05 (atau T Stat > 1.96).
# Menampilkan Koefisien Jalur, T-Stat, dan P-Value
summary_boot$bootstrapped_paths
## Original Est. Bootstrap Mean
## Fasilitas_Demografi -> Perilaku_Belajar -0.010 -0.007
## Fasilitas_Demografi -> Partisipasi -0.000 -0.003
## Perilaku_Belajar -> Hasil_Belajar 0.690 0.689
## Partisipasi -> Hasil_Belajar 0.409 0.406
## Bootstrap SD T Stat. 2.5% CI 97.5% CI
## Fasilitas_Demografi -> Perilaku_Belajar 0.008 -1.235 -0.013 0.006
## Fasilitas_Demografi -> Partisipasi 0.007 -0.050 -0.010 0.005
## Perilaku_Belajar -> Hasil_Belajar 0.012 59.920 0.675 0.703
## Partisipasi -> Hasil_Belajar 0.006 71.250 0.401 0.415
## Bootstrap P Val
## Fasilitas_Demografi -> Perilaku_Belajar 0.400
## Fasilitas_Demografi -> Partisipasi 0.800
## Perilaku_Belajar -> Hasil_Belajar 0.000
## Partisipasi -> Hasil_Belajar 0.000
# 2. Nilai R-Square (R^2)
# Menunjukkan seberapa besar persentase varians dari variabel dependen yang mampu dijelaskan oleh variabel independennya di dalam model.
summary_boot$rSquared
## NULL
# Plot Model Struktural SEM-PLS
plot(boot_model)