Penelitian ini bertujuan menganalisis pengaruh Faktor Sosial Ekonomi dan Aktivitas Belajar terhadap Prestasi Akademik mahasiswa menggunakan pendekatan Confirmatory Factor Analysis (CFA) dan Structural Equation Modeling (SEM). Analisis dilakukan untuk mengetahui hubungan antar konstruk laten serta menguji apakah variabel-variabel yang digunakan mampu merepresentasikan konstruk penelitian secara valid.
Dataset yang digunakan adalah Student Performance & Behavior Dataset dari platform Kaggle yang berisi sekitar 5.000 data mahasiswa. Dataset ini dipilih karena memiliki variabel yang relevan dengan faktor sosial ekonomi, aktivitas belajar, dan prestasi akademik sehingga sesuai untuk dianalisis menggunakan metode CFA dan SEM.
Kerangka Konstruk:
library(psych)
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.3
##
## Attaching package: 'car'
## The following object is masked from 'package:psych':
##
## logit
library(lavaan)
## Warning: package 'lavaan' was built under R version 4.5.3
## This is lavaan 0.6-21
## lavaan is FREE software! Please report any bugs.
##
## Attaching package: 'lavaan'
## The following object is masked from 'package:psych':
##
## cor2cov
library(semPlot)
## Warning: package 'semPlot' was built under R version 4.5.3
library(corrplot)
## corrplot 0.95 loaded
library(ggplot2)
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
##
## recode
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data <- read.csv("C:/Users/LEGION/OneDrive/Documents/Students Performance Dataset.csv", header = TRUE)
head(data)
## Student_ID First_Name Last_Name Email Gender Age
## 1 S1000 Omar Williams student0@university.com Female 22
## 2 S1001 Maria Brown student1@university.com Male 18
## 3 S1002 Ahmed Jones student2@university.com Male 24
## 4 S1003 Omar Williams student3@university.com Female 24
## 5 S1004 John Smith student4@university.com Female 23
## 6 S1005 Liam Brown student5@university.com Male 21
## Department Attendance.... Midterm_Score Final_Score Assignments_Avg
## 1 Mathematics 97.36 40.61 59.61 73.69
## 2 Business 97.71 57.27 74.00 74.23
## 3 Engineering 99.52 41.84 63.85 85.85
## 4 Engineering 90.38 45.65 44.44 68.10
## 5 CS 59.41 53.13 61.77 67.66
## 6 Mathematics 60.60 70.21 64.48 87.85
## Quizzes_Avg Participation_Score Projects_Score Total_Score Grade
## 1 53.17 73.4 62.84 59.8865 F
## 2 98.23 88.0 98.23 81.9170 B
## 3 50.00 4.7 91.22 67.7170 D
## 4 66.27 4.2 55.48 51.6535 F
## 5 83.98 64.3 87.43 71.4030 C
## 6 52.26 54.8 67.65 68.0900 D
## Study_Hours_per_Week Extracurricular_Activities Internet_Access_at_Home
## 1 10.3 Yes No
## 2 27.1 No No
## 3 12.4 Yes No
## 4 25.5 No Yes
## 5 13.3 Yes No
## 6 25.3 Yes No
## Parent_Education_Level Family_Income_Level Stress_Level..1.10.
## 1 Master's Medium 1
## 2 High School Low 4
## 3 High School Low 9
## 4 High School Low 8
## 5 Master's Medium 6
## 6 None Medium 6
## Sleep_Hours_per_Night
## 1 5.9
## 2 4.3
## 3 6.1
## 4 4.9
## 5 4.5
## 6 5.6
Dataset ini memiliki 23 kolom variabel yang berisi informasi
identitas mahasiswa, data akademik, serta faktor sosial dan aktivitas
belajar. Output head(data) menampilkan 6 baris pertama dari total data
yang digunakan. Tipe data yang terdeteksi terdiri atas
dim(data)
## [1] 5000 23
str(data)
## 'data.frame': 5000 obs. of 23 variables:
## $ Student_ID : chr "S1000" "S1001" "S1002" "S1003" ...
## $ First_Name : chr "Omar" "Maria" "Ahmed" "Omar" ...
## $ Last_Name : chr "Williams" "Brown" "Jones" "Williams" ...
## $ Email : chr "student0@university.com" "student1@university.com" "student2@university.com" "student3@university.com" ...
## $ Gender : chr "Female" "Male" "Male" "Female" ...
## $ Age : int 22 18 24 24 23 21 24 19 21 22 ...
## $ Department : chr "Mathematics" "Business" "Engineering" "Engineering" ...
## $ Attendance.... : num 97.4 97.7 99.5 90.4 59.4 ...
## $ Midterm_Score : num 40.6 57.3 41.8 45.6 53.1 ...
## $ Final_Score : num 59.6 74 63.9 44.4 61.8 ...
## $ Assignments_Avg : num 73.7 74.2 85.8 68.1 67.7 ...
## $ Quizzes_Avg : num 53.2 98.2 50 66.3 84 ...
## $ Participation_Score : num 73.4 88 4.7 4.2 64.3 54.8 15.5 54.8 97.4 63.1 ...
## $ Projects_Score : num 62.8 98.2 91.2 55.5 87.4 ...
## $ Total_Score : num 59.9 81.9 67.7 51.7 71.4 ...
## $ Grade : chr "F" "B" "D" "F" ...
## $ Study_Hours_per_Week : num 10.3 27.1 12.4 25.5 13.3 25.3 22.1 16.7 18.1 9.4 ...
## $ Extracurricular_Activities: chr "Yes" "No" "Yes" "No" ...
## $ Internet_Access_at_Home : chr "No" "No" "No" "Yes" ...
## $ Parent_Education_Level : chr "Master's" "High School" "High School" "High School" ...
## $ Family_Income_Level : chr "Medium" "Low" "Low" "Low" ...
## $ Stress_Level..1.10. : int 1 4 9 8 6 6 2 5 9 8 ...
## $ Sleep_Hours_per_Night : num 5.9 4.3 6.1 4.9 4.5 5.6 4 7.8 4.8 7.1 ...
Output dim(data) menunjukkan dataset memiliki 5.000 baris dan 23 kolom. Output str(data) menunjukkan tipe data variabel terdiri atas chr, num, dan int. Variabel chr berisi data teks atau kategori, sedangkan num dan int berisi data numerik.
summary(data)
## Student_ID First_Name Last_Name Email
## Length:5000 Length:5000 Length:5000 Length:5000
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Gender Age Department Attendance....
## Length:5000 Min. :18.00 Length:5000 Min. : 50.01
## Class :character 1st Qu.:19.00 Class :character 1st Qu.: 62.95
## Mode :character Median :21.00 Mode :character Median : 75.67
## Mean :21.05 Mean : 75.36
## 3rd Qu.:23.00 3rd Qu.: 87.86
## Max. :24.00 Max. :100.00
## Midterm_Score Final_Score Assignments_Avg Quizzes_Avg
## Min. :40.00 Min. :40.01 Min. :50.00 Min. :50.00
## 1st Qu.:55.71 1st Qu.:54.70 1st Qu.:62.34 1st Qu.:62.36
## Median :70.86 Median :69.48 Median :75.09 Median :74.91
## Mean :70.70 Mean :69.55 Mean :74.96 Mean :74.84
## 3rd Qu.:85.76 3rd Qu.:83.92 3rd Qu.:87.35 3rd Qu.:87.29
## Max. :99.99 Max. :99.98 Max. :99.99 Max. :99.99
## Participation_Score Projects_Score Total_Score Grade
## Min. : 0.00 Min. : 50.00 Min. :50.60 Length:5000
## 1st Qu.: 25.07 1st Qu.: 61.97 1st Qu.:66.53 Class :character
## Median : 49.60 Median : 74.54 Median :71.70 Mode :character
## Mean : 49.96 Mean : 74.78 Mean :71.65
## 3rd Qu.: 75.50 3rd Qu.: 87.63 3rd Qu.:76.71
## Max. :100.00 Max. :100.00 Max. :95.09
## Study_Hours_per_Week Extracurricular_Activities Internet_Access_at_Home
## Min. : 5.00 Length:5000 Length:5000
## 1st Qu.:11.50 Class :character Class :character
## Median :17.40 Mode :character Mode :character
## Mean :17.52
## 3rd Qu.:23.70
## Max. :30.00
## Parent_Education_Level Family_Income_Level Stress_Level..1.10.
## Length:5000 Length:5000 Min. : 1.000
## Class :character Class :character 1st Qu.: 3.000
## Mode :character Mode :character Median : 6.000
## Mean : 5.507
## 3rd Qu.: 8.000
## Max. :10.000
## Sleep_Hours_per_Night
## Min. :4.000
## 1st Qu.:5.300
## Median :6.500
## Mean :6.514
## 3rd Qu.:7.800
## Max. :9.000
Output summary(data) menunjukkan sebagian besar variabel numerik memiliki sebaran data yang cukup stabil dengan rata-rata berada pada rentang menengah hingga tinggi. Usia mahasiswa berada pada rentang 18–24 tahun dengan rata-rata 21 tahun, sedangkan rata-rata kehadiran mencapai 75.36% dan jam belajar sekitar 17.52 jam per minggu. Nilai akademik seperti Midterm_Score, Final_Score, Assignments_Avg, dan Total_Score juga berada pada rentang cukup baik dengan rata-rata nilai akhir sebesar 71.65.
sum(is.na(data))
## [1] 0
colSums(is.na(data))
## Student_ID First_Name
## 0 0
## Last_Name Email
## 0 0
## Gender Age
## 0 0
## Department Attendance....
## 0 0
## Midterm_Score Final_Score
## 0 0
## Assignments_Avg Quizzes_Avg
## 0 0
## Participation_Score Projects_Score
## 0 0
## Total_Score Grade
## 0 0
## Study_Hours_per_Week Extracurricular_Activities
## 0 0
## Internet_Access_at_Home Parent_Education_Level
## 0 0
## Family_Income_Level Stress_Level..1.10.
## 0 0
## Sleep_Hours_per_Night
## 0
sum(duplicated(data))
## [1] 0
data_clean <- data %>%
select(
Gender,
Age,
Department,
Attendance....,
Midterm_Score,
Final_Score,
Assignments_Avg,
Quizzes_Avg,
Participation_Score,
Projects_Score,
Total_Score,
Grade,
Study_Hours_per_Week,
Extracurricular_Activities,
Internet_Access_at_Home,
Parent_Education_Level,
Family_Income_Level,
Stress_Level..1.10.,
Sleep_Hours_per_Night
)
head(data_clean)
## Gender Age Department Attendance.... Midterm_Score Final_Score
## 1 Female 22 Mathematics 97.36 40.61 59.61
## 2 Male 18 Business 97.71 57.27 74.00
## 3 Male 24 Engineering 99.52 41.84 63.85
## 4 Female 24 Engineering 90.38 45.65 44.44
## 5 Female 23 CS 59.41 53.13 61.77
## 6 Male 21 Mathematics 60.60 70.21 64.48
## Assignments_Avg Quizzes_Avg Participation_Score Projects_Score Total_Score
## 1 73.69 53.17 73.4 62.84 59.8865
## 2 74.23 98.23 88.0 98.23 81.9170
## 3 85.85 50.00 4.7 91.22 67.7170
## 4 68.10 66.27 4.2 55.48 51.6535
## 5 67.66 83.98 64.3 87.43 71.4030
## 6 87.85 52.26 54.8 67.65 68.0900
## Grade Study_Hours_per_Week Extracurricular_Activities Internet_Access_at_Home
## 1 F 10.3 Yes No
## 2 B 27.1 No No
## 3 D 12.4 Yes No
## 4 F 25.5 No Yes
## 5 C 13.3 Yes No
## 6 D 25.3 Yes No
## Parent_Education_Level Family_Income_Level Stress_Level..1.10.
## 1 Master's Medium 1
## 2 High School Low 4
## 3 High School Low 9
## 4 High School Low 8
## 5 Master's Medium 6
## 6 None Medium 6
## Sleep_Hours_per_Night
## 1 5.9
## 2 4.3
## 3 6.1
## 4 4.9
## 5 4.5
## 6 5.6
data_numeric <- data_clean
for(col in colnames(data_numeric)){
if(!is.numeric(data_numeric[[col]])){
data_numeric[[col]] <- as.numeric(as.factor(data_numeric[[col]]))
}
}
str(data_numeric)
## 'data.frame': 5000 obs. of 19 variables:
## $ Gender : num 1 2 2 1 1 2 2 2 1 1 ...
## $ Age : int 22 18 24 24 23 21 24 19 21 22 ...
## $ Department : num 4 1 3 3 2 4 1 3 2 1 ...
## $ Attendance.... : num 97.4 97.7 99.5 90.4 59.4 ...
## $ Midterm_Score : num 40.6 57.3 41.8 45.6 53.1 ...
## $ Final_Score : num 59.6 74 63.9 44.4 61.8 ...
## $ Assignments_Avg : num 73.7 74.2 85.8 68.1 67.7 ...
## $ Quizzes_Avg : num 53.2 98.2 50 66.3 84 ...
## $ Participation_Score : num 73.4 88 4.7 4.2 64.3 54.8 15.5 54.8 97.4 63.1 ...
## $ Projects_Score : num 62.8 98.2 91.2 55.5 87.4 ...
## $ Total_Score : num 59.9 81.9 67.7 51.7 71.4 ...
## $ Grade : num 5 2 4 5 3 4 2 3 4 2 ...
## $ Study_Hours_per_Week : num 10.3 27.1 12.4 25.5 13.3 25.3 22.1 16.7 18.1 9.4 ...
## $ Extracurricular_Activities: num 2 1 2 1 2 2 2 2 1 2 ...
## $ Internet_Access_at_Home : num 1 1 1 2 1 1 1 2 2 1 ...
## $ Parent_Education_Level : num 3 2 2 2 3 4 1 4 5 4 ...
## $ Family_Income_Level : num 3 2 2 2 3 3 1 2 1 1 ...
## $ Stress_Level..1.10. : int 1 4 9 8 6 6 2 5 9 8 ...
## $ Sleep_Hours_per_Night : num 5.9 4.3 6.1 4.9 4.5 5.6 4 7.8 4.8 7.1 ...
Output preprocessing menunjukkan jumlah kolom berkurang dari 23 menjadi 19 setelah variabel identitas seperti Student_ID, First_Name, Last_Name, dan Email dihapus. Selanjutnya, seluruh variabel kategorik berhasil dikonversi menjadi numerik menggunakan as.factor() dan as.numeric() sehingga data dapat digunakan dalam analisis CFA dan SEM.
summary(data_numeric)
## Gender Age Department Attendance....
## Min. :1.00 Min. :18.00 Min. :1.000 Min. : 50.01
## 1st Qu.:1.00 1st Qu.:19.00 1st Qu.:1.000 1st Qu.: 62.95
## Median :2.00 Median :21.00 Median :2.000 Median : 75.67
## Mean :1.51 Mean :21.05 Mean :2.491 Mean : 75.36
## 3rd Qu.:2.00 3rd Qu.:23.00 3rd Qu.:3.000 3rd Qu.: 87.86
## Max. :2.00 Max. :24.00 Max. :4.000 Max. :100.00
## Midterm_Score Final_Score Assignments_Avg Quizzes_Avg
## Min. :40.00 Min. :40.01 Min. :50.00 Min. :50.00
## 1st Qu.:55.71 1st Qu.:54.70 1st Qu.:62.34 1st Qu.:62.36
## Median :70.86 Median :69.48 Median :75.09 Median :74.91
## Mean :70.70 Mean :69.55 Mean :74.96 Mean :74.84
## 3rd Qu.:85.76 3rd Qu.:83.92 3rd Qu.:87.35 3rd Qu.:87.29
## Max. :99.99 Max. :99.98 Max. :99.99 Max. :99.99
## Participation_Score Projects_Score Total_Score Grade
## Min. : 0.00 Min. : 50.00 Min. :50.60 Min. :1.00
## 1st Qu.: 25.07 1st Qu.: 61.97 1st Qu.:66.53 1st Qu.:3.00
## Median : 49.60 Median : 74.54 Median :71.70 Median :3.00
## Mean : 49.96 Mean : 74.78 Mean :71.65 Mean :3.33
## 3rd Qu.: 75.50 3rd Qu.: 87.63 3rd Qu.:76.71 3rd Qu.:4.00
## Max. :100.00 Max. :100.00 Max. :95.09 Max. :5.00
## Study_Hours_per_Week Extracurricular_Activities Internet_Access_at_Home
## Min. : 5.00 Min. :1.000 Min. :1.000
## 1st Qu.:11.50 1st Qu.:1.000 1st Qu.:1.000
## Median :17.40 Median :2.000 Median :2.000
## Mean :17.52 Mean :1.502 Mean :1.504
## 3rd Qu.:23.70 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :30.00 Max. :2.000 Max. :2.000
## Parent_Education_Level Family_Income_Level Stress_Level..1.10.
## Min. :1.000 Min. :1.000 Min. : 1.000
## 1st Qu.:2.000 1st Qu.:1.000 1st Qu.: 3.000
## Median :3.000 Median :2.000 Median : 6.000
## Mean :3.013 Mean :2.007 Mean : 5.507
## 3rd Qu.:4.000 3rd Qu.:3.000 3rd Qu.: 8.000
## Max. :5.000 Max. :3.000 Max. :10.000
## Sleep_Hours_per_Night
## Min. :4.000
## 1st Qu.:5.300
## Median :6.500
## Mean :6.514
## 3rd Qu.:7.800
## Max. :9.000
describe(data_numeric)
## vars n mean sd median trimmed mad min
## Gender 1 5000 1.51 0.50 2.00 1.51 0.00 1.00
## Age 2 5000 21.05 1.99 21.00 21.06 2.97 18.00
## Department 3 5000 2.49 1.12 2.00 2.49 1.48 1.00
## Attendance.... 4 5000 75.36 14.39 75.67 75.44 18.37 50.01
## Midterm_Score 5 5000 70.70 17.44 70.86 70.83 22.19 40.00
## Final_Score 6 5000 69.55 17.11 69.48 69.45 21.56 40.01
## Assignments_Avg 7 5000 74.96 14.40 75.09 74.94 18.47 50.00
## Quizzes_Avg 8 5000 74.84 14.42 74.90 74.81 18.42 50.00
## Participation_Score 9 5000 49.96 28.99 49.60 49.93 37.36 0.00
## Projects_Score 10 5000 74.78 14.54 74.54 74.73 19.04 50.00
## Total_Score 11 5000 71.65 7.23 71.70 71.65 7.52 50.60
## Grade 12 5000 3.33 0.78 3.00 3.35 1.48 1.00
## Study_Hours_per_Week 13 5000 17.52 7.19 17.40 17.53 9.04 5.00
## Extracurricular_Activities 14 5000 1.50 0.50 2.00 1.50 0.00 1.00
## Internet_Access_at_Home 15 5000 1.50 0.50 2.00 1.50 0.00 1.00
## Parent_Education_Level 16 5000 3.01 1.42 3.00 3.02 1.48 1.00
## Family_Income_Level 17 5000 2.01 0.81 2.00 2.01 1.48 1.00
## Stress_Level..1.10. 18 5000 5.51 2.89 6.00 5.51 4.45 1.00
## Sleep_Hours_per_Night 19 5000 6.51 1.45 6.50 6.52 1.93 4.00
## max range skew kurtosis se
## Gender 2.00 1.00 -0.04 -2.00 0.01
## Age 24.00 6.00 -0.04 -1.24 0.03
## Department 4.00 3.00 0.00 -1.36 0.02
## Attendance.... 100.00 49.99 -0.04 -1.19 0.20
## Midterm_Score 99.99 59.99 -0.05 -1.20 0.25
## Final_Score 99.98 59.97 0.03 -1.18 0.24
## Assignments_Avg 99.99 49.99 0.01 -1.20 0.20
## Quizzes_Avg 99.99 49.99 0.01 -1.20 0.20
## Participation_Score 100.00 100.00 0.01 -1.21 0.41
## Projects_Score 100.00 50.00 0.03 -1.24 0.21
## Total_Score 95.09 44.49 0.00 -0.36 0.10
## Grade 5.00 4.00 0.02 -0.28 0.01
## Study_Hours_per_Week 30.00 25.00 0.01 -1.19 0.10
## Extracurricular_Activities 2.00 1.00 -0.01 -2.00 0.01
## Internet_Access_at_Home 2.00 1.00 -0.02 -2.00 0.01
## Parent_Education_Level 5.00 4.00 -0.03 -1.31 0.02
## Family_Income_Level 3.00 2.00 -0.01 -1.49 0.01
## Stress_Level..1.10. 10.00 9.00 -0.01 -1.23 0.04
## Sleep_Hours_per_Night 9.00 5.00 -0.01 -1.21 0.02
Output summary() dan describe() menunjukkan distribusi data cukup stabil setelah preprocessing. Variabel akademik seperti Midterm_Score dan Final_Score memiliki rata-rata sekitar 70 dengan standar deviasi sekitar 17, sedangkan Assignments_Avg dan Projects_Score memiliki rata-rata sekitar 74 dengan standar deviasi sekitar 14. Selain itu, nilai mean dan trimmed mean yang hampir sama, seperti pada Midterm_Score (70.70 dan 70.83), menunjukkan data relatif simetris dan minim outlier.
options(repr.plot.width = 16, repr.plot.height = 12)
par(mfrow = c(4,5), mar = c(3,3,2,1))
for(col in colnames(data_numeric)){
hist(
data_numeric[[col]],
main = col,
col = "lightblue",
border = "black",
xlab = ""
)
}
par(mfrow = c(1,1))
Hasil histogram menunjukkan sebagian besar variabel numerik memiliki distribusi yang cukup merata, sedangkan Total_Score membentuk pola mendekati distribusi normal dengan pusat data pada rentang nilai sekitar 70–72. Variabel seperti Midterm_Score, Final_Score, Assignments_Avg, dan Study_Hours_per_Week menunjukkan sebaran data yang relatif stabil tanpa penumpukan ekstrem pada nilai tertentu.
Sementara itu, variabel kategorik hasil label encoding seperti Gender, Internet_Access_at_Home, dan Extracurricular_Activities membentuk pola batang diskrit sesuai jumlah kategorinya. Distribusi pada variabel tersebut terlihat cukup seimbang antar kategori sehingga tidak menunjukkan dominasi kelompok tertentu dalam dataset.
num_data <- data_numeric |>
select(where(is.numeric)) |>
na.omit()
cor_mat <- cor(num_data, use = "complete.obs")
corrplot(
cor_mat,
method = "color",
type = "upper",
col = colorRampPalette(c("#D73027", "white", "#1A6FBF"))(200),
addCoef.col = "black",
number.cex = 0.42,
number.digits = 1,
tl.cex = 0.6,
tl.srt = 45,
tl.col = "black",
outline = TRUE,
title = "Matriks Korelasi Variabel Numerik",
mar = c(0,0,2,0)
)
Hasil matriks korelasi menunjukkan hubungan paling kuat terjadi pada variabel akademik, terutama antara Total_Score dengan Projects_Score dan Final_Score yang memiliki korelasi sekitar r = 0.6. Korelasi moderat juga terlihat pada Midterm_Score dan Assignments_Avg terhadap Total_Score dengan nilai sekitar r = 0.3.
Selain itu, Grade memiliki korelasi negatif sangat kuat terhadap Total_Score sebesar r = -0.9 karena hasil label encoding membuat nilai grade semakin kecil ketika prestasi semakin tinggi. Sementara itu, sebagian besar variabel non-akademik seperti Gender, Age, Study_Hours_per_Week, dan Stress_Level menunjukkan korelasi mendekati 0, sehingga hubungan linear antar variabel tersebut sangat lemah.
data_z <- as.data.frame(scale(data_numeric))
head(data_z)
## Gender Age Department Attendance.... Midterm_Score Final_Score
## 1 -1.0205103 0.47824233 1.3522343 1.528824 -1.7258181 -0.5807794
## 2 0.9797059 -1.53202386 -1.3364607 1.553141 -0.7703415 0.2602986
## 3 0.9797059 1.48337542 0.4560027 1.678900 -1.6552757 -0.3329565
## 4 -1.0205103 1.48337542 0.4560027 1.043856 -1.4367663 -1.4674475
## 5 -1.0205103 0.98080887 -0.4402290 -1.107927 -1.0077768 -0.4545300
## 6 0.9797059 -0.02432422 1.3522343 -1.025246 -0.0282126 -0.2961338
## Assignments_Avg Quizzes_Avg Participation_Score Projects_Score Total_Score
## 1 -0.08791271 -1.5021106 0.8084324 -0.8212555 -1.62730823
## 2 -0.05042388 1.6218825 1.3120580 1.6123131 1.41974616
## 3 0.75628039 -1.7218855 -1.5613679 1.1302754 -0.54426611
## 4 -0.47599161 -0.5938924 -1.5786154 -1.3273607 -2.76602042
## 5 -0.50653808 0.6339353 0.4945287 0.8696587 -0.03445279
## 6 0.89512793 -1.5652005 0.1668270 -0.4904992 -0.49267621
## Grade Study_Hours_per_Week Extracurricular_Activities
## 1 2.1438561 -1.0039073 0.9951119
## 2 -1.7064602 1.3316855 -1.0047111
## 3 0.8604174 -0.7119582 0.9951119
## 4 2.1438561 1.1092481 -1.0047111
## 5 -0.4230214 -0.5868372 0.9951119
## 6 0.8604174 1.0814434 0.9951119
## Internet_Access_at_Home Parent_Education_Level Family_Income_Level
## 1 -1.0079314 -0.009288799 1.219821146
## 2 -1.0079314 -0.712985696 -0.008598941
## 3 -1.0079314 -0.712985696 -0.008598941
## 4 0.9919325 -0.712985696 -0.008598941
## 5 -1.0079314 -0.009288799 1.219821146
## 6 -1.0079314 0.694408098 1.219821146
## Stress_Level..1.10. Sleep_Hours_per_Night
## 1 -1.5613885 -0.4248645
## 2 -0.5221256 -1.5312466
## 3 1.2099791 -0.2865668
## 4 0.8635581 -1.1163534
## 5 0.1707162 -1.3929489
## 6 0.1707162 -0.6323112
Output normalisasi Z-Score menunjukkan seluruh variabel berhasil distandardisasi sehingga memiliki mean = 0 dan sd = 1. Nilai positif menunjukkan data di atas rata-rata, sedangkan nilai negatif berada di bawah rata-rata. Standardisasi ini membuat seluruh variabel memiliki skala yang sama sehingga analisis CFA dan SEM menjadi lebih stabil.
data_mardia <- data_z[, c(
"Attendance....",
"Study_Hours_per_Week",
"Participation_Score",
"Parent_Education_Level",
"Family_Income_Level",
"Internet_Access_at_Home",
"Stress_Level..1.10.",
"Sleep_Hours_per_Night",
"Midterm_Score",
"Final_Score"
)]
mardia(data_mardia)
## Call: mardia(x = data_mardia)
##
## Mardia tests of multivariate skew and kurtosis
## Use describe(x) the to get univariate tests
## n.obs = 5000 num.vars = 10
## b1p = 0.19 skew = 159.71 with probability <= 1
## small sample skew = 159.83 with probability <= 1
## b2p = 106.57 kurtosis = -30.65 with probability <= 0
Hasil mardia() dan Q-Q Plot menunjukkan data cenderung mendekati distribusi normal karena sebagian besar titik mengikuti garis diagonal. Uji skewness memenuhi asumsi normalitas (p-value > 0.05), sedangkan kurtosis menunjukkan sedikit penyimpangan normalitas (p-value < 0.05). Namun, dengan jumlah sampel sebesar 5000, data masih layak digunakan untuk analisis CFA dan SEM.
model_vif <- lm(
Total_Score ~
Attendance.... +
Study_Hours_per_Week +
Participation_Score +
Parent_Education_Level +
Family_Income_Level +
Internet_Access_at_Home +
Stress_Level..1.10. +
Sleep_Hours_per_Night,
data = data_numeric
)
vif(model_vif)
## Attendance.... Study_Hours_per_Week Participation_Score
## 1.000799 1.000806 1.001076
## Parent_Education_Level Family_Income_Level Internet_Access_at_Home
## 1.000735 1.002174 1.002225
## Stress_Level..1.10. Sleep_Hours_per_Night
## 1.001266 1.000584
Hasil uji multikolinearitas menunjukkan seluruh variabel memiliki nilai VIF di sekitar 1.000–1.002. Nilai tersebut jauh di bawah batas kritis 5, sehingga tidak terdapat masalah multikolinearitas antar variabel prediktor. Dengan demikian, seluruh variabel layak digunakan dalam analisis CFA dan SEM.
data_kmo <- data_z[, c(
"Parent_Education_Level",
"Family_Income_Level",
"Internet_Access_at_Home",
"Attendance....",
"Study_Hours_per_Week",
"Participation_Score",
"Assignments_Avg",
"Midterm_Score",
"Final_Score",
"Projects_Score"
)]
cor_matrix <- cor(data_kmo)
KMO(cor_matrix)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor_matrix)
## Overall MSA = 0.51
## MSA for each item =
## Parent_Education_Level Family_Income_Level Internet_Access_at_Home
## 0.50 0.50 0.51
## Attendance.... Study_Hours_per_Week Participation_Score
## 0.51 0.52 0.51
## Assignments_Avg Midterm_Score Final_Score
## 0.51 0.52 0.50
## Projects_Score
## 0.51
Hasil uji KMO menunjukkan nilai MSA = 0.51, sehingga data masih memenuhi batas minimal untuk dilakukan analisis faktor dan CFA. Nilai MSA tiap variabel juga berada pada rentang 0.50–0.52, yang menunjukkan tingkat kecukupan sampel tergolong rendah namun masih dapat diterima.
Nilai KMO yang rendah disebabkan korelasi antar variabel cenderung lemah, sesuai hasil corrplot dan VIF sebelumnya. Meskipun demikian, data tetap dapat digunakan untuk analisis CFA dan SEM karena nilai KMO masih berada di atas batas minimum 0.50.
Diukur oleh: - Parent_Education_Level - Family_Income_Level - Internet_Access_at_Home
Diukur oleh: - Attendance…. - Study_Hours_per_Week - Participation_Score - Assignments_Avg
Diukur oleh: - Midterm_Score - Final_Score - Projects_Score - Total_Score
model_cfa_x1 <- '
AktivitasBelajar =~
Attendance.... +
Study_Hours_per_Week +
Participation_Score +
Assignments_Avg
'
fit_x1 <- cfa(
model_cfa_x1,
data = data_z,
std.lv = TRUE
)
summary(
fit_x1,
fit.measures = TRUE,
standardized = TRUE
)
## lavaan 0.6-21 ended normally after 36 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 8
##
## Number of observations 5000
##
## Model Test User Model:
##
## Test statistic 1.113
## Degrees of freedom 2
## P-value (Chi-square) 0.573
##
## Model Test Baseline Model:
##
## Test statistic 4.441
## Degrees of freedom 6
## P-value 0.617
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) -0.707
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -28375.107
## Loglikelihood unrestricted model (H1) -28374.550
##
## Akaike (AIC) 56766.213
## Bayesian (BIC) 56818.351
## Sample-size adjusted Bayesian (SABIC) 56792.929
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.024
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.005
##
## 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
## AktivitasBelajar =~
## Attendance.... -0.005 0.067 -0.073 0.942 -0.005 -0.005
## Stdy_Hrs_pr_Wk -0.090 0.080 -1.128 0.259 -0.090 -0.090
## Participtn_Scr 0.140 0.123 1.140 0.254 0.140 0.140
## Assignmnts_Avg 0.136 0.119 1.139 0.255 0.136 0.136
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Attendance.... 1.000 0.020 49.975 0.000 1.000 1.000
## .Stdy_Hrs_pr_Wk 0.992 0.024 40.603 0.000 0.992 0.992
## .Participtn_Scr 0.980 0.039 24.963 0.000 0.980 0.980
## .Assignmnts_Avg 0.981 0.038 26.060 0.000 0.981 0.982
## AktivitasBeljr 1.000 1.000 1.000
Hasil CFA menunjukkan model memiliki nilai fit yang sangat baik dengan Chi-square p-value = 0.573, RMSEA = 0.000, SRMR = 0.005, dan CFI = 1.000. Namun, nilai TLI = -0.707 menunjukkan adanya anomali akibat korelasi antar indikator yang sangat lemah.
Seluruh indikator pada konstruk AktivitasBelajar juga tidak signifikan karena memiliki p-value > 0.05 dengan standardized loading sangat rendah, yaitu Attendance = -0.005, Study_Hours_per_Week = -0.090, Participation_Score = 0.140, dan Assignments_Avg = 0.136. Hal ini menunjukkan indikator belum mampu membentuk konstruk laten AktivitasBelajar secara valid.
semPaths(
object = fit_x1,
what = "path",
whatLabels = "std",
style = "ram",
layout = "tree",
rotation = 2,
sizeLat = 8,
sizeMan = 7,
edge.label.cex = 1,
color = list(
lat = "lightblue",
man = "lightgreen"
)
)
Visualisasi semPaths menunjukkan hubungan antara konstruk laten AktivitasBelajar dengan indikatornya memiliki loading factor yang sangat rendah, yaitu Assignments_Avg = 0.14, Participation_Score = 0.14, Study_Hours_per_Week = -0.09, dan Attendance = -0.00. Nilai tersebut berada jauh di bawah batas ideal CFA (≥ 0.50).
Selain itu, nilai error variance pada seluruh indikator sangat tinggi, yaitu sekitar 0.98–1.00. Hal ini menunjukkan sebagian besar varians indikator tidak dapat dijelaskan oleh konstruk laten AktivitasBelajar, sehingga model pengukuran belum valid secara konstruk.
model_cfa_x2 <- '
KondisiPersonal =~
Stress_Level..1.10. +
Sleep_Hours_per_Night +
Extracurricular_Activities
'
fit_x2 <- cfa(
model_cfa_x2,
data = data_z,
std.lv = TRUE
)
summary(
fit_x2,
fit.measures = TRUE,
standardized = TRUE
)
## lavaan 0.6-21 ended normally after 38 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 6
##
## Number of observations 5000
##
## Model Test User Model:
##
## Test statistic 0.000
## Degrees of freedom 0
##
## Model Test Baseline Model:
##
## Test statistic 2.427
## Degrees of freedom 3
## P-value 0.489
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) 1.000
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -21281.364
## Loglikelihood unrestricted model (H1) -21281.364
##
## Akaike (AIC) 42574.728
## Bayesian (BIC) 42613.832
## Sample-size adjusted Bayesian (SABIC) 42594.766
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.000
## P-value H_0: RMSEA <= 0.050 NA
## P-value H_0: RMSEA >= 0.080 NA
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.000
##
## 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
## KondisiPersonal =~
## Strss_L..1.10. 0.153 0.167 0.914 0.360 0.153 0.153
## Slp_Hrs_pr_Ngh 0.108 0.118 0.911 0.362 0.108 0.108
## Extrcrrclr_Act -0.079 0.087 -0.906 0.365 -0.079 -0.079
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Strss_L..1.10. 0.977 0.054 17.971 0.000 0.977 0.977
## .Slp_Hrs_pr_Ngh 0.988 0.032 30.773 0.000 0.988 0.988
## .Extrcrrclr_Act 0.994 0.024 41.227 0.000 0.994 0.994
## KondisiPersonl 1.000 1.000 1.000
semPaths(
object = fit_x2,
what = "path",
whatLabels = "std",
style = "ram",
layout = "tree",
rotation = 2,
sizeLat = 8,
sizeMan = 7,
edge.label.cex = 1,
color = list(
lat = "lightpink",
man = "lightyellow"
)
)
Hasil CFA pada konstruk KondisiPersonal menunjukkan model bersifat just-identified dengan df = 0, sehingga seluruh indeks fit seperti CFI = 1.000, TLI = 1.000, RMSEA = 0.000, dan SRMR = 0.000 menjadi sempurna secara matematis.
Namun, seluruh indikator tidak signifikan karena memiliki p-value > 0.05 dengan loading factor sangat rendah, yaitu Stress_Level = 0.153, Sleep_Hours_per_Night = 0.108, dan Extracurricular_Activities = -0.079. Selain itu, error variance sangat tinggi (0.977–0.994), sehingga indikator belum mampu membentuk konstruk laten KondisiPersonal secara valid.
model_cfa_y <- '
PrestasiAkademik =~
Midterm_Score +
Final_Score +
Projects_Score +
Quizzes_Avg
'
fit_y <- cfa(
model_cfa_y,
data = data_z,
std.lv = TRUE
)
summary(
fit_y,
fit.measures = TRUE,
standardized = TRUE
)
## lavaan 0.6-21 ended normally after 42 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 8
##
## Number of observations 5000
##
## Model Test User Model:
##
## Test statistic 0.357
## Degrees of freedom 2
## P-value (Chi-square) 0.836
##
## Model Test Baseline Model:
##
## Test statistic 4.363
## Degrees of freedom 6
## P-value 0.628
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) -2.011
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -28374.768
## Loglikelihood unrestricted model (H1) -28374.589
##
## Akaike (AIC) 56765.535
## Bayesian (BIC) 56817.673
## Sample-size adjusted Bayesian (SABIC) 56792.251
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.016
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.003
##
## 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
## PrestasiAkademik =~
## Midterm_Score 0.465 1.976 0.235 0.814 0.465 0.465
## Final_Score -0.009 0.048 -0.189 0.850 -0.009 -0.009
## Projects_Score -0.052 0.221 -0.235 0.814 -0.052 -0.052
## Quizzes_Avg -0.030 0.130 -0.233 0.815 -0.030 -0.030
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Midterm_Score 0.784 1.837 0.427 0.670 0.784 0.784
## .Final_Score 1.000 0.020 49.955 0.000 1.000 1.000
## .Projects_Score 0.997 0.030 32.875 0.000 0.997 0.997
## .Quizzes_Avg 0.999 0.021 46.495 0.000 0.999 0.999
## PrestasiAkadmk 1.000 1.000 1.000
semPaths(
object = fit_y,
what = "path",
whatLabels = "std",
style = "ram",
layout = "tree",
rotation = 2,
sizeLat = 8,
sizeMan = 7,
edge.label.cex = 1,
color = list(
lat = "lightcoral",
man = "lightcyan"
)
)
Hasil CFA pada konstruk PrestasiAkademik menunjukkan seluruh indikator tidak signifikan karena memiliki p-value > 0.05. Nilai loading factor juga sangat lemah, yaitu Midterm_Score = 0.465, Final_Score = -0.009, Projects_Score = -0.052, dan Quizzes_Avg = -0.030.
Meskipun indeks fit seperti CFI = 1.000, RMSEA = 0.000, dan SRMR = 0.003 terlihat sangat baik, nilai TLI = -2.011 menunjukkan adanya anomali akibat korelasi antar indikator yang sangat rendah. Selain itu, error variance pada indikator mendekati 1.00, sehingga konstruk PrestasiAkademik belum terbentuk secara valid.
cfa_fit <- data.frame(
Konstruk = c(
"Faktor Sosial Ekonomi",
"Aktivitas Belajar",
"Prestasi Akademik"
),
CFI = c(
fitMeasures(fit_x1, "cfi"),
fitMeasures(fit_x2, "cfi"),
fitMeasures(fit_y, "cfi")
),
RMSEA = c(
fitMeasures(fit_x1, "rmsea"),
fitMeasures(fit_x2, "rmsea"),
fitMeasures(fit_y, "rmsea")
),
SRMR = c(
fitMeasures(fit_x1, "srmr"),
fitMeasures(fit_x2, "srmr"),
fitMeasures(fit_y, "srmr")
),
TLI = c(
fitMeasures(fit_x1, "tli"),
fitMeasures(fit_x2, "tli"),
fitMeasures(fit_y, "tli")
)
)
cfa_fit
## Konstruk CFI RMSEA SRMR TLI
## 1 Faktor Sosial Ekonomi 1 0 4.684779e-03 -0.7067298
## 2 Aktivitas Belajar 1 0 3.508876e-09 1.0000000
## 3 Prestasi Akademik 1 0 2.667298e-03 -2.0105760
Ringkasan fit indeks CFA menunjukkan seluruh konstruk memiliki nilai CFI = 1.000 dan RMSEA = 0.000, namun hasil tersebut tidak langsung menandakan model valid. Pada konstruk Aktivitas Belajar, model bersifat just-identified (df = 0) sehingga indeks fit menjadi sempurna secara matematis.
Selain itu, nilai TLI yang negatif pada beberapa konstruk, seperti -0.707 dan -2.011, menunjukkan korelasi antar indikator sangat lemah atau hampir tidak ada. Kondisi ini menandakan indikator-indikator dalam dataset belum mampu membentuk konstruk laten secara baik sehingga validitas model CFA masih rendah.
hitung_CR <- function(fit){
std <- standardizedSolution(fit)
lambda <- std$est[std$op == "=~"]
theta <- 1 - lambda^2
CR <- sum(lambda)^2 / (sum(lambda)^2 + sum(theta))
return(CR)
}
CR_x1 <- hitung_CR(fit_x1)
CR_x2 <- hitung_CR(fit_x2)
CR_y <- hitung_CR(fit_y)
cr_result <- data.frame(
Konstruk = c(
"Faktor Sosial Ekonomi",
"Aktivitas Belajar",
"Prestasi Akademik"
),
Composite_Reliability = c(
CR_x1,
CR_x2,
CR_y
)
)
cr_result
## Konstruk Composite_Reliability
## 1 Faktor Sosial Ekonomi 0.008150031
## 2 Aktivitas Belajar 0.010977931
## 3 Prestasi Akademik 0.035571209
Hasil Composite Reliability (CR) menunjukkan seluruh konstruk tidak reliabel karena memiliki nilai jauh di bawah batas ideal 0.70. Konstruk Faktor Sosial Ekonomi memiliki CR sebesar 0.0081, Aktivitas Belajar sebesar 0.0109, dan Prestasi Akademik sebesar 0.0355. Nilai CR yang sangat rendah ini disebabkan loading factor indikator yang mendekati nol serta error variance yang sangat tinggi (≈0.98–1.00), sehingga indikator gagal secara konsisten mengukur konstruk laten yang sama.
model_sem <- '
AktivitasBelajar =~
Attendance.... +
Study_Hours_per_Week +
Participation_Score +
Assignments_Avg
KondisiPersonal =~
Stress_Level..1.10. +
Sleep_Hours_per_Night +
Extracurricular_Activities
PrestasiAkademik =~
Midterm_Score +
Final_Score +
Projects_Score +
Quizzes_Avg
PrestasiAkademik ~ AktivitasBelajar + KondisiPersonal
'
fit_sem <- sem(
model_sem,
data = data_z,
std.lv = TRUE
)
summary(
fit_sem,
fit.measures = TRUE,
standardized = TRUE
)
## lavaan 0.6-21 ended normally after 102 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 25
##
## Number of observations 5000
##
## Model Test User Model:
##
## Test statistic 27.278
## Degrees of freedom 41
## P-value (Chi-square) 0.951
##
## Model Test Baseline Model:
##
## Test statistic 49.440
## Degrees of freedom 55
## P-value 0.686
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) -2.311
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -78025.038
## Loglikelihood unrestricted model (H1) -78011.399
##
## Akaike (AIC) 156100.075
## Bayesian (BIC) 156263.005
## Sample-size adjusted Bayesian (SABIC) 156183.564
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.000
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.009
##
## 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
## AktivitasBelajar =~
## Attendance.... -0.032 0.053 -0.607 0.544 -0.032 -0.032
## Stdy_Hrs_pr_Wk -0.074 0.055 -1.347 0.178 -0.074 -0.074
## Participtn_Scr 0.107 0.060 1.793 0.073 0.107 0.107
## Assignmnts_Avg 0.174 0.085 2.062 0.039 0.174 0.175
## KondisiPersonal =~
## Strss_L..1.10. 0.225 0.145 1.555 0.120 0.225 0.225
## Slp_Hrs_pr_Ngh 0.084 0.059 1.423 0.155 0.084 0.084
## Extrcrrclr_Act -0.038 0.052 -0.734 0.463 -0.038 -0.038
## PrestasiAkademik =~
## Midterm_Score 0.245 0.290 0.844 0.399 0.336 0.336
## Final_Score -0.010 0.028 -0.352 0.725 -0.014 -0.014
## Projects_Score -0.053 0.036 -1.462 0.144 -0.072 -0.072
## Quizzes_Avg -0.029 0.031 -0.940 0.347 -0.040 -0.040
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## PrestasiAkademik ~
## AktivitasBeljr -0.749 1.047 -0.715 0.475 -0.547 -0.547
## KondisiPersonl 0.665 1.006 0.662 0.508 0.485 0.485
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## AktivitasBelajar ~~
## KondisiPersonl 0.125 0.280 0.448 0.654 0.125 0.125
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Attendance.... 0.999 0.020 49.356 0.000 0.999 0.999
## .Stdy_Hrs_pr_Wk 0.994 0.021 46.420 0.000 0.994 0.994
## .Participtn_Scr 0.988 0.023 42.397 0.000 0.988 0.989
## .Assignmnts_Avg 0.969 0.035 27.702 0.000 0.969 0.970
## .Strss_L..1.10. 0.949 0.067 14.083 0.000 0.949 0.949
## .Slp_Hrs_pr_Ngh 0.993 0.022 45.005 0.000 0.993 0.993
## .Extrcrrclr_Act 0.998 0.020 49.089 0.000 0.998 0.999
## .Midterm_Score 0.887 0.141 6.307 0.000 0.887 0.887
## .Final_Score 1.000 0.020 49.938 0.000 1.000 1.000
## .Projects_Score 0.995 0.021 47.169 0.000 0.995 0.995
## .Quizzes_Avg 0.998 0.020 49.394 0.000 0.998 0.998
## AktivitasBeljr 1.000 1.000 1.000
## KondisiPersonl 1.000 1.000 1.000
## .PrestasiAkadmk 1.000 0.532 0.532
Hasil Full SEM menunjukkan bahwa seluruh hubungan antar konstruk tidak signifikan. Aktivitas Belajar tidak berpengaruh terhadap Prestasi Akademik (β = −0.547; p = 0.475), Kondisi Personal juga tidak berpengaruh signifikan (β = 0.485; p = 0.508), serta hubungan antar variabel eksogen tidak signifikan (r = 0.125; p = 0.654).
Meskipun indeks fit seperti CFI = 1.000 dan RMSEA = 0.000 terlihat baik, nilai TLI = −2.311 menunjukkan model sebenarnya tidak stabil. Secara keseluruhan, model SEM gagal membentuk hubungan kausal karena indikator dalam dataset cenderung tidak saling berkorelasi.
fitMeasures(
fit_sem,
c(
"chisq",
"df",
"pvalue",
"cfi",
"tli",
"rmsea",
"srmr"
)
)
## chisq df pvalue cfi tli rmsea srmr
## 27.278 41.000 0.951 1.000 -2.311 0.000 0.009
semPaths(
object = fit_sem,
what = "path",
whatLabels = "std",
style = "ram",
layout = "tree",
rotation = 2,
sizeLat = 8,
sizeMan = 7,
edge.label.cex = 1,
label.cex = 1,
color = list(
lat = "lightblue",
man = "lightgreen"
)
)
Diagram jalur SEM menunjukkan hubungan antar konstruk laten cenderung lemah dan tidak signifikan. Kondisi Personal terhadap Prestasi Akademik memiliki koefisien 0.49 dengan p-value 0.508, sedangkan Aktivitas Belajar terhadap Prestasi Akademik memiliki koefisien −0.55 dengan p-value 0.475. Hubungan antara Kondisi Personal dan Aktivitas Belajar juga lemah dengan korelasi 0.13 dan p-value 0.654.
Loading factor indikator pada masing-masing konstruk juga rendah, seperti Midterm_Score sebesar 0.34, Assignments_Avg sebesar 0.17, dan Stress_Level sebesar 0.22. Selain itu, sebagian besar error variance berada pada kisaran 0.99–1.00, sehingga variansi indikator sebagian besar tidak dapat dijelaskan oleh konstruk laten.
Confirmatory Factor Analysis (CFA) digunakan untuk menguji validitas dan reliabilitas indikator dalam merefleksikan konstruk laten. Hasil pengujian menunjukkan seluruh konstruk mengalami masalah validitas dan reliabilitas.
Konstruk Faktor Sosial Ekonomi (X1):
Konstruk Faktor Sosial Ekonomi menghasilkan nilai CFI = 1.000, RMSEA = 0.000, SRMR = 0.005, dan TLI = −0.707 yang menunjukkan model tidak stabil.
Seluruh indikator memiliki loading factor tidak signifikan (p > 0.05) dengan error variance sangat tinggi, yaitu 0.98–1.00.
Nilai Composite Reliability (CR) sebesar 0.00815 menunjukkan konstruk tidak reliabel.
Konstruk Aktivitas Belajar (X2):
Konstruk Aktivitas Belajar memiliki status Just-Identified (df = 0), sehingga indeks fit menjadi sempurna secara otomatis.
Seluruh indikator memiliki loading factor sangat rendah dan tidak signifikan (p > 0.05).
Nilai Composite Reliability (CR) sebesar 0.01098 menunjukkan indikator tidak konsisten dalam membentuk konstruk laten.
Konstruk Prestasi Akademik (Y):
Konstruk Prestasi Akademik menghasilkan nilai TLI = −2.011 yang menunjukkan model tidak stabil.
Seluruh indikator seperti Midterm Score, Final Score, Projects Score, dan Quizzes Avg tidak signifikan (p > 0.05) dengan error variance ≥ 0.97.
Nilai Composite Reliability (CR) sebesar 0.03557 menunjukkan konstruk tidak reliabel dan indikator bergerak secara independen.
1. Evaluasi Model Struktural:
Model SEM menghasilkan nilai CFI = 1.000, RMSEA = 0.000, dan SRMR = 0.009, namun nilai TLI = −2.311 menunjukkan model tidak stabil. Kondisi ini terjadi karena korelasi antar variabel pada dataset sangat rendah dan cenderung mendekati nol.
2. Pengujian Hubungan Kausal:
Aktivitas Belajar tidak berpengaruh signifikan terhadap Prestasi Akademik (β = −0.547; p = 0.475), sedangkan Kondisi Personal juga tidak berpengaruh signifikan terhadap Prestasi Akademik (β = 0.485; p = 0.508). Seluruh hipotesis penelitian ditolak karena p-value > 0.05.
3. Analisis Varians dan Diskusi Metodologis:
Nilai R² sebesar 0.468 menunjukkan Aktivitas Belajar dan Kondisi Personal secara statistik mampu menjelaskan 46.8% varians Prestasi Akademik. Namun, hasil ini tidak bermakna secara substantif karena konstruk laten sebelumnya terbukti tidak valid dan tidak reliabel. Rendahnya korelasi antar indikator menyebabkan model SEM berbasis kovarians tidak cocok digunakan pada dataset ini.
parameterEstimates(
fit_sem,
standardized = TRUE
)
## lhs op rhs est se z
## 1 AktivitasBelajar =~ Attendance.... -0.032 0.053 -0.607
## 2 AktivitasBelajar =~ Study_Hours_per_Week -0.074 0.055 -1.347
## 3 AktivitasBelajar =~ Participation_Score 0.107 0.060 1.793
## 4 AktivitasBelajar =~ Assignments_Avg 0.174 0.085 2.062
## 5 KondisiPersonal =~ Stress_Level..1.10. 0.225 0.145 1.555
## 6 KondisiPersonal =~ Sleep_Hours_per_Night 0.084 0.059 1.423
## 7 KondisiPersonal =~ Extracurricular_Activities -0.038 0.052 -0.734
## 8 PrestasiAkademik =~ Midterm_Score 0.245 0.290 0.844
## 9 PrestasiAkademik =~ Final_Score -0.010 0.028 -0.352
## 10 PrestasiAkademik =~ Projects_Score -0.053 0.036 -1.462
## 11 PrestasiAkademik =~ Quizzes_Avg -0.029 0.031 -0.940
## 12 PrestasiAkademik ~ AktivitasBelajar -0.749 1.047 -0.715
## 13 PrestasiAkademik ~ KondisiPersonal 0.665 1.006 0.662
## 14 Attendance.... ~~ Attendance.... 0.999 0.020 49.356
## 15 Study_Hours_per_Week ~~ Study_Hours_per_Week 0.994 0.021 46.420
## 16 Participation_Score ~~ Participation_Score 0.988 0.023 42.397
## 17 Assignments_Avg ~~ Assignments_Avg 0.969 0.035 27.702
## 18 Stress_Level..1.10. ~~ Stress_Level..1.10. 0.949 0.067 14.083
## 19 Sleep_Hours_per_Night ~~ Sleep_Hours_per_Night 0.993 0.022 45.005
## 20 Extracurricular_Activities ~~ Extracurricular_Activities 0.998 0.020 49.089
## 21 Midterm_Score ~~ Midterm_Score 0.887 0.141 6.307
## 22 Final_Score ~~ Final_Score 1.000 0.020 49.938
## 23 Projects_Score ~~ Projects_Score 0.995 0.021 47.169
## 24 Quizzes_Avg ~~ Quizzes_Avg 0.998 0.020 49.394
## 25 AktivitasBelajar ~~ AktivitasBelajar 1.000 0.000 NA
## 26 KondisiPersonal ~~ KondisiPersonal 1.000 0.000 NA
## 27 PrestasiAkademik ~~ PrestasiAkademik 1.000 0.000 NA
## 28 AktivitasBelajar ~~ KondisiPersonal 0.125 0.280 0.448
## pvalue ci.lower ci.upper std.lv std.all
## 1 0.544 -0.135 0.071 -0.032 -0.032
## 2 0.178 -0.183 0.034 -0.074 -0.074
## 3 0.073 -0.010 0.224 0.107 0.107
## 4 0.039 0.009 0.340 0.174 0.175
## 5 0.120 -0.059 0.508 0.225 0.225
## 6 0.155 -0.032 0.200 0.084 0.084
## 7 0.463 -0.141 0.064 -0.038 -0.038
## 8 0.399 -0.324 0.813 0.336 0.336
## 9 0.725 -0.066 0.046 -0.014 -0.014
## 10 0.144 -0.124 0.018 -0.072 -0.072
## 11 0.347 -0.089 0.031 -0.040 -0.040
## 12 0.475 -2.802 1.304 -0.547 -0.547
## 13 0.508 -1.306 2.636 0.485 0.485
## 14 0.000 0.959 1.038 0.999 0.999
## 15 0.000 0.952 1.036 0.994 0.994
## 16 0.000 0.943 1.034 0.988 0.989
## 17 0.000 0.901 1.038 0.969 0.970
## 18 0.000 0.817 1.081 0.949 0.949
## 19 0.000 0.950 1.036 0.993 0.993
## 20 0.000 0.958 1.038 0.998 0.999
## 21 0.000 0.612 1.163 0.887 0.887
## 22 0.000 0.960 1.039 1.000 1.000
## 23 0.000 0.953 1.036 0.995 0.995
## 24 0.000 0.959 1.038 0.998 0.998
## 25 NA 1.000 1.000 1.000 1.000
## 26 NA 1.000 1.000 1.000 1.000
## 27 NA 1.000 1.000 0.532 0.532
## 28 0.654 -0.423 0.674 0.125 0.125
Hasil parameterEstimates(fit_sem, standardized = TRUE) menunjukkan bahwa model SEM secara keseluruhan tidak mampu membentuk konstruk laten yang valid maupun signifikan. Pada model pengukuran, seluruh indikator memiliki nilai loading factor yang sangat rendah, bahkan beberapa bernilai negatif, serta tidak memenuhi batas minimum validitas (≥ 0.50). Hal ini menunjukkan bahwa indikator tidak mampu merepresentasikan konstruk laten yang dibentuk secara konsisten.
Pada model struktural, hubungan antara Aktivitas Belajar dan Kondisi Personal terhadap Prestasi Akademik tidak signifikan (p > 0.05), dengan nilai standard error yang besar yang mengindikasikan estimasi yang tidak stabil. Selain itu, varians error pada hampir seluruh indikator mendekati 1.000 dan kovarians antar konstruk eksogen sangat rendah, sehingga secara keseluruhan model tidak berhasil menemukan struktur hubungan yang bermakna dalam data.