setwd(“C:\Users\DELL\Downloads”) data <- read.csv(“ResearchInformation3.csv”) dim(data) #cek struktur dan dimensi data str(data) summary(data) #cek missing value colSums(is.na(data))

library(lavaan) library(semPlot) library(tidyverse)

Konversi variabel kategorik jadi numerik

data\(Department <- factor(data\)Department) data\(Department_encoded <- as.numeric(data\)Department)

data\(Gender <- factor(data\)Gender, levels = c(“Female”, “Male”)) data\(Gender_encoded <- as.numeric(data\)Gender) - 1

data\(Income <- trimws(data\)Income) data\(Income <- factor(data\)Income, levels = c(“Low (Below 15,000)”, “Lower middle (15,000-30,000)”, “Upper middle (30,000-50,000)”, “High (Above 50,000)”), ordered = TRUE)

data\(Income_encoded <- as.numeric(data\)Income)

data\(Hometown <- factor(data\)Hometown, levels = c(“Village”, “City”)) data\(Hometown_encoded <- as.numeric(data\)Hometown) - 1

data\(Preparation <- factor(data\)Preparation, levels = c(“0-1 Hour”, “2-3 Hours”, “More than 3 Hours”), ordered = TRUE)

data\(Preparation_encoded <- as.numeric(data\)Preparation)

data\(Gaming <- factor(data\)Gaming, levels = c(“0-1 Hour”, “2-3 Hours”, “More than 3 Hours”), ordered = TRUE)

data\(Gaming_encoded <- as.numeric(data\)Gaming)

data\(Attendance <- factor(data\)Attendance, levels = c(“Below 40%”, “40%-59%”, “60%-79%”, “80%-100%”), ordered = TRUE)

data\(Attendance_encoded <- as.numeric(data\)Attendance)

data\(Job <- factor(data\)Job, levels = c(“No”, “Yes”)) data\(Job_encoded <- as.numeric(data\)Job) - 1

data\(Extra <- factor(data\)Extra, levels = c(“No”, “Yes”)) data\(Extra_encoded <- as.numeric(data\)Extra) - 1

data\(Semester <- factor(data\)Semester, levels = paste0(2:12, c(“nd”, “rd”, “th”, “th”, “th”, “th”, “th”, “th”, “th”, “th”, “th”)), ordered = TRUE)

data\(Semester_encoded <- as.numeric(data\)Semester)

data <- data[, !(names(data) %in% c(“Job”, “Semester”, “Income”, “Department”, “Gender”, “Hometown”, “Preparation”, “Gaming”, “Attendance”,“Extra”))]

nrow(data)

head(data) str(data) summary(data)

#Nomalitas library(MVN)

mvn_result <- mvn(data = data, mvnTest = “mardia”) print(mvn_result)

#Multikolinearitas library(car)

Model regresi SEM awal (misal y ~ x1 + x2 + …)

fit_lm <- lm(Preparation_encoded ~ Gender_encoded + Income_encoded + Hometown_encoded + Gaming_encoded + Attendance_encoded + Job_encoded + Extra_encoded + Semester_encoded + Department_encoded, data = data)

vif(fit_lm)

#homoskedasitas plot(fit_lm\(fitted.values, fit_lm\)residuals) abline(h = 0, col = “red”)

#korelasi cor(data)

names(data)[names(data) == “Department_encoded”] <- “dept” names(data)[names(data) == “Gender_encoded”] <- “sex” names(data)[names(data) == “Hometown_encoded”] <- “ht” names(data)[names(data) == “Income_encoded”] <- “inc” names(data)[names(data) == “Semester_encoded”] <- “smt” names(data)[names(data) == “Preparation_encoded”] <- “prep” names(data)[names(data) == “Attendance_encoded”] <- “atd” names(data)[names(data) == “Job_encoded”] <- “job” names(data)[names(data) == “Gaming_encoded”] <- “game” names(data)[names(data) == “Extra_encoded”] <- “ext”

#Model SEM Sederhana model_sem <- ’ # Konstruk Laten (dengan nama ringkas) demo =~ dept + sex + ht + inc + smt ap =~ HSC + SSC + English + Computer collage =~ prep + atd tm =~ job + game + ext

# Hubungan antar konstruk Last ~ demo + ap + collage + tm Overall ~ Last ’

#Estimasi model fit <- sem(model_sem, data = data, std.lv = TRUE) summary(fit, standardized = TRUE, fit.measures = TRUE)

#Visualisasi (aman) semPaths(fit, what = “std”, whatLabel = “par”, style = “ram”, layout = “tree”, edge.label.cex = 0.7, label.cex = 0.7, sizeMan = 4, sizeLat = 5, color = list(lat = c(“orange”), man = rep(“lightblue”, 6)))