link dataset : https://www.kaggle.com/datasets/spscientist/students-performance-in-exams
install.packages(c("nnet", "dplyr", "ggplot2"), repos = "https://cloud.r-project.org")
## Installing packages into 'C:/Users/Taufiq/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## package 'nnet' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'nnet'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\Taufiq\AppData\Local\R\win-library\4.4\00LOCK\nnet\libs\x64\nnet.dll
## to C:\Users\Taufiq\AppData\Local\R\win-library\4.4\nnet\libs\x64\nnet.dll:
## Permission denied
## Warning: restored 'nnet'
## package 'dplyr' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'dplyr'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\Taufiq\AppData\Local\R\win-library\4.4\00LOCK\dplyr\libs\x64\dplyr.dll
## to C:\Users\Taufiq\AppData\Local\R\win-library\4.4\dplyr\libs\x64\dplyr.dll:
## Permission denied
## Warning: restored 'dplyr'
## package 'ggplot2' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Taufiq\AppData\Local\Temp\RtmpMpPSie\downloaded_packages
library(nnet)
## Warning: package 'nnet' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
Baca data dan cek strukturnya
df <- read.csv("C:/Users/Taufiq/Downloads/archive/StudentsPerformance.csv")
str(df)
## 'data.frame': 1000 obs. of 8 variables:
## $ gender : chr "female" "female" "female" "male" ...
## $ race.ethnicity : chr "group B" "group C" "group B" "group A" ...
## $ parental.level.of.education: chr "bachelor's degree" "some college" "master's degree" "associate's degree" ...
## $ lunch : chr "standard" "standard" "standard" "free/reduced" ...
## $ test.preparation.course : chr "none" "completed" "none" "none" ...
## $ math.score : int 72 69 90 47 76 71 88 40 64 38 ...
## $ reading.score : int 72 90 95 57 78 83 95 43 64 60 ...
## $ writing.score : int 74 88 93 44 75 78 92 39 67 50 ...
Buat kolom rata-rata nilai dan kategorisasi
df <- df %>%
mutate(avg_score = (math.score + reading.score + writing.score) / 3,
performance_level = case_when(
avg_score >= 80 ~ "High",
avg_score >= 60 ~ "Medium",
TRUE ~ "Low"
))
Ubah ke faktor
df$performance_level <- factor(df$performance_level, levels = c("Low", "Medium", "High"))
Model multinomial logistic regression
model_mnlogit <- multinom(performance_level ~ gender + parental.level.of.education + test.preparation.course, data = df)
## # weights: 27 (16 variable)
## initial value 1098.612289
## iter 10 value 966.510710
## iter 20 value 963.640237
## final value 963.635757
## converged
Ringkasan hasil
summary(model_mnlogit)
## Call:
## multinom(formula = performance_level ~ gender + parental.level.of.education +
## test.preparation.course, data = df)
##
## Coefficients:
## (Intercept) gendermale parental.level.of.educationbachelor's degree
## Medium 1.446849 -0.4100833 0.4978986
## High 1.157018 -0.6669235 0.5309237
## parental.level.of.educationhigh school
## Medium -0.3207953
## High -1.1066846
## parental.level.of.educationmaster's degree
## Medium 0.4527031
## High 0.8958216
## parental.level.of.educationsome college
## Medium 0.20500766
## High 0.01201189
## parental.level.of.educationsome high school test.preparation.coursenone
## Medium -0.4309674 -0.8351872
## High -0.7481612 -1.5456847
##
## Std. Errors:
## (Intercept) gendermale parental.level.of.educationbachelor's degree
## Medium 0.2260637 0.1518244 0.3013189
## High 0.2612348 0.1972143 0.3524887
## parental.level.of.educationhigh school
## Medium 0.2251962
## High 0.3254854
## parental.level.of.educationmaster's degree
## Medium 0.4050165
## High 0.4475807
## parental.level.of.educationsome college
## Medium 0.2315096
## High 0.2866011
## parental.level.of.educationsome high school test.preparation.coursenone
## Medium 0.2353414 0.1748618
## High 0.3041572 0.2104654
##
## Residual Deviance: 1927.272
## AIC: 1959.272
Uji Signifikansi Koefisien (z-score dan p-value)
z <- summary(model_mnlogit)$coefficients / summary(model_mnlogit)$standard.errors
p <- (1 - pnorm(abs(z), 0, 1)) * 2
# Tampilkan p-value
p
## (Intercept) gendermale parental.level.of.educationbachelor's degree
## Medium 1.551907e-10 0.0069123753 0.09845351
## High 9.465616e-06 0.0007203372 0.13201201
## parental.level.of.educationhigh school
## Medium 0.1542974778
## High 0.0006735986
## parental.level.of.educationmaster's degree
## Medium 0.26367811
## High 0.04534121
## parental.level.of.educationsome college
## Medium 0.3758733
## High 0.9665692
## parental.level.of.educationsome high school test.preparation.coursenone
## Medium 0.06706422 1.785755e-06
## High 0.01390205 2.071676e-13
visualisasi
ggplot(df, aes(x = performance_level, fill = test.preparation.course)) +
geom_bar(position = "dodge") +
labs(title = "Performance Level by Test Preparation Course", x = "Performance Level", y = "Count")
Analisis Regresi Logistik Multinomial
Model regresi logistik multinomial dibangun untuk memprediksi tingkat performa siswa yang diklasifikasikan ke dalam tiga kategori, yaitu Low, Medium, dan High, dengan kategori referensi adalah Low. Variabel prediktor yang digunakan dalam model ini meliputi jenis kelamin, tingkat pendidikan orang tua, dan keikutsertaan dalam kursus persiapan ujian.
Pengaruh Kursus Persiapan Ujian Hasil analisis menunjukkan bahwa siswa yang tidak mengikuti kursus persiapan ujian memiliki peluang yang lebih rendah untuk mencapai tingkat performa Medium (koefisien = -0.835, p < 0.001) maupun High (koefisien = -1.546, p < 0.001), dibandingkan dengan siswa yang mengikuti kursus. Temuan ini didukung oleh visualisasi yang memperlihatkan bahwa proporsi siswa dengan performa High lebih banyak berasal dari kelompok yang telah menyelesaikan kursus. Dengan demikian, keikutsertaan dalam kursus persiapan ujian memiliki pengaruh positif yang signifikan terhadap peningkatan performa akademik siswa.
Pengaruh Jenis Kelamin Variabel jenis kelamin juga menunjukkan pengaruh yang signifikan dalam model. Siswa laki-laki cenderung memiliki peluang lebih rendah untuk berada pada kategori performa Medium (koefisien = -0.41, p = 0.004) maupun High (koefisien = -0.667, p < 0.001), dibandingkan siswa perempuan. Hal ini mengindikasikan adanya perbedaan performa akademik berdasarkan gender, di mana siswa perempuan secara relatif menunjukkan performa yang lebih baik.
Pengaruh Tingkat Pendidikan Orang Tua Tingkat pendidikan orang tua merupakan faktor yang signifikan dalam memengaruhi performa siswa. Dibandingkan dengan kategori referensi (kemungkinan adalah “associate’s degree”), siswa yang berasal dari orang tua dengan latar belakang pendidikan Master’s degree memiliki peluang yang lebih tinggi untuk mencapai kategori High (koefisien = 0.896, p = 0.045). Sebaliknya, siswa dengan orang tua berpendidikan High School menunjukkan peluang yang secara signifikan lebih rendah untuk mencapai performa High (koefisien = -1.107, p = 0.0007). Hal ini menunjukkan bahwa semakin tinggi tingkat pendidikan orang tua, semakin besar peluang siswa untuk mencapai performa akademik yang tinggi.
Kesimpulan
Secara keseluruhan, model menunjukkan bahwa keikutsertaan dalam kursus persiapan ujian, jenis kelamin, dan tingkat pendidikan orang tua merupakan faktor-faktor yang berpengaruh signifikan terhadap tingkat performa akademik siswa. Upaya peningkatan performa siswa dapat difokuskan pada peningkatan akses terhadap program persiapan ujian serta pemberdayaan lingkungan keluarga, khususnya dalam hal pendidikan orang tua.