Berikut adalah analisis mengenai data Admission untuk program Master di UCLA Graduate yang disediakan oleh Mohan S Acharya, Asfia Armaan, Aneeta S Antony : A Comparison of Regression Models for Prediction of Graduate Admissions, IEEE International Conference on Computational Intelligence in Data Science 2019. Data admission tersebut menunujukkan pengaruh dari parameter terhadap pengajuan program master.
Data tersebut akan diolah dengan linear regression analysis dan dibuat suatu model untuk memprediksi faktor-faktor yang menjadikan nilai GPA menjadi salah satu aspek yang penting dalam mengajukan program Master.
library(readr)
library(dplyr)
##
## 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)
library(tidyverse)
## -- Attaching packages --------------------------- tidyverse 1.3.0 --
## v tibble 2.1.3 v stringr 1.4.0
## v tidyr 1.0.0 v forcats 0.4.0
## v purrr 0.3.3
## -- Conflicts ------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(GGally)
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
##
## Attaching package: 'GGally'
## The following object is masked from 'package:dplyr':
##
## nasa
library(funModeling)
## Loading required package: Hmisc
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
##
## src, summarize
## The following objects are masked from 'package:base':
##
## format.pval, units
## funModeling v.1.9.3 :)
## Examples and tutorials at livebook.datascienceheroes.com
## / Now in Spanish: librovivodecienciadedatos.ai
##
## Attaching package: 'funModeling'
## The following object is masked from 'package:GGally':
##
## range01
library(lme4)
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
graduate <- read.csv("Admission_Predict.csv")
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 ...
jika dilihat dataset tersebut mengandung beberapa parameter yang dianggap penting selama mengajukan aplikasi untuk program Master di UCLA Graduate , berikut ini penjelasan setiap parameter:
Serial. No.: Nomor Serial ( out of 400 )GRE Scores: Nilai GRE ( out of 340 )TOEFL Scores: Nilai TOEFL ( out of 120 )University Rating: Rating dari Universitas ( out of 5 )Statement of Purpose and Letter of Recommendation Strength: Lembar pernyataan tujuan dan lembar rekomendasi dari universitas ( out of 5 )Undergraduate GPA: Nilai dari GPA ( out of 10 )Research Experience: Pengalaman dalam penelitian ( either 0 or 1 )Chance of Admit: Peluang untuk diterima ( ranging from 0 to 1 )pada kasus bisnis ini saya ingin melihat, dengan asumsi bahwa nilai CGPA sangat berpengaruh dengan Chance of admit, TOEFL Score dan GRE Score atau pada setiap parameter yang ada untuk aplikasi program Master
sebelum memulai pembuatan model hal pertama yang perlu dilakukan adalah mengecek keberadaan missing value pada dataset
table(anyNA(graduate))
##
## FALSE
## 1
kesimpulan tidak terdapat nilai missing apda semua data
Melakukan eksplorasi data analisis
ggcorr(graduate, label = TRUE, hjust=1)
Pada grafik korelasi, terlihat bahwa hampir semua variabel kecuali Serial No. memiliki pengaruh positif terhadap Chance Of Admit dimana faktor CGPA memiliki korelasi positif yang paling tinggi dibandingkan faktor-faktor lain.
Cek outlier mengunakan plot_num atau boxplot
plot_num(graduate)
kolom research dan Serial No. akan dihapus karena tidak menghasilkan informasi yg diperlukan
graduate <- graduate %>%
select(GRE.Score, TOEFL.Score, University.Rating, SOP, LOR, CGPA, Chance.of.Admit)
head(graduate,1)
## GRE.Score TOEFL.Score University.Rating SOP LOR CGPA Chance.of.Admit
## 1 337 118 4 4.5 4.5 9.65 0.92
boxplot(graduate)
bila dillihat terdapat data outlier di variabel LOR, CGPA, dan Chance.of.Admit
Menghapus data outlier untuk variabel LOR, CGPA, dan Chance of Admit
graduate <- graduate %>%
select(TOEFL.Score, GRE.Score, SOP, LOR, CGPA, Chance.of.Admit, University.Rating) %>%
filter(graduate$CGPA > 8 & graduate$Chance.of.Admit > 0.5 & graduate$University.Rating > 1)
boxplot(graduate)
plot_num(graduate)
setelah dilakukan Data Wrangling tidak terdapat outlier dan secara umum data berbentuk distribusi normal.
feature selection yg ingin dilakukan adalah melihat hubungan antara CGPA (variabel target) dengan nilai TOEFL, GRE dan chance of Admit (variabel prediktor) karena nilai tersebut memiliki korelasi positif yang tinggi terhadap variabel target. maka dari itu kita perlu membuat modelnya terlebih dahulu
model_gr <- lm(formula = CGPA ~ TOEFL.Score + GRE.Score + Chance.of.Admit, graduate)
model_gr
##
## Call:
## lm(formula = CGPA ~ TOEFL.Score + GRE.Score + Chance.of.Admit,
## data = graduate)
##
## Coefficients:
## (Intercept) TOEFL.Score GRE.Score Chance.of.Admit
## 0.90456 0.02041 0.01310 1.92154
melakukan interpertasi pada adj R-Squared dan signifikansi prediktor dengan menggunakan summary
summary(model_gr)
##
## Call:
## lm(formula = CGPA ~ TOEFL.Score + GRE.Score + Chance.of.Admit,
## data = graduate)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.7177 -0.1346 0.0127 0.1226 0.6434
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.904563 0.496296 1.823 0.0693 .
## TOEFL.Score 0.020411 0.003889 5.249 2.81e-07 ***
## GRE.Score 0.013098 0.002161 6.060 3.87e-09 ***
## Chance.of.Admit 1.921541 0.179680 10.694 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2096 on 316 degrees of freedom
## Multiple R-squared: 0.799, Adjusted R-squared: 0.7971
## F-statistic: 418.7 on 3 and 316 DF, p-value: < 2.2e-16
dapat dilihat bahwa nilai Adjusted R-squared dari model_gr bernilai 0.7971
selanjutnya akan dicoba menggunakan pemilihan variabel prediktor secara otomatis menggunakan step wise regression dengan metode backward elimination
model_gr1 <- lm(CGPA~., graduate)
step(model_gr1, direction = "backward")
## Start: AIC=-1028.96
## CGPA ~ TOEFL.Score + GRE.Score + SOP + LOR + Chance.of.Admit +
## University.Rating
##
## Df Sum of Sq RSS AIC
## <none> 12.293 -1028.96
## - LOR 1 0.08216 12.376 -1028.83
## - University.Rating 1 0.23217 12.526 -1024.98
## - SOP 1 0.33216 12.626 -1022.43
## - TOEFL.Score 1 0.77663 13.070 -1011.36
## - GRE.Score 1 1.64089 13.934 -990.87
## - Chance.of.Admit 1 1.96337 14.257 -983.55
##
## Call:
## lm(formula = CGPA ~ TOEFL.Score + GRE.Score + SOP + LOR + Chance.of.Admit +
## University.Rating, data = graduate)
##
## Coefficients:
## (Intercept) TOEFL.Score GRE.Score SOP
## 1.23399 0.01666 0.01325 0.06028
## LOR Chance.of.Admit University.Rating
## 0.02767 1.36140 0.04155
cek menggunakan function summary untuk mendapatkan nilai Adj. R-Squared dari model yang dihasilkan oleh step wise
summary(lm(formula = CGPA ~ TOEFL.Score + GRE.Score + SOP + LOR + Chance.of.Admit +
University.Rating, data = graduate))
##
## Call:
## lm(formula = CGPA ~ TOEFL.Score + GRE.Score + SOP + LOR + Chance.of.Admit +
## University.Rating, data = graduate)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.75023 -0.12272 0.00726 0.12396 0.65932
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.233987 0.479457 2.574 0.0105 *
## TOEFL.Score 0.016665 0.003748 4.447 1.21e-05 ***
## GRE.Score 0.013250 0.002050 6.464 3.92e-10 ***
## SOP 0.060276 0.020727 2.908 0.0039 **
## LOR 0.027668 0.019130 1.446 0.1491
## Chance.of.Admit 1.361403 0.192553 7.070 1.01e-11 ***
## University.Rating 0.041548 0.017089 2.431 0.0156 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1982 on 313 degrees of freedom
## Multiple R-squared: 0.822, Adjusted R-squared: 0.8186
## F-statistic: 240.9 on 6 and 313 DF, p-value: < 2.2e-16
Menyimpan model step-wise regression ke dalam object
model_gr1 <- lm(formula = CGPA ~ TOEFL.Score + GRE.Score + SOP + LOR + Chance.of.Admit + University.Rating, data = graduate)
Metode step-wise regression akan menghasilkan formula optimum berdasarkan nilai Akaike Information Criterion (AIC) terendah, semakin rendah nilai AIC, maka nilai observasi yang tidak tertangkap semakin kecil.
bila dibandingkan dengan model_gr yang menggunakan variabel TOEFL.Score, GRE.Score, dan Chance.of.Admit didapatkan nilai R-Squared sebesar 0.7971, nilai tersebut lebih rendah dibandingkan dengan hasil Adj. R-squared yang didapatkan dengan metode step-wise regression yaitu 0.8186.
\(CGPA = 0.01325(GRE.Score) + 0.01666(TOEFL.Score) + 0.04155(University.Rating) + 0.06028(SOP) + 0.02767(LOR) + 1.36140(Chance.of.Admit)\)
\(CGPA = 0.01310(GRE.Score) + 0.02041(TOEFL.Score) + 1.92154(Chance.of.Admit)\)
Akan dicoba prediksi nilai CGPA berdasarkan nlai prediktor dan hasilnya akan dibandingkan dengan data actual yg dimiliki
predict(model_gr, data.frame(GRE.Score = 337, TOEFL.Score = 118, Chance.of.Admit = 0.92), interval = "confidence", level = 0.95)
## fit lwr upr
## 1 9.494795 9.447199 9.542391
predict(model_gr1, data.frame(GRE.Score = 337, TOEFL.Score = 118, University.Rating = 4, SOP = 4.5, LOR = 4.5, Chance.of.Admit = 0.92), interval = "confidence", level = 0.95)
## fit lwr upr
## 1 9.480227 9.431318 9.529136
menghitung error pada model_gr
sqrt((9.920-9.4947)^2)
## [1] 0.4253
menghitung error pada model_gr1
sqrt((9.920-9.4802)^2)
## [1] 0.4398
Analisis dari perhitungan Root Square Error (RSE) menghasilkan model_gr memiliki nilai RSE yang lebih kecil sehingga lebih baik dibandingkan dari model_gr1
cek normalitas pada model_gr
hist(model_gr$residuals, breaks=20)
shapiro.test(model_gr$residuals)
##
## Shapiro-Wilk normality test
##
## data: model_gr$residuals
## W = 0.99146, p-value = 0.06127
cek normalitas pada model_gr1
hist(model_gr1$residuals, breaks=20)
shapiro.test(model_gr1$residuals)
##
## Shapiro-Wilk normality test
##
## data: model_gr1$residuals
## W = 0.99061, p-value = 0.03864
pada model_gr mendapatkan P-value > 0.05 sehingga H0 ditolak. akan tetapi pada model_gr1 nilai P-value < 0.05 sehingga error tidak berdistribusi normal pada mean.
Melakukan uji Heterscedasticity pada model model_gr
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
plot(graduate$CGPA, model_gr$residuals)
abline(h = 0, col = "red")
menggunakan fungsi bptest untuk mendapatkan nilai p-value
bptest(model_gr)
##
## studentized Breusch-Pagan test
##
## data: model_gr
## BP = 8.6939, df = 3, p-value = 0.03365
selanjutnya melakukan uji Heterscedasticity pada model model_gr1
plot(graduate$CGPA, model_gr1$residuals)
abline(h = 0, col = "red")
bptest(model_gr1)
##
## studentized Breusch-Pagan test
##
## data: model_gr1
## BP = 7.0153, df = 6, p-value = 0.3194
Untuk kedua model, P-value < 0.05 sehingga H0 ditolak. Hal ini juga berarti residual memiliki pola (Homoscedasticity) dimana semua pola yang ada tidak berhasil ditangkap oleh model yang dibuat.
library(car)
## Loading required package: carData
## Registered S3 methods overwritten by 'car':
## method from
## influence.merMod lme4
## cooks.distance.influence.merMod lme4
## dfbeta.influence.merMod lme4
## dfbetas.influence.merMod lme4
##
## Attaching package: 'car'
## The following object is masked from 'package:purrr':
##
## some
## The following object is masked from 'package:dplyr':
##
## recode
melakukan uji Varian Inflation Factor (Multicololinearity) pada model_gr
vif(model_gr)
## TOEFL.Score GRE.Score Chance.of.Admit
## 3.040914 3.458325 2.821137
selanjutnya melakukan uji Varian Inflation Factor (Multicololinearity) pada model_gr1
vif(model_gr1)
## TOEFL.Score GRE.Score SOP LOR
## 3.159310 3.480423 2.599956 1.961072
## Chance.of.Admit University.Rating
## 3.624185 2.479542
berdasarkan pada 2 model tidak ada nilai sama dengan atau lebih dari 10 sehingga tidak ditemukan Multicololinearity antar variabel (antar variabel prediktor saling independen).
Berdasarkan hasil analisis, kedua model memiliki kriteria yang cukup baik sebagai model linear regression. Kemudian, bila dibandingkan RSE antara kedua model, model_gr memberikan nilai RSE yang lebih rendah. Oleh karena itu model_gr dipilih sebagai model yang lebih baik.
model_gr yang didapatkan memiliki R-square 0.7971 dan memiliki RSE sebesar 0.4253. Selain itu setelah dilakukan uji analisis, model memiliki kriteria yang hampir baik, meskipun hasil dari uji homoscedasticity tidak memenuhi.
Berdasarkan model ini, nilai GPA berkorelasi positif dengan nilai-nlai TOEFL.Score, GRE.Score, dan Chance.of.Admit. Sehingga dapat diartikan bahwa mahasiswa yang memiliki nilai GPA yang tinggi cenderung pula untuk memiliki nilai TOEFL, GRE dan Peluang untuk diterima pada program Master lebih besar.