1 Introduction

1.1 Sasaran

Seringkali para calon mahasiswa tidak memiliki bayangan mengenai seberapa besar peluang mereka untuk bisa diterima di sebuah universitas. Dengan berbagai latar yang dimiliki, seperti nilai yang tercantum pada ijazah, pengalaman riset, dan mendapatkan surat rekomendasi, variabel-variabel tersebut dapat menjadi parameter untuk mengetahui peluangnya. Pada pembahasan kali ini, kita menggunakan dataset Graduate Admissions dari Kaggle. Dataset dibuat untuk membantu calon mahasiswa untuk mengetahui peluang mereka masuk ke dalam suatu universitas berdasarkan profil yang mereka miliki.

1.2 Aktivitas

Kita akan belajar menggunakan regresi linear dengan dataset graduate admissions. Adapun aktivitas yang akan kita lakukan adalah:

  • mengetahui korelasi antar variabel, terutama variabel chance of admit terhadap variabel lainnya
  • membuat model yang mampu menjelaskan chance of admit berdasarkan variabel prediktor
  • uji validitas model
  • interpretasi model

Sebagai tahap awal, kita asumsikan variabel target dan prediktornya adalah sebagai berikut.

  • Variabel target = chance of admit
  • Variabel prediktor = semua variabel selain variabel target

2 Persiapan Data

Dataset graduate admissions memiliki variabel-variabel sebagai berikut:

  • GRE.Score = Skor GRE (dari 340)
  • TOEFL.Score = Skor Toefl (dari 120)
  • University.Rating = Peringkat Universitas (dari 5)
  • SOP = Pernyataan Tujuan (dari 5)
  • LOR = Surat Rekomendasi (dari 5)
  • CGPA = IPK Sarjana (dari 10)
  • Research = Pengalaman Riset (0 atau 1)
  • Chance.of.Admit = Peluang Diterima (mulai dari 0 hingga 1)

2.1 Import Data

graduate = read.csv("D:/DA 6/LBB/Regression Model/Graduate Admission/Admission_Predict.csv")
paged_table(graduate)

2.2 Tipe Data

Sebelum memulai mengolah data, kita perlu melihat apakah tipe data sudah sesuai.

str(graduate)
## 'data.frame':    400 obs. of  9 variables:
##  $ Serial.No.       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ GRE.Score        : int  337 324 316 322 314 330 321 308 302 323 ...
##  $ TOEFL.Score      : int  118 107 104 110 103 115 109 101 102 108 ...
##  $ University.Rating: int  4 4 3 3 2 5 3 2 1 3 ...
##  $ SOP              : num  4.5 4 3 3.5 2 4.5 3 3 2 3.5 ...
##  $ LOR              : num  4.5 4.5 3.5 2.5 3 3 4 4 1.5 3 ...
##  $ CGPA             : num  9.65 8.87 8 8.67 8.21 9.34 8.2 7.9 8 8.6 ...
##  $ Research         : int  1 1 1 1 0 1 1 0 0 0 ...
##  $ Chance.of.Admit  : num  0.92 0.76 0.72 0.8 0.65 0.9 0.75 0.68 0.5 0.45 ...

Tipe data telah sesuai, sehingga kita tidak perlu melakukan penyesuaian.

2.3 Missing Values

Step yang tidak kalah penting pada tahap persiapan data adalah melakukan pengecekan apakah terdapat missing value. Hal ini dimaksudkan agar data yang digunakan saat pemodelan dapat menghasilkan model yang fit.

anyNA(graduate)
## [1] FALSE

Tidak terdapat missing value pada dataset graduate admissions.

3 Eksplorasi Data

Eksplorasi data adalah tahap dimana kita melakukan eksplorasi terhadap data kita untuk dapat melihat dan menemukan korelasi antar variabel.

3.1 Uji Korelasi Antar Variabel

Pada sesi ini, kita menggunakan fungsi ggcorr yang terdapat pada package GGAlly untuk melihat korelasi antar variabel yang direpresentasikan dalam range score -1 hingga 1. Semakin mendekati -1 maka korelasi semakin kecil, sebaliknya apabila semakin mendekati +1 maka korelasi antar variabel semakin kuat.

ggcorr(graduate, label = TRUE, hjust = 1, layout.exp = 2, label_size = 3.2)

Pada plot, nampak bahwa hampir semua variabel memiliki korelasi yang kuat dengan variabel chance of admit. Korelasi terkuat terdapat pada variabel CGPA yaitu dengan score 0.9 dan korelasi terendah ada pada variabel serial no dengan score 0.

3.2 Feature Selection

Setelah melalui uji korelasi dan diperoleh korelasi tertinggi dan terendah, kita perlu menguji kembali apakah korelasi yang paling rendah dapat dihilangkan atau tidak. Karena terdapat kemungkinan bahwa variabel dengan korelasi rendah ternyata mampu menjelaskan variabel target kita yaitu chance of admit.

Sebagai uji pertama, kita melakukan step-wise regression terhadap variabel dengan korelasi tertinggi dan keseluruhan variabel.

3.2.1 Step-Wise Regression dengan Variabel CGPA

model_graduate_none = lm(formula = Chance.of.Admit ~ CGPA, data = graduate)
summary(model_graduate_none)
## 
## Call:
## lm(formula = Chance.of.Admit ~ CGPA, data = graduate)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.274575 -0.030084  0.009443  0.041954  0.180734 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.07151    0.05034  -21.29   <2e-16 ***
## CGPA         0.20885    0.00584   35.76   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.06957 on 398 degrees of freedom
## Multiple R-squared:  0.7626, Adjusted R-squared:  0.762 
## F-statistic:  1279 on 1 and 398 DF,  p-value: < 2.2e-16

Variabel CGPA dapat menjelaskan sebesar 76.26% terhadap variabel Chance.of.Admit. Sisanya sebesar ~23% dijelaskan oleh variabel lain yang tidak digunakan dalam pemodelan.

3.2.2 Step-Wise Regression dengan Keseluruhan Variabel

model_graduate_all = lm(formula = Chance.of.Admit ~ ., data = graduate)
summary(model_graduate_all)
## 
## Call:
## lm(formula = Chance.of.Admit ~ ., data = graduate)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.233576 -0.026637  0.006226  0.038273  0.140252 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -1.294e+00  1.201e-01 -10.775  < 2e-16 ***
## Serial.No.         1.593e-04  2.769e-05   5.753 1.77e-08 ***
## GRE.Score          1.799e-03  5.749e-04   3.129 0.001885 ** 
## TOEFL.Score        3.682e-03  1.056e-03   3.487 0.000543 ***
## University.Rating  8.785e-03  4.617e-03   1.903 0.057821 .  
## SOP                9.937e-05  5.380e-03   0.018 0.985272    
## LOR                2.154e-02  5.330e-03   4.041 6.41e-05 ***
## CGPA               1.053e-01  1.198e-02   8.786  < 2e-16 ***
## Research           2.438e-02  7.653e-03   3.185 0.001561 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.06132 on 391 degrees of freedom
## Multiple R-squared:  0.8188, Adjusted R-squared:  0.8151 
## F-statistic: 220.9 on 8 and 391 DF,  p-value: < 2.2e-16

Pemodelan menggunakan keseluruhan variabel menghasilkan Adjusted R-squared sebesar 81.51%, yaitu menghasilkan pemodelan yang lebih baik dibandingkan dengan hanya menggunakan satu variabel saja yaitu CGPA. Sisanya sebesar ~19% dijelaskan oleh variabel lain yang tidak digunakan dalam pemodelan.

Dari hasil pemodelan tersebut, dapat dilihat dari nilai pvalue bahwa variabel SOP tidak memiliki korelasi kuat terhadap variabel target Chance.of.Admit sehingga variabel tersebut dapat kita hilangkan.

graduate2 = graduate %>%
  select(-SOP)
paged_table(graduate2)

4 Modelling

Setelah melalui tahap feature selection, tahap selanjutnya adalah melakukan pemodelan. Diharapkan setelah dilakukan feature selection, model yang dihasilkan mampu menjelaskan variabel chance of admit lebih baik yang ditandai dengan adjusted r-squared yang semakin mendekati 1.

Sebelum melakukan pemodelan, kita perlu membagi data menjadi 2, yaitu data train dan data test. Hal ini perlu dilakukan untuk melihat apakah model yang telah kita buat mampu bekerja dengan data yang belum pernah dipelajari sebelumnya.

4.1 Split Data Train dan Test

Kita membagi data sebesar 70% untuk data train, dan 30% untuk data test.

set.seed(123)
sampledata = round(0.7 * nrow(graduate2), 0)
indeks = sample(seq_len(nrow(graduate2)), size = sampledata)

data_train = graduate2[indeks, ]
data_test = graduate2[-indeks, ]

4.2 Linear Regression

Dan kita sampai pada inti aktivitas, yaitu membuat model dengan variabel chance of admit sebagai variabel target.

set.seed(123)
graduate2_none = lm(formula = Chance.of.Admit ~ ., data = data_train)
summary(graduate2_none)
## 
## Call:
## lm(formula = Chance.of.Admit ~ ., data = data_train)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.235440 -0.026625  0.007556  0.034258  0.143577 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -1.3634893  0.1424368  -9.573  < 2e-16 ***
## Serial.No.         0.0001658  0.0000322   5.150 5.01e-07 ***
## GRE.Score          0.0022482  0.0006511   3.453 0.000643 ***
## TOEFL.Score        0.0031524  0.0011652   2.705 0.007252 ** 
## University.Rating  0.0102208  0.0051935   1.968 0.050086 .  
## LOR                0.0199011  0.0060445   3.292 0.001125 ** 
## CGPA               0.1035211  0.0137654   7.520 7.97e-13 ***
## Research           0.0207122  0.0091279   2.269 0.024045 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05954 on 272 degrees of freedom
## Multiple R-squared:  0.8249, Adjusted R-squared:  0.8204 
## F-statistic:   183 on 7 and 272 DF,  p-value: < 2.2e-16

Dari hasi pemodelan menggunakan data train dan setelah dilakukan seleksi variabel prediktor, diperoleh nilai adjusted r-squared yaitu sebesar 82.04%, nilai ini menunjukkan peningkatan dibandingkan dengan nilai adjusted r-squared sebelum dilakukan feature selection.

Dilihat dari nilai pvalue, variabel University Ranking memiliki nilai pvalue ~0.05%. Hal ini tentu membuat ambiguity apakah sebaiknya variabel tersebut di-takeout atau tidak. Untuk menentukannya, kita perlu melakukan step-wise regression kembali dan melakukan perbandingan adjusted r-squared.

4.2.1 Re-Step-Wise Regression

data_train_restep = data_train %>% 
  select(-University.Rating)

set.seed(123)
graduate3_restep = lm(formula = Chance.of.Admit ~ ., data = data_train_restep)
summary(graduate3_restep)
## 
## Call:
## lm(formula = Chance.of.Admit ~ ., data = data_train_restep)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.236886 -0.025158  0.007495  0.035189  0.148243 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.463e+00  1.339e-01 -10.922  < 2e-16 ***
## Serial.No.   1.560e-04  3.198e-05   4.879 1.81e-06 ***
## GRE.Score    2.299e-03  6.540e-04   3.515 0.000514 ***
## TOEFL.Score  3.537e-03  1.155e-03   3.064 0.002405 ** 
## LOR          2.367e-02  5.764e-03   4.106 5.33e-05 ***
## CGPA         1.107e-01  1.334e-02   8.303 4.75e-15 ***
## Research     2.063e-02  9.176e-03   2.248 0.025385 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05985 on 273 degrees of freedom
## Multiple R-squared:  0.8224, Adjusted R-squared:  0.8185 
## F-statistic: 210.7 on 6 and 273 DF,  p-value: < 2.2e-16

Setelah dilakukan uji coba terhadap model dengan menghilangkan variabel University Rating, ternyata hasil pemodelan yang didapat tidak lebih baik dibandingkan model sebelumnya, hal ini ditandai dengan nilai adjusted r-squared yang diperoleh sebesar 81.85%. Sehingga dapat disimpulkan bahwa variabel University Rating turut mampu menjelaskan mengenai variabel Chance of Admit dan kita akan tetap menggunakan model sebelumnya.

5 Uji Validitas Model Data Train

Setelah melakukan pemodelan, kita perlu melakukan uji validitas model. Adapun uji validitas model tersebut dapat berupa:

  • uji RMSE
  • uji asumsi

5.1 Uji Root-Mean-Squared Error

Root Mean Squared Error (RMSE) merupakan salah satu cara untuk mengevaluasi model regresi linear dengan mengukur tingkat akurasi hasil prediksi suatu model. RMSE dihitung dengan menguadratkan error (prediksi – observasi) dibagi dengan jumlah data (= rata-rata), lalu diakarkan. Nilai RMSE rendah menunjukkan bahwa variasi nilai yang dihasilkan oleh suatu model prediksi mendekati variasi nilai obeservasinya. RMSE menghitung seberapa berbedanya seperangkat nilai. Semakin kecil nilai RMSE, semakin dekat nilai yang diprediksi dan diamati.

5.1.1 RMSE Model 1

RMSE(pred = graduate2_none$fitted.values, obs = data_train$Chance.of.Admit)
## [1] 0.0586837

5.1.2 RMSE Model 2

RMSE(pred = graduate3_restep$fitted.values, obs = data_train_restep$Chance.of.Admit)
## [1] 0.05910001

Berdasarkan uji RMSE, model pertama menghasilkan nilai root-mean-squared error lebih kecil daripada model kedua (model setelah variabel University Rating dihilangkan).

5.2 Uji Asumsi

Analisis regresi adalah suatu teknik statistikal yang dipergunakan untuk menganalisis pengaruh di antara suatu variabel dependen dan variabel independen. Dalam menggunakan analisis regresi terdapat hal-hal yang harus dipenuhi, yaitu asumsi-asumsinya. Adapun pada sesi ini, kita akan melakukan uji asumsi berupa:

  • Linearitas
    • Ada hubungan linear antara variable independen dengan variable dependen. Asumsi linearitas diuji dengan uji linearitas regresi, misalnya dengan kurva estimasi. Dengan kurva estimasi kita bisa tentukan ada hubungan linear atau tidak dengan melihat nilai pvalue linearitas. Jika pvalue < 0.05 maka terdapat hubungan yang linear antara prediktor dan target.
  • Normalitas Residual
    • Residual adalah beda antara y aktual dengan y prediksi. Uji asumsi normalitas regresi linear dapat diuji dengan berbagai metode uji normalitas, seperti uji Shapiro wilk.
  • Homoskedastisitas
    • Homoskedastisitas adalah sebuah kondisi dimana varians dari error bersifat konstan atau tetap. Dengan kata lain bahwa varians dari error bersifat identik untuk setiap pengamatan.
  • Multikolinearitas
    • Multikolinearitas adalah keadaan dimana terdapat interkorelasi atau korelasi kuat antar variable bebas di dalam model. Cara uji multikolinearitas adalah dengan menggunakan nilai variance inflating factor (VIF). Dikatakan ada multikolinearitas jika nilai VIF > 10.

5.2.1 Linearitas

cor.test(graduate2$Chance.of.Admit, graduate2$CGPA)
## 
##  Pearson's product-moment correlation
## 
## data:  graduate2$Chance.of.Admit and graduate2$CGPA
## t = 35.759, df = 398, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8478354 0.8947275
## sample estimates:
##       cor 
## 0.8732891
linearity = data.frame(residual = graduate2_none$residuals, fitted = graduate2_none$fitted.values)

linearity %>% ggplot(aes(fitted, residual)) + 
  geom_point() + 
  geom_smooth() + 
  geom_hline(aes(yintercept = 0)) + 
  theme(panel.grid = element_blank(), panel.background = element_blank())
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

  • Dari hasil uji linearitas yang diperoleh berdasarkan uji cor.test(), menunjukkan bahwa variabel prediktor dan target menunjukkan korelasi yang signifikan.
  • Dari pattern yang didapatkan pada plot, menunjukkan bahwa nilai residual cenderung negatif ketika fitted value cenderung positif. Dapat ditarik kesimpulan bahwa model tidak cukup linear.

5.2.2 Normalitas Residual

Uji normalitas residual menggunakan Shapiro Test. Pertama-tama kita membuat hipotesis awal terlebih dahulu.

  • H0 = Residual terdistribusi normal
  • H1 = Residual tidak terdistribusi normal

Pada uji Shapiro, apabila

  • pvalue > 5% maka H0 diterima,
  • pvalue < 5% maka tolak H0
shapiro.test(graduate2_none$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  graduate2_none$residuals
## W = 0.94386, p-value = 7.449e-09
hist(graduate2_none$residuals)

Dari hasil uji normalitas residual, didapatkan pvalue yang jauh dibawah 5%. Maka dapat disimpulkan bahwa residual terdistribusi tidak normal.

5.2.3 Homoskedastisitas

Uji homoskedastisitas menggunakan metode Breusch-Pagan. Hipotesis awal dari metode ini adalah:

  • H0: Variansi error menyebar konstan (Homoscedasticity)
  • H1: Variansi error menyebar tidak konstan/membentuk pola (Heteroscedasticity)

Apabila pvalue > alpha, maka gagal tolak H0. Apabila pvalue < alpha maka tolak H0.

lmtest::bptest(graduate2_none)
## 
##  studentized Breusch-Pagan test
## 
## data:  graduate2_none
## BP = 32.728, df = 7, p-value = 2.975e-05
plot(graduate2_none$fitted.values, graduate2_none$residuals)
abline(h = 0, col = "red")

Dari hasil uji Homoskedastisitas, diperoleh nilai pvalue < alpha serta persebaran nilai residual pada plot tidak menunjukkan pola yang acak. Sehingga dapat ditarik kesimpulan bahwa variansi error tidak menyebar secara acak.

5.2.4 Multikolinearitas

vif(graduate2_none)
##        Serial.No.         GRE.Score       TOEFL.Score University.Rating 
##          1.072706          4.374339          3.923390          2.859825 
##               LOR              CGPA          Research 
##          2.249242          5.078100          1.628725

Berdasarkan hasil uji multikolinearitas, nilai VIF untuk keseluruhan variabel prediktor adalah < 10 sehingga dapat disimpulkan bahwa tidak terdapat multikolinearitas antar variabel.

6 Data Test Model

Setelah mendapatkan model dari data train, model tersebut perlu diuji dengan data test untuk melihat apakah model tersebut dapat digunakan untuk data yang belum pernah dipelajari sebelumnya.

graduate2_test = predict(object = graduate2_none, newdata = data_test %>% select(-Chance.of.Admit))

RMSE(pred = graduate2_none$fitted.values, obs = data_train$Chance.of.Admit)
## [1] 0.0586837
RMSE(pred = graduate2_test, obs = data_test$Chance.of.Admit)
## [1] 0.0652728

Hasil uji coba model kepada data test ternyata menghasilkan RMSE yang lebih besar. Maka dapat disimpulkan bahwa model bersifat overfit.

7 Improvisasi Model

Berdasarkan hasil uji asumsi, ternyata model yang telah dibuat tidak memenuhi uji asumsi. Kita akan melakukan improvisasi terhadap model agar didapatkan model yang lebih baik.

7.1 Feature Selection dan Filtering

Kita akan meninjau kembali variabel-variabel prediktor yang digunakan dalam pemodelan.

graduate2 %>% 
  inspect_num() %>% 
  show_plot

Dari histogram diatas, dapat dilihat bahwa terdapat beberapa variabel yang menunjukkan kurva distribusi kurang normal sehingga terdapat kemungkinan bahwa model kurang fit dikarenakan data tersebut. Maka dilakukan filter data.

graduate_filter = graduate2 %>%
  filter(Chance.of.Admit >= 0.55,
         GRE.Score >= 300,
         CGPA >= 7.5,
         TOEFL.Score >= 98,
         LOR >= 2)

graduate_filter %>% 
  inspect_num() %>% 
  show_plot

ggcorr(graduate_filter, label = TRUE, hjust = 1, layout.exp = 2, label_size = 3)

7.2 Re-Modelling

Kita melakukan pemodelan ulang, dengan tetap membagi data menjadi data train dan data test.

7.2.1 Pembagian Data Train dan Test

set.seed(123)
sampel = round(0.7 * nrow(graduate_filter), 0)
index = sample(seq_len(nrow(graduate_filter)), size = sampel)

data_train2 = graduate_filter[index, ]
data_test2 = graduate_filter[-index, ]

7.2.2 Linear Regression

set.seed(123)
model_filter = lm(formula = Chance.of.Admit ~ ., data = data_train2)
summary(model_filter)
## 
## Call:
## lm(formula = Chance.of.Admit ~ ., data = data_train2)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.158502 -0.022982  0.004301  0.028718  0.107694 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -1.032e+00  1.231e-01  -8.387 5.49e-15 ***
## Serial.No.         7.139e-05  2.696e-05   2.648 0.008671 ** 
## GRE.Score          1.705e-03  5.648e-04   3.018 0.002837 ** 
## TOEFL.Score        3.207e-03  9.793e-04   3.275 0.001225 ** 
## University.Rating  1.346e-02  3.977e-03   3.383 0.000844 ***
## LOR                1.193e-02  4.705e-03   2.536 0.011901 *  
## CGPA               9.040e-02  1.109e-02   8.153 2.47e-14 ***
## Research           2.441e-02  7.373e-03   3.310 0.001085 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04325 on 225 degrees of freedom
## Multiple R-squared:  0.8438, Adjusted R-squared:  0.8389 
## F-statistic: 173.6 on 7 and 225 DF,  p-value: < 2.2e-16

Setelah dilakukan filter data dan dilakukan pemodelan regresi linear berdasarkan data train, diperoleh nilai RMSE yang meningkat menjadi 83.89%. Hal tersebut mengindikasikan model yang dihasilkan lebih baik.

7.3 Uji Asumsi

Untuk menentukan model layak tau tidak, perlu dilakukan uji asumsi ulang seperti pada step pada section sebelumnya.

7.3.1 Linearitas

cor.test(graduate_filter$Chance.of.Admit, graduate_filter$CGPA)
## 
##  Pearson's product-moment correlation
## 
## data:  graduate_filter$Chance.of.Admit and graduate_filter$CGPA
## t = 31.473, df = 331, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8360742 0.8903829
## sample estimates:
##       cor 
## 0.8657552
linearity2 = data.frame(residual2 = model_filter$residuals, fitted2 = model_filter$fitted.values)

linearity2 %>% ggplot(aes(fitted2, residual2)) + 
  geom_point() + 
  geom_smooth() + 
  geom_hline(aes(yintercept = 0)) + 
  theme(panel.grid = element_blank(), panel.background = element_blank())
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

7.3.2 Normalitas Residual

shapiro.test(model_filter$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  model_filter$residuals
## W = 0.96617, p-value = 2.43e-05
hist(model_filter$residuals)

7.3.3 Homoskedastisitas

lmtest::bptest(model_filter)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_filter
## BP = 32.603, df = 7, p-value = 3.139e-05
plot(model_filter$fitted.values, model_filter$residuals)
abline(h = 0, col = "red")

7.3.4 Multikolinearitas

vif(model_filter)
##        Serial.No.         GRE.Score       TOEFL.Score University.Rating 
##          1.131569          4.168960          3.454910          2.413062 
##               LOR              CGPA          Research 
##          1.737795          4.093429          1.544101

Dari hasil uji asumsi pada model terbaru, diperoleh hasil bahwa:

  • Pemodelan terlihat lebih linear,
  • Residual terdistribusi sedikit mendekati normal dibanding pemodelan sebelumnya,
  • Residual tersebar lebih acak namun tidak terlalu spesifik,
  • Tidak terdapat multikolinearitas antar variabel

7.4 Implementasi Model ke Data Test

model_filter_test = predict(object = model_filter, newdata = data_test2 %>% select(-Chance.of.Admit))

RMSE(pred = model_filter$fitted.values, obs = data_train2$Chance.of.Admit)
## [1] 0.04250285
RMSE(pred = model_filter_test, obs = data_test2$Chance.of.Admit)
## [1] 0.05082837

Hasil uji coba model ke dalam data test masih menunjukkan model yang overfit ~1%.

8 Interpretasi Model

Berdasarkan proses pengolahan data hingga didapatkan model final, didapatkan hasil bahwa variabel yang mempengaruhi Chance of Admit adalah :

  • Serial No,
  • GRE Score,
  • Toefl Score,
  • University Rating,
  • Letter of Recommendation,
  • CGPA, dan
  • Research

Pemodelan dilakukan sebanyak 2x dengan melakukan filtering data pada saat pemodelan kedua. Proses pemodelan tersebut memperoleh hasil sebagai berikut:

  • Pemodelan 1
    • RMSE pada data train = 5.87%
    • RMSE pada data test = 6.53%
  • Pemodelan 2
    • RMSE pada data train = 4.25%
    • RMSE pada data test = 5.08%

Hasil pada RMSE menunjukkan pada model bersifat overfit.

Berdasarkan hasil uji asumsi, baik pada model 1 maupun pada model 2 hanya memenuhi uji multikolinearitas. Uji linearitas tidak terlalu menunjukkan model yang bersifat linear, serta pada uji Shapiro residual tidak terdistribusi normal, dan tidak tersebar acak pada uji Breusch-Pagan.

Kemungkinan uji asumsi tersebut tidak terpenuhi dapat dikarenakan proses handling data yang kurang detail sehingga terdapat kemungkinan data yang bersifat outlier, feature selection yang belum tepat, serta variansi data yang digunakan.