Regression Model
Background
Regresi Linier adalah suatu model statistik yang umum dan paling sederhana yang digunakan untuk Machine Learning untuk melakukan prediksi dengan cara supervised learning.
Regresi linier hanya dapat dilakukan untuk data yang bersifat disktit atau kontinue dan regresi linier melibatkan 2 variable dimana salah satunya adalah variabel independen (x) dan variable dependen (y)
Linear Regression
Model simpel linear regression adalah sebagai berikut :
Untuk memperjelas tentang linear regression, kita akan gunakan data Admission_Predict untuk melakukan prediksi terhadap Chance of Admit ada beberapa variabel prediktor yang telah tersedia
# import libs
library(tidyverse)
library(lubridate)
library(GGally)
library(MLmetrics)
library(lmtest)
library(car)
library(plotly)
library(ggplot2)
Data preparation
## Serial.No. GRE.Score TOEFL.Score University.Rating SOP LOR CGPA Research
## 1 1 337 118 4 4.5 4.5 9.65 1
## 2 2 324 107 4 4.0 4.5 8.87 1
## 3 3 316 104 3 3.0 3.5 8.00 1
## 4 4 322 110 3 3.5 2.5 8.67 1
## 5 5 314 103 2 2.0 3.0 8.21 0
## 6 6 330 115 5 4.5 3.0 9.34 1
## Chance.of.Admit
## 1 0.92
## 2 0.76
## 3 0.72
## 4 0.80
## 5 0.65
## 6 0.90
## Rows: 500
## Columns: 9
## $ Serial.No. <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15...
## $ 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, 3, 4, 4, 3, 3, 3, 3...
## $ SOP <dbl> 4.5, 4.0, 3.0, 3.5, 2.0, 4.5, 3.0, 3.0, 2.0, 3.5,...
## $ LOR <dbl> 4.5, 4.5, 3.5, 2.5, 3.0, 3.0, 4.0, 4.0, 1.5, 3.0,...
## $ CGPA <dbl> 9.65, 8.87, 8.00, 8.67, 8.21, 9.34, 8.20, 7.90, 8...
## $ Research <int> 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0...
## $ Chance.of.Admit <dbl> 0.92, 0.76, 0.72, 0.80, 0.65, 0.90, 0.75, 0.68, 0...
data admission berisi 9 kolom dan 500 bari untuk tipe semua data yang telah diimport adalah bersifat disktit dan kontinue
cek missing value agar tidak mengganggu pada pemodelan.
## [1] FALSE
remove unused varible & adjust data type
EDA
kita bisa lihat bahwa grade point averag (GPA) adalah variabel prediktor yang memiliki correlation yang kuat terhadap variabel target
ggplot(data = ad, aes(x = Chance.of.Admit, y = CGPA ))+
geom_point()+
geom_smooth(method = "lm", se = FALSE)+
labs(title = "Chance.of.Admit",
x = "Chance.of.Admit",
y = "CGPA")+
theme_minimal()
Dengan mengamati graph diatas, kita dapat melihat lebih jelas bahwa variabel CGPA memiliki hubungan yang kuat positif mempengaruhi terhadap Chance.of.Admit
Modeling
kita akan membuat model regresi linear dengan variabel yang memiliki kolerasi tertinggi dan chace.of.admit sebagai targetnya.
##
## Call:
## lm(formula = Chance.of.Admit ~ CGPA, data = ad)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.276592 -0.028169 0.006619 0.038483 0.176961
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.04434 0.04230 -24.69 <0.0000000000000002 ***
## CGPA 0.20592 0.00492 41.85 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.06647 on 498 degrees of freedom
## Multiple R-squared: 0.7787, Adjusted R-squared: 0.7782
## F-statistic: 1752 on 1 and 498 DF, p-value: < 0.00000000000000022
Dapat kita lihat bahwa R-square memiliki nilai 77.87% nilai nya cukup bagus, artinya nilai CGPA sudah bisa menjelaskan nilai dari chace of admit sebesar 77.87% ketika diketahui informasi CGPA sebesar 100%, maka dapat diketahui informasi chace of admit sebesar 77.87%, 22.13% infomasi lain dijelaskan oleh faktor external lainnya. dengan kata lain CGPA berkontribusi sebesar 77.87% terhadap chance of admit.
selanjutnya kita akan membuat model dengan all predictor
##
## Call:
## lm(formula = Chance.of.Admit ~ ., data = ad)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.266657 -0.023327 0.009191 0.033714 0.156818
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.2757251 0.1042962 -12.232 < 0.0000000000000002 ***
## GRE.Score 0.0018585 0.0005023 3.700 0.000240 ***
## TOEFL.Score 0.0027780 0.0008724 3.184 0.001544 **
## University.Rating 0.0059414 0.0038019 1.563 0.118753
## SOP 0.0015861 0.0045627 0.348 0.728263
## LOR 0.0168587 0.0041379 4.074 0.0000538 ***
## CGPA 0.1183851 0.0097051 12.198 < 0.0000000000000002 ***
## Research1 0.0243075 0.0066057 3.680 0.000259 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05999 on 492 degrees of freedom
## Multiple R-squared: 0.8219, Adjusted R-squared: 0.8194
## F-statistic: 324.4 on 7 and 492 DF, p-value: < 0.00000000000000022
nilai r-squarenya adalah 0.8219007 artinya model yang kita buat dapat menjelaskan sebesar 0.8219007 dan sisanya oleh faktor lain.
Prediksi Model
ad1_predict <- predict(object = ad_lm1, newdata = ad)
ad_predict <- predict(object = ad_lm, newdata = ad)
head(ad1_predict)
## 1 2 3 4 5 6
## 0.9428093 0.7821904 0.6030385 0.7410060 0.6462821 0.8789736
## 1 2 3 4 5 6
## 0.9518830 0.8040313 0.6534481 0.7445193 0.6315496 0.8744934
Evaluasi Model
Berikutnya kita akan melihat kebaikan dari suatu model dengan menggunakan Adjusted R-square,
## [1] 0.7782075
## [1] 0.8193668
Berdasaran hasil adj Adjusted R-square maka untuk sementara akan dipilih model dengan all prediktor
RMSE
## [1] 0.06633679
## [1] 0.05950421
Jika membandingkan nilai RMSE yang didapat maka model dengan all predictor memiliki RMSE yang lebih kecil
## [1] 0.34 0.97
Jika dibandingkan dengan nilai actual interval Chance.of.Admit maka nilai RMSE yang di hasilkan masih cukup kecil
Step wise regression
Regresi Stepwise adalah salah satu metode untuk mendapatkan model terbaik dari sebuah analisis regresi, dengan menggunakan metode backward, forward dan both.
## Start: AIC=-2805.71
## Chance.of.Admit ~ GRE.Score + TOEFL.Score + University.Rating +
## SOP + LOR + CGPA + Research
##
## Df Sum of Sq RSS AIC
## - SOP 1 0.00043 1.7708 -2807.6
## <none> 1.7704 -2805.7
## - University.Rating 1 0.00879 1.7792 -2805.2
## - TOEFL.Score 1 0.03648 1.8069 -2797.5
## - Research 1 0.04872 1.8191 -2794.1
## - GRE.Score 1 0.04926 1.8196 -2794.0
## - LOR 1 0.05973 1.8301 -2791.1
## - CGPA 1 0.53542 2.3058 -2675.6
##
## Step: AIC=-2807.59
## Chance.of.Admit ~ GRE.Score + TOEFL.Score + University.Rating +
## LOR + CGPA + Research
##
## Df Sum of Sq RSS AIC
## <none> 1.7708 -2807.6
## - University.Rating 1 0.01190 1.7827 -2806.2
## - TOEFL.Score 1 0.03760 1.8084 -2799.1
## - Research 1 0.04893 1.8197 -2796.0
## - GRE.Score 1 0.04901 1.8198 -2795.9
## - LOR 1 0.06892 1.8397 -2790.5
## - CGPA 1 0.55954 2.3304 -2672.3
dari hasil strepwise “backward” suggest variabel prediktor yang harus digunakan untukk membuat model linear regression adalah Chance.of.Admit ~ GRE.Score + TOEFL.Score + University.Rating + LOR + CGPA + Research
backward_lm <- lm(formula = Chance.of.Admit~ University.Rating+TOEFL.Score+Research+GRE.Score+LOR+CGPA, data = ad)
summary(backward_lm)
##
## Call:
## lm(formula = Chance.of.Admit ~ University.Rating + TOEFL.Score +
## Research + GRE.Score + LOR + CGPA, data = ad)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.26617 -0.02321 0.00946 0.03345 0.15713
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.2800138 0.1034717 -12.371 < 0.0000000000000002 ***
## University.Rating 0.0064279 0.0035318 1.820 0.069363 .
## TOEFL.Score 0.0028072 0.0008676 3.236 0.001295 **
## Research1 0.0243538 0.0065985 3.691 0.000248 ***
## GRE.Score 0.0018528 0.0005016 3.694 0.000246 ***
## LOR 0.0172873 0.0039464 4.380 0.0000145 ***
## CGPA 0.1189994 0.0095344 12.481 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05993 on 493 degrees of freedom
## Multiple R-squared: 0.8219, Adjusted R-squared: 0.8197
## F-statistic: 379.1 on 6 and 493 DF, p-value: < 0.00000000000000022
model_forward <- stats::step(object = model_none_ad, direction = "forward", scope = list(lower = model_none_ad, upper = model_all_ad ))
## Start: AIC=-1957
## Chance.of.Admit ~ 1
##
## Df Sum of Sq RSS AIC
## + CGPA 1 7.7401 2.2003 -2709.0
## + GRE.Score 1 6.5275 3.4129 -2489.5
## + TOEFL.Score 1 6.2388 3.7016 -2448.9
## + University.Rating 1 4.7344 5.2060 -2278.4
## + SOP 1 4.6525 5.2879 -2270.6
## + LOR 1 4.1401 5.8003 -2224.3
## + Research 1 2.9620 6.9784 -2131.9
## <none> 9.9404 -1957.0
##
## Step: AIC=-2709.01
## Chance.of.Admit ~ CGPA
##
## Df Sum of Sq RSS AIC
## + GRE.Score 1 0.208115 1.9922 -2756.7
## + TOEFL.Score 1 0.171696 2.0286 -2747.6
## + Research 1 0.142249 2.0580 -2740.4
## + LOR 1 0.114950 2.0853 -2733.8
## + University.Rating 1 0.090932 2.1094 -2728.1
## + SOP 1 0.062627 2.1377 -2721.4
## <none> 2.2003 -2709.0
##
## Step: AIC=-2756.69
## Chance.of.Admit ~ CGPA + GRE.Score
##
## Df Sum of Sq RSS AIC
## + LOR 1 0.116232 1.8759 -2784.8
## + Research 1 0.062232 1.9299 -2770.6
## + University.Rating 1 0.059192 1.9330 -2769.8
## + TOEFL.Score 1 0.049984 1.9422 -2767.4
## + SOP 1 0.049062 1.9431 -2767.2
## <none> 1.9922 -2756.7
##
## Step: AIC=-2784.75
## Chance.of.Admit ~ CGPA + GRE.Score + LOR
##
## Df Sum of Sq RSS AIC
## + Research 1 0.049001 1.8269 -2796.0
## + TOEFL.Score 1 0.040748 1.8352 -2793.7
## + University.Rating 1 0.022370 1.8536 -2788.8
## + SOP 1 0.009319 1.8666 -2785.2
## <none> 1.8759 -2784.8
##
## Step: AIC=-2795.98
## Chance.of.Admit ~ CGPA + GRE.Score + LOR + Research
##
## Df Sum of Sq RSS AIC
## + TOEFL.Score 1 0.044229 1.7827 -2806.2
## + University.Rating 1 0.018523 1.8084 -2799.1
## + SOP 1 0.007774 1.8192 -2796.1
## <none> 1.8269 -2796.0
##
## Step: AIC=-2806.24
## Chance.of.Admit ~ CGPA + GRE.Score + LOR + Research + TOEFL.Score
##
## Df Sum of Sq RSS AIC
## + University.Rating 1 0.0118980 1.7708 -2807.6
## <none> 1.7827 -2806.2
## + SOP 1 0.0035451 1.7792 -2805.2
##
## Step: AIC=-2807.59
## Chance.of.Admit ~ CGPA + GRE.Score + LOR + Research + TOEFL.Score +
## University.Rating
##
## Df Sum of Sq RSS AIC
## <none> 1.7708 -2807.6
## + SOP 1 0.00043486 1.7704 -2805.7
untuk model stepwise “forward” suggest variabel prediktor yang harus digunakan adalah Chance.of.Admit ~ CGPA + GRE.Score + LOR + Research + TOEFL.Score + University.Rating
forward_lm <- lm(formula = Chance.of.Admit ~ CGPA + GRE.Score + LOR + Research + TOEFL.Score +University.Rating, data = ad)
summary(model_forward)
##
## Call:
## lm(formula = Chance.of.Admit ~ CGPA + GRE.Score + LOR + Research +
## TOEFL.Score + University.Rating, data = ad)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.26617 -0.02321 0.00946 0.03345 0.15713
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.2800138 0.1034717 -12.371 < 0.0000000000000002 ***
## CGPA 0.1189994 0.0095344 12.481 < 0.0000000000000002 ***
## GRE.Score 0.0018528 0.0005016 3.694 0.000246 ***
## LOR 0.0172873 0.0039464 4.380 0.0000145 ***
## Research1 0.0243538 0.0065985 3.691 0.000248 ***
## TOEFL.Score 0.0028072 0.0008676 3.236 0.001295 **
## University.Rating 0.0064279 0.0035318 1.820 0.069363 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05993 on 493 degrees of freedom
## Multiple R-squared: 0.8219, Adjusted R-squared: 0.8197
## F-statistic: 379.1 on 6 and 493 DF, p-value: < 0.00000000000000022
Assumption
- Linearity : memiliki hubungan linear antara variabel prediktor dengan target variabel
- Residual Normal : eror berdistribusi normal
- No-Heteroskedastisity : erornya tidak berpola dan homogen
- No-Multikolinearity : tidak ada multikolinearitas antar variabel independen
LINEARITY
Ketika pengecekan linearity, kita dapat melihat nilai kolerasi antar variable ketika terdapat nilai yang tidak linear maka bisa dilakukan transformasi data menggunakan log() atau exp()
## Shapirotest
Untuk pengcekan terhadap residual telah berdistribusi normal maka bisa dilakukan dengan uji shapiro.test atau dengan histogram
H0 : residual berdisitribusi normal H1 : residual tidak berdistribusi normal
berdasarkan hasil histogram maka residual berdistribusi normal.
##
## Shapiro-Wilk normality test
##
## data: ad_lm$residuals
## W = 0.92549, p-value = 0.000000000000004824
Berdasarkan hasil shapiro.tes nilai nya p-value yang dihasilkan lebih kecil dari 0.05 sehingga tolak H0 untuk asumsi ini tidak terpenuhi, harus dilakukan tuning kedalam beberapa parameter seperti menghapus outlier
Non-Heteroskedastisity
##
## studentized Breusch-Pagan test
##
## data: ad_lm
## BP = 30.516, df = 7, p-value = 0.00007634
No-Multikolinearity
Untuk melihat setiap prediktor tidak memiliki korelasi yang kuat antar prediktor, kita dapat menggunakan fungsi vif dengan nilai dari setiap prediktor < 10
## GRE.Score TOEFL.Score University.Rating SOP
## 4.464249 3.904213 2.621036 2.835210
## LOR CGPA Research
## 2.033555 4.777992 1.494008
Conclusion
Hasil dari model linier regression yang telah dibuat masih harus banyak improvment karena masih ada asumsi yang belum terpenuhi.
hasil model final yang dilipih adalah Chance.of.Admit (Y) = -1.2757251 + 0.0018585(GRE.Score) + 0.0018585(TOEFL.Score)+0.0059414(University.Rating) + 0.0015861(SOP)+ 0.0168587(LOR)+0.1183851(GPA)+0.0243075(Research1)
Jika kita masukan nilai 1 pada GRE.score maka akan menaikan nilai chance of admit