Library and Setup

library(readxl) #Untuk read data excel
library(GGally) #Untuk cek korelasi
library(MLmetrics) #Untuk perhitungan error model
library(tidyverse) #Untuk data pre-processing
library(car) # Untuk uji Multikolinearitas
library(nortest) #Untuk uji Normalitas
library(lmtest) #Untuk uji Homocesdasticity

Overview

Ujian Tulis Berbasis Komputer (UTBK) selalu menjadi perhatian lebih bagi institusi pendidikan serta civitas yang terlibat setiap tahunnya. Beberapa strategi seringkali dimunculkan oleh peserta guna memaksimalkan kesempatannya dalam mengikuti UTBK. Salah satu strategi yang digunakan yaitu keterkaitan setiap mata ujian terhadap mata ujian lainnya pada UTBK. Hal ini dimaksudkan untuk mengefisiensi waktu belajar peserta serta memaksimalkan kesempatannya mengikuti UTBK.

Terdapat beberapa analisis keterkaitan mata ujian yang akan dibuat, salah satunya yaitu Analisis Kemampuan Penalaran Umum (KPU) peserta UTBK Soshum berdasarkan skor Tes Kemampuan Akademik (TKA) Soshum.

Analisis Keterkaitan Skor Soshum

Materi yang dipelajari oleh peserta UTBK Soshum seringkali dituntut memiliki kemampuan analisis kualitatif dan penalaran yang kuat di setiap mata ujian berkait seperti Geografi, Sosiologi, Sejarah dan Ekonomi.

Oleh karena itu pada kesempatan kali ini dilakukan analisis keterkaitan skor Kemampuan Penalaran Umum (KPU) berdasarkan skor Tes Kemampuan Akademik (TKA) Soshum berupa mata ujian Geografi, Sosiologi, Sejarah dan Ekonomi menggunakan model regresi linier.

Membaca Dataset

# Membaca dataset
nilaisoshum <- read_xlsx("UTBK2019.xlsx", sheet = "Soshum")
head(nilaisoshum)

Untuk membentuk model regresi linier data yang perlu disiapkan hanya berupa kolom bertipe numerik yang akan digunakan pada model yang akan dibuat.

Data Pre-Processing

# Mengambil kolom yang diperlukan
nilaisoshum <- nilaisoshum %>% 
  select(c(score_eko, score_geo, score_kpu, score_sej, score_sos))

Model Regresi Linier

# Membuat model awal regresi linier
modelsoshum <- lm(score_kpu ~ score_eko + score_sej + score_sos + score_geo,
                  data = nilaisoshum)
summary(modelsoshum)
## 
## Call:
## lm(formula = score_kpu ~ score_eko + score_sej + score_sos + 
##     score_geo, data = nilaisoshum)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -284.43  -49.93   -1.15   48.88  348.34 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.358e+02  2.458e+00   95.92   <2e-16 ***
## score_eko   1.882e-01  3.417e-03   55.08   <2e-16 ***
## score_sej   6.278e-02  3.343e-03   18.78   <2e-16 ***
## score_sos   1.141e-01  3.255e-03   35.06   <2e-16 ***
## score_geo   1.920e-01  3.547e-03   54.12   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 75.27 on 61193 degrees of freedom
## Multiple R-squared:  0.2118, Adjusted R-squared:  0.2117 
## F-statistic:  4110 on 4 and 61193 DF,  p-value: < 2.2e-16

Selanjutnya mari kita cek korelasi setiap prediktor dan targetnya.

# Korelasi data
ggcorr(nilaisoshum, label = TRUE)

Dapat dilihat dari hasil di atas bahwa skor Kemampuan Penalaran Umum memiliki korelasi terhadap mata ujian yang berkaitan dengan rumpun Soshum dengan kisaran korelasi diantara 0.2 sampai 0.4 (Korelasi Lemah). Karena memiliki korelasi maka pembuatan model dapat dilanjutkan.

Selanjutnya model yang telah dibuat dilakukan optimisasi menggunakan teknik Stepwise untuk mendapatkan prediktor mana saja yang paling baik digunakan untuk membangun model.

# Stepwise
step_soshum <- step(modelsoshum, direction = "both")
## Start:  AIC=528888.6
## score_kpu ~ score_eko + score_sej + score_sos + score_geo
## 
##             Df Sum of Sq       RSS    AIC
## <none>                   346695988 528889
## - score_sej  1   1997974 348693962 529238
## - score_sos  1   6964578 353660566 530104
## - score_geo  1  16592367 363288355 531747
## - score_eko  1  17191011 363886999 531848

Analisis Stepwise yang dilakukan menunjukkan bahwa setiap tidak ada perubahan terhadap pembentukan model regresi linier sehingga dapat dilanjutkan ke tahap selanjutnya.

# Melihat model akhir
summary(step_soshum)
## 
## Call:
## lm(formula = score_kpu ~ score_eko + score_sej + score_sos + 
##     score_geo, data = nilaisoshum)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -284.43  -49.93   -1.15   48.88  348.34 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.358e+02  2.458e+00   95.92   <2e-16 ***
## score_eko   1.882e-01  3.417e-03   55.08   <2e-16 ***
## score_sej   6.278e-02  3.343e-03   18.78   <2e-16 ***
## score_sos   1.141e-01  3.255e-03   35.06   <2e-16 ***
## score_geo   1.920e-01  3.547e-03   54.12   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 75.27 on 61193 degrees of freedom
## Multiple R-squared:  0.2118, Adjusted R-squared:  0.2117 
## F-statistic:  4110 on 4 and 61193 DF,  p-value: < 2.2e-16

Cross Validation

Untuk melihat performa model maka data dibagi menjadi dua subset yaitu data train dan data test. Data train nantinya akan digunakan untuk melatih model regresi linier, sementara data test digunakan sebagai data prediksi yang merupakan objek baru pada model yang telah dibentuk.

RNGkind(sample.kind = "Rounding")
set.seed(123)
row_data <- nrow(nilaisoshum)

# Pembagian sampel
index <- sample(row_data, row_data*0.85)
soshum_train <- nilaisoshum[ index, ]
soshum_test <- nilaisoshum[ -index, ]
# Membuat model lanjutan model regresi linier
model_soshum_train <- lm(score_kpu ~ score_eko + score_sej + score_sos + score_geo,
                         data = soshum_train)

summary(model_soshum_train)
## 
## Call:
## lm(formula = score_kpu ~ score_eko + score_sej + score_sos + 
##     score_geo, data = soshum_train)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -284.61  -50.01   -0.96   48.95  348.78 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.338e+02  2.673e+00   87.46   <2e-16 ***
## score_eko   1.881e-01  3.723e-03   50.53   <2e-16 ***
## score_sej   6.394e-02  3.632e-03   17.60   <2e-16 ***
## score_sos   1.150e-01  3.534e-03   32.54   <2e-16 ***
## score_geo   1.935e-01  3.856e-03   50.17   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 75.43 on 52013 degrees of freedom
## Multiple R-squared:  0.2126, Adjusted R-squared:  0.2125 
## F-statistic:  3510 on 4 and 52013 DF,  p-value: < 2.2e-16

Beberapa hal yang dapat diinterpretasi dari model di atas diantaranya yaitu : 1. Setiap prediktor mata ujian memiliki pengaruh yang relatif sama setiap penambahan satu poin skor prediktor, yaitu di kisaran 0.06 hingga 0.19. 2. Setiap prediktor memilikih pengaruh yang signifikan terhadap pembentukan model regresi linier. 3. Model yang dibuat dapat menjelaskan sekitar 21 % dari data yang dimiliki. 4. R-Squared yang kecil dapat disebabkan oleh banyaknya faktor eksternal lain yang tidak terlibat dalam pembuatan model.

Selanjutnya model dikenakan data baru guna melakukan prediksi.

# Prediksi data test
predict_soshum <- predict(model_soshum_train, newdata = soshum_test)

Error Model

Model regresi linier yang dibentuk dipastikan memiliki error. Terdapat beberapa metriks yang dapat digunakan dalam menghitung error, diantaranya yaitu :

  1. MAPE, untuk menunjukkan error dalam bentuk persentase.
  2. RMSE (Root Mean Square Error), untuk melihat pengaruh error besar pada data dengan sensitivitas error besar yang tinggi.
#MAPE
MAPE(predict_soshum, soshum_test$score_kpu)
## [1] 0.1129183

Nilai MAPE di atas menunjukkan bahwa model regresi linier yang telah dibentuk memiliki persentase error sebesar 11.29 %. Nilai tersebut dapat ditoleransi dan model dapat digunakan sebagai panduan analisis keterkaitan nilai soshum.

#RMS Error
RMSE(predict_soshum, soshum_test$score_kpu)
## [1] 74.3395

Nilai RMSE sebesar 74.3 menunjukan rata rata simpangan yang akan dialami ketika model regresi linier memprediksi data test yang baru. Nilai tersebut dapat dikatakan cukup besar jika dibandingkan dengan range dari skor pada UTBK berada di kisaran 250 sampai 1000.

Uji Asumsi

Multikolinearitas

Uji multikolinearitas menunjukkan adanya korelasi yang kuat antar setiap prediktornya pada model yang dibentuk.

# Multikolinearitas
vif(model_soshum_train)
## score_eko score_sej score_sos score_geo 
##  1.269165  1.192819  1.177913  1.212298

VIF merupakan ukuran yang menjelaskan seberapa besar variansi koefisien yang meningkat karena multikolinieritas. Nilai VIF setiap prediktor di atas menunjukkan bahwa model tidak terjadi multikolinearitas sehingga asumsi ini dapat terpenuhi.

Normalitas

Normalitas pada asumsi model menujukan peserbaran nilai residual yang dihasilkan oleh model regresi, yaitu residual dengan nilai yang mendekati nol atau memiliki fungsi distribusi normal.

#Distribusi normal
hist(model_soshum_train$residuals)

Histogram dengan data residual yang ditampilkan menunjukan fungsi distribusi normal, sehingga dapat dikatakan asumsi ini dapat terpenuhi.

Homocesdasticity

Homocesdasticity menunjukkan bahwa residual atau error bersifat konstan atau tidak membentuk pola tertentu. Asumsi ini penting untuk melihat pola residual yang dihasilkan oleh model regresi.

bptest(model_soshum_train)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_soshum_train
## BP = 69.848, df = 4, p-value = 2.443e-14

Nilai P-Value yang sangat kecil menunjukan bahwa residual model bersifat tidak konstan (Heteroscesdasticity) yang dapat menyebabkan nilai standard error pada estimate/koefisien prediktor menjadi bias. Asumsi homocesdasticity pada model tidak terpenuhi.

Interpretasi dan Konklusi

Interpretasi

Beberapa hal yang didapatkan dalam melakukan analisis keterkaitan skor di atas yaitu :

  1. Skor Kemampuan Penalaran Umum memiliki korelasi terhadap mata ujian yang berkaitan dengan rumpun Soshum dengan kisaran korelasi diantara 0.2 sampai 0.4 (Korelasi Lemah)
  2. Setiap prediktor memilikih pengaruh yang signifikan terhadap pembentukan model regresi linier.
  3. Model yang dibuat dapat menjelaskan sekitar 21 % dari data yang dimiliki.
  4. R-Squared yang kecil dapat disebabkan oleh banyaknya faktor eksternal lain yang tidak terlibat dalam pembuatan model.
  5. Terdapat salah satu asumsi yang tidak terpenuhi dalam uji asumsi model, yaitu uji homocesdasticity dimana model ternyata besifat heterocesdasticity atau residual bersifat tidak konstan.

Konklusi

Analisis keterkaitan skor menggunakan model regresi linier memiliki faktor eksternal yang sangat banyak seperti kesulitan setiap mata ujian yang dapat mempengaruhi skor, pengerjaan setiap mata ujian yang membutuhkan waktu yang lama sehingga tidak menjadi prioritas pengerjaan saat pelaksanaan tes, serta faktor eksternal lainnya.

Namun dengan adanya korelasi antara skor Kemampuan Penalaran Umum (KPU) dengan skor Tes Kemampuan Akademik (TKA) Soshum berupa mata ujian Geografi, Sosiologi, Sejarah dan Ekonomi menunjukan bahwa mata ujian TKA dapat melatih pula Kemampuan Penalaran Umum untuk siswa yang mengikuti UTBK konsentrasi Soshum. Hal ini dapat dimanfaatkan oleh peserta Soshum dalam rangka memaksimalkan hasil UTBK yang akan dijalani.

Akhir kata, semoga analisis yang dibuat dapat bermanfaat bagi para pembaca, terutama yang berkaitan dengan dunia pendidikan.

Terima Kasih.