Essay of RM

Source Data: https://www.kaggle.com/mohansacharya/graduate-admissions

INTRODUCTION

Pada kali ini saya sebagai data analytic/science akan mencoba membahas Regression Model. Mengapa Regression Model itu penting?

Regression Model penting di karenakan merupakan model yang ada di dalam machine learning yang bisa di gunakan sebagai mem-prediksi target variable yang bersifat numerik atau angka ataupun yang bisa di bilang model matematis. Regression Model yang paling simple adalah Linear Regression. Linear Regression merupakan model sederhana yang paling sering dibahas dalam buku-buku statistika. Modelnya cukup sederhana dan membentuk model dengan pendekatan garis linier dengan prinsip meminimalkan jumlah kuadrat residual pada data Jika satu prediktor maka kita gunakan Simple Linear Regression, namun jika lebih dari satu prediktor maka kita gunakan Multiple Linear Regression.

Load the Data Requirement

library(tidyverse)
library(caret)
library(plotly)
library(data.table)
library(GGally)
library(tidymodels)
library(car)
library(scales)
library(lmtest)
library(performance)
library(MLmetrics)

Membaca Data

Sebelum melakukan wrangling data (membersihkan data), kita harus mengetahui isi datanya tersebut melakukan function berikut dibawah ini:

df <- read.csv("Admission_Predict.csv")
  • cek tipe data dari objek yang kita panggil
str(df)
## '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 ...
  • Dalam summary statistik, R membantu menggambarkan distribusi dari suatu variabel. Sebagai contoh: means, medians, standard deviations, dan skewness pada data.
summary(df)
##    Serial.No.      GRE.Score      TOEFL.Score    University.Rating
##  Min.   :  1.0   Min.   :290.0   Min.   : 92.0   Min.   :1.000    
##  1st Qu.:100.8   1st Qu.:308.0   1st Qu.:103.0   1st Qu.:2.000    
##  Median :200.5   Median :317.0   Median :107.0   Median :3.000    
##  Mean   :200.5   Mean   :316.8   Mean   :107.4   Mean   :3.087    
##  3rd Qu.:300.2   3rd Qu.:325.0   3rd Qu.:112.0   3rd Qu.:4.000    
##  Max.   :400.0   Max.   :340.0   Max.   :120.0   Max.   :5.000    
##       SOP           LOR             CGPA          Research     
##  Min.   :1.0   Min.   :1.000   Min.   :6.800   Min.   :0.0000  
##  1st Qu.:2.5   1st Qu.:3.000   1st Qu.:8.170   1st Qu.:0.0000  
##  Median :3.5   Median :3.500   Median :8.610   Median :1.0000  
##  Mean   :3.4   Mean   :3.453   Mean   :8.599   Mean   :0.5475  
##  3rd Qu.:4.0   3rd Qu.:4.000   3rd Qu.:9.062   3rd Qu.:1.0000  
##  Max.   :5.0   Max.   :5.000   Max.   :9.920   Max.   :1.0000  
##  Chance.of.Admit 
##  Min.   :0.3400  
##  1st Qu.:0.6400  
##  Median :0.7300  
##  Mean   :0.7244  
##  3rd Qu.:0.8300  
##  Max.   :0.9700

berdasarkan point of view sebagai data analytic, kita tidak membutuhkan baris kolom Serial.No karena itu hanya nomor index function(-SelectVariable) dan colom Research hanya mengeluarkan nilai 1 dan 0 yang dimana kita bisa menjadikan tipe data factor

df <- df %>%
  select(-Serial.No.) %>%
  mutate(Research = as.factor(Research))
str(df)
## 'data.frame':    400 obs. of  8 variables:
##  $ 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         : Factor w/ 2 levels "0","1": 2 2 2 2 1 2 2 1 1 1 ...
##  $ Chance.of.Admit  : num  0.92 0.76 0.72 0.8 0.65 0.9 0.75 0.68 0.5 0.45 ...

berdasarkan data frame di atas, kita sudah membersihkan data tsb, Kolom di atas berisi:

  1. GRE Scores (0 dari 340)
  • Graduate Record Examination, adalah tes standar, biasanya diminta oleh universitas di A.S., yang diambil siswa sebelum mendaftar ke gelar Master.
  1. TOEFL Scores (0 dari 120)
  • TOEFL adalah salah satu tes uji bahasa Inggris yang paling dikenal khususnya di Indonesia. Test of English as a Foreign Language.
  1. University Rating (0 dari 5)
  • Rating University berdasarkan feedback
  1. Statement of Purpose and Letter of Recommendation Strength (0 dari 5)
  • Seberapa kuat Pernyataan untuk Tujuan dan Surat Rekomendasi
  1. Undergraduate GPA (0 dari 10)
  • GPA bisa di bilang nilai point rata” atau nilai ratio tiap ujian
  1. Research Experience (antara 0 atau 1)
  • seberapa efektif pengalaman research tsb
  1. Chance of Admit (berkisaran dari 0 ke 1)
  • kesempatan atau peluang yang mungkin untuk masuk ke universitas

Business Question

berdasrakan data di atas, data tersebut memiliki 400 baris dan 8 kolom yang berisi numeric/integer. Menurut saya, target variable yang sangat bisa kita fokuskan adalah Chance of Admit karena itu ada lah sebuah peluang bagaimana siswa/siswa bisa masuk ke Universitas berdasarkan variable-variable lain nya yang nanti kita prediksikan.

Exploratory Data Analysis

ggcorr(df, label = TRUE, label_size = 2.9, hjust = 1, layout.exp = 2)

grafis berdampak sangat kuat di beberapa varibale dan korelasi yang sangat kuat di atas 0.5< seperti GRE.Score,CGPA, TOEFL.Score yang memiliki score 0.8 dan 0.9 pada target variable kita yaitu Change.of.Admit

Asumsi linear regression

Linearity

sebelum membuat model prediksi kita, kita dapat melakukan cor.test() untuk menguji apalah variable target dan prediktor memiliki hubungan linear.

cor.test(df$Chance.of.Admit,df$GRE.Score)
## 
##  Pearson's product-moment correlation
## 
## data:  df$Chance.of.Admit and df$GRE.Score
## t = 26.843, df = 398, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7647419 0.8349536
## sample estimates:
##       cor 
## 0.8026105

Visualisasi confidence interval dari data Grade

library(ggplot2)
ggplot(df, aes(x= Chance.of.Admit, y = GRE.Score)) +
  geom_point(color = "purple", alpha =  0.5) +
  geom_smooth(method = "lm", level = 0.95) 

Sebagai berikut ini adalah contoh kenapa bisa di bilang korelasi yang sangat kuat antara Change.of.Admit dan GRE.Score yang memiliki skala 0.8 yang mendekati 1

MODELING

SPLITING DATA TRAIN & TEST

Sebelum kita membuat model, kita perlu membagi data menjadi dataset train dan dataset test. Kami akan menggunakan dataset kereta untuk melatih model regresi linier. Dataset test akan digunakan sebagai pembanding dan melihat apakah model mengalami overfit dan tidak dapat memprediksi data baru yang belum terlihat selama fase pelatihan. Kami memporsikan 80% dari data sebagai data pelatihan dan sisanya sebagai data pengujian.

index <- initial_split(df, prop = 0.8, strata = "Chance.of.Admit")
df_train <- training(index)
df_test <- testing(index)
df_null <- lm(Chance.of.Admit ~  1, df_train)

pakai set.seed -> random number dikunci, hasil sampling selalu sama

Linear Regression

Rumus :

lm(formula, data, subset, weights)

#formula : formula model yang hendak dibentuk. #data: data yang digunakan untuk membentuk model. #subset : subset data yang akan digunakan dalam pembentukan model. #weight : nilai pembobotan dalam pembentukan model.

RNGkind(sample.kind = "Rounding")
set.seed(777)
model_default <- lm(Chance.of.Admit ~ . , data = df_train)

summary(model_default)
## 
## Call:
## lm(formula = Chance.of.Admit ~ ., data = df_train)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.26171 -0.02314  0.01132  0.03808  0.16132 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -1.3020126  0.1432843  -9.087  < 2e-16 ***
## GRE.Score          0.0018426  0.0006881   2.678 0.007808 ** 
## TOEFL.Score        0.0035177  0.0012603   2.791 0.005578 ** 
## University.Rating  0.0025572  0.0054344   0.471 0.638292    
## SOP               -0.0041580  0.0065291  -0.637 0.524703    
## LOR                0.0248789  0.0064454   3.860 0.000138 ***
## CGPA               0.1128964  0.0144286   7.825 8.09e-14 ***
## Research1          0.0234167  0.0094805   2.470 0.014050 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.06605 on 310 degrees of freedom
## Multiple R-squared:  0.7953, Adjusted R-squared:  0.7907 
## F-statistic: 172.1 on 7 and 310 DF,  p-value: < 2.2e-16

dari kesimpulan di atas kita bisa melihat nilai Estimate nya positif semua yang artinya slope pada garis kemiringan dari semua prediktor itu slope positif dan beberapa secara statistik itu signifikan (P-value lebih kecil dari 0.05 atau 5%). point lainnya yang bisa kita perhatikan adalah nilai Adjussted R-squared bernilai 0.8034 (80%) bisa di bilang sudah cukup sangat bagus di karenakan mendekati 1.0 (100%).

Stepwise model

model_back <- stats::step(object = model_default, direction = "backward")
## Start:  AIC=-1720.29
## Chance.of.Admit ~ GRE.Score + TOEFL.Score + University.Rating + 
##     SOP + LOR + CGPA + Research
## 
##                     Df Sum of Sq    RSS     AIC
## - University.Rating  1  0.000966 1.3536 -1722.1
## - SOP                1  0.001770 1.3544 -1721.9
## <none>                           1.3526 -1720.3
## - Research           1  0.026619 1.3792 -1716.1
## - GRE.Score          1  0.031284 1.3839 -1715.0
## - TOEFL.Score        1  0.033991 1.3866 -1714.4
## - LOR                1  0.065008 1.4176 -1707.4
## - CGPA               1  0.267128 1.6197 -1665.0
## 
## Step:  AIC=-1722.06
## Chance.of.Admit ~ GRE.Score + TOEFL.Score + SOP + LOR + CGPA + 
##     Research
## 
##               Df Sum of Sq    RSS     AIC
## - SOP          1  0.001198 1.3548 -1723.8
## <none>                     1.3536 -1722.1
## - Research     1  0.026795 1.3804 -1717.8
## - GRE.Score    1  0.031907 1.3855 -1716.7
## - TOEFL.Score  1  0.036541 1.3901 -1715.6
## - LOR          1  0.069946 1.4235 -1708.0
## - CGPA         1  0.279030 1.6326 -1664.5
## 
## Step:  AIC=-1723.78
## Chance.of.Admit ~ GRE.Score + TOEFL.Score + LOR + CGPA + Research
## 
##               Df Sum of Sq    RSS     AIC
## <none>                     1.3548 -1723.8
## - Research     1  0.025874 1.3806 -1719.8
## - GRE.Score    1  0.033121 1.3879 -1718.1
## - TOEFL.Score  1  0.035346 1.3901 -1717.6
## - LOR          1  0.080301 1.4351 -1707.5
## - CGPA         1  0.284473 1.6392 -1665.2
model_forward <- stats::step(object = df_null, 
     scope = list(lower = df_null, upper = model_default),
     direction = "forward"
     )
## Start:  AIC=-1229.84
## Chance.of.Admit ~ 1
## 
##                     Df Sum of Sq    RSS     AIC
## + CGPA               1    4.9760 1.6324 -1672.5
## + GRE.Score          1    4.2574 2.3509 -1556.5
## + TOEFL.Score        1    4.1930 2.4154 -1547.9
## + University.Rating  1    3.2653 3.3431 -1444.5
## + SOP                1    3.0198 3.5885 -1422.0
## + LOR                1    2.9879 3.6205 -1419.2
## + Research           1    2.1687 4.4397 -1354.3
## <none>                           6.6083 -1229.8
## 
## Step:  AIC=-1672.5
## Chance.of.Admit ~ CGPA
## 
##                     Df Sum of Sq    RSS     AIC
## + GRE.Score          1  0.128312 1.5041 -1696.5
## + TOEFL.Score        1  0.114578 1.5178 -1693.6
## + LOR                1  0.086329 1.5460 -1687.8
## + Research           1  0.068965 1.5634 -1684.2
## + University.Rating  1  0.041798 1.5906 -1678.8
## + SOP                1  0.027064 1.6053 -1675.8
## <none>                           1.6324 -1672.5
## 
## Step:  AIC=-1696.53
## Chance.of.Admit ~ CGPA + GRE.Score
## 
##                     Df Sum of Sq    RSS     AIC
## + LOR                1  0.092018 1.4121 -1714.6
## + TOEFL.Score        1  0.037031 1.4670 -1702.5
## + Research           1  0.027437 1.4766 -1700.4
## + University.Rating  1  0.025605 1.4785 -1700.0
## + SOP                1  0.025433 1.4786 -1700.0
## <none>                           1.5041 -1696.5
## 
## Step:  AIC=-1714.61
## Chance.of.Admit ~ CGPA + GRE.Score + LOR
## 
##                     Df Sum of Sq    RSS     AIC
## + TOEFL.Score        1 0.0314149 1.3806 -1719.8
## + Research           1 0.0219427 1.3901 -1717.6
## <none>                           1.4121 -1714.6
## + University.Rating  1 0.0036821 1.4084 -1713.4
## + SOP                1 0.0001536 1.4119 -1712.6
## 
## Step:  AIC=-1719.76
## Chance.of.Admit ~ CGPA + GRE.Score + LOR + TOEFL.Score
## 
##                     Df Sum of Sq    RSS     AIC
## + Research           1 0.0258742 1.3548 -1723.8
## <none>                           1.3806 -1719.8
## + University.Rating  1 0.0007570 1.3799 -1717.9
## + SOP                1 0.0002781 1.3804 -1717.8
## 
## Step:  AIC=-1723.78
## Chance.of.Admit ~ CGPA + GRE.Score + LOR + TOEFL.Score + Research
## 
##                     Df  Sum of Sq    RSS     AIC
## <none>                            1.3548 -1723.8
## + SOP                1 0.00119839 1.3536 -1722.1
## + University.Rating  1 0.00039495 1.3544 -1721.9
model_both <- stats::step(object = df_null,
     scope = list(lower = df_null, upper = model_default),
     direction = "both")
## Start:  AIC=-1229.84
## Chance.of.Admit ~ 1
## 
##                     Df Sum of Sq    RSS     AIC
## + CGPA               1    4.9760 1.6324 -1672.5
## + GRE.Score          1    4.2574 2.3509 -1556.5
## + TOEFL.Score        1    4.1930 2.4154 -1547.9
## + University.Rating  1    3.2653 3.3431 -1444.5
## + SOP                1    3.0198 3.5885 -1422.0
## + LOR                1    2.9879 3.6205 -1419.2
## + Research           1    2.1687 4.4397 -1354.3
## <none>                           6.6083 -1229.8
## 
## Step:  AIC=-1672.5
## Chance.of.Admit ~ CGPA
## 
##                     Df Sum of Sq    RSS     AIC
## + GRE.Score          1    0.1283 1.5041 -1696.5
## + TOEFL.Score        1    0.1146 1.5178 -1693.6
## + LOR                1    0.0863 1.5461 -1687.8
## + Research           1    0.0690 1.5634 -1684.2
## + University.Rating  1    0.0418 1.5906 -1678.8
## + SOP                1    0.0271 1.6053 -1675.8
## <none>                           1.6324 -1672.5
## - CGPA               1    4.9760 6.6083 -1229.8
## 
## Step:  AIC=-1696.53
## Chance.of.Admit ~ CGPA + GRE.Score
## 
##                     Df Sum of Sq    RSS     AIC
## + LOR                1   0.09202 1.4121 -1714.6
## + TOEFL.Score        1   0.03703 1.4670 -1702.5
## + Research           1   0.02744 1.4766 -1700.4
## + University.Rating  1   0.02560 1.4785 -1700.0
## + SOP                1   0.02543 1.4786 -1700.0
## <none>                           1.5041 -1696.5
## - GRE.Score          1   0.12831 1.6324 -1672.5
## - CGPA               1   0.84686 2.3509 -1556.5
## 
## Step:  AIC=-1714.61
## Chance.of.Admit ~ CGPA + GRE.Score + LOR
## 
##                     Df Sum of Sq    RSS     AIC
## + TOEFL.Score        1   0.03141 1.3806 -1719.8
## + Research           1   0.02194 1.3901 -1717.6
## <none>                           1.4121 -1714.6
## + University.Rating  1   0.00368 1.4084 -1713.4
## + SOP                1   0.00015 1.4119 -1712.6
## - LOR                1   0.09202 1.5041 -1696.5
## - GRE.Score          1   0.13400 1.5460 -1687.8
## - CGPA               1   0.45264 1.8647 -1628.2
## 
## Step:  AIC=-1719.76
## Chance.of.Admit ~ CGPA + GRE.Score + LOR + TOEFL.Score
## 
##                     Df Sum of Sq    RSS     AIC
## + Research           1  0.025874 1.3548 -1723.8
## <none>                           1.3806 -1719.8
## + University.Rating  1  0.000757 1.3799 -1717.9
## + SOP                1  0.000278 1.3804 -1717.8
## - TOEFL.Score        1  0.031415 1.4121 -1714.6
## - GRE.Score          1  0.057085 1.4377 -1708.9
## - LOR                1  0.086402 1.4670 -1702.5
## - CGPA               1  0.307723 1.6884 -1657.8
## 
## Step:  AIC=-1723.78
## Chance.of.Admit ~ CGPA + GRE.Score + LOR + TOEFL.Score + Research
## 
##                     Df Sum of Sq    RSS     AIC
## <none>                           1.3548 -1723.8
## + SOP                1  0.001198 1.3536 -1722.1
## + University.Rating  1  0.000395 1.3544 -1721.9
## - Research           1  0.025874 1.3806 -1719.8
## - GRE.Score          1  0.033121 1.3879 -1718.1
## - TOEFL.Score        1  0.035346 1.3901 -1717.6
## - LOR                1  0.080301 1.4351 -1707.5
## - CGPA               1  0.284473 1.6392 -1665.2

Comparison model stepwise

compare_performance(model_back, model_forward, model_both,model_default, metrics = c("RMSE","R2"))
## # Comparison of Model Performance Indices
## 
## Name          | Model |    R2 |  RMSE
## -------------------------------------
## model_back    |    lm | 0.795 | 0.065
## model_forward |    lm | 0.795 | 0.065
## model_both    |    lm | 0.795 | 0.065
## model_default |    lm | 0.795 | 0.065

kesimpulan kita bisa mengunakan model_back, model_forward, maupun model_bot. mulai sekarang kita menggunkan model_both sebagai model kita

model_both atau pun model apa yang kita pakai di LM akan menghasilkan outcome yang sama R2 dengan nilai 0.800 atau 80% dan Root mean squar error 0.064/6.4%

Normality

Harapan ketika membuat model linear regression, error yang di hasilkan berdistribusi normal. Artinya error banyak berkumpul di sekitar angka 0. untuk menguji asumsi ini dapat di lakukan dengan:

Check Residual pada model

Visualisasi histogram residual, dengan menggunakan fungsi hist()

hist(model_both$residuals)

residual = error (y actual - y prediksi)

atau menggunakan desity

plot(density(model_both$residuals))

Shapiro test untuk Uji Asumsi Normality of Residuals (models)

Shapiro test juga bisa menjadi opsional lain untuk mengecek asumsi dari model regresi linier kita bahwa error yang di perolah dari model harus terdistribusi secara normal di sekitaran mean 0. kita perlu memvalidasi asumsi normalitas pada model kita yaitu model_both

shapiro.test(model_both$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  model_both$residuals
## W = 0.91438, p-value = 1.741e-12

Homoscedasticity

Harapan kita model yang terbentuk memperoleh error atau residual yang variansinya tidak membentuk sebuah pola (harus bener-bener menyebar acak).

plot(model_both$fitted.values, model_both$residuals)
abline(h = 0, col = "red")

# H 0 : Variansi error menyebar konstan (Homoscedasticity)
# H 1 : Variansi error menyebar tidak konstan/membentuk pola (Heteroscedasticity)
library(lmtest) #breusch-pagan hypothesis test (harapan kita pvalue > alpha)
bptest(model_both)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_both
## BP = 14.941, df = 5, p-value = 0.01062

Conclusion

karena pvalue data < alpha (0.05), gagal tolak H1 artinya variansi tidak menyebar konstan/membentuk pola

Multicolinearity

Harapan pada model linear regression yang kita buat, sangat berharap tidak terjadi multikolinearitas. Multikolinearitas terjadi ketika antar variable prediktor yang kita gunakan pada model itu memiliki hubungan yang kuat. atau tidak terjadi multikolinearitas dapat di liat dari function vif() Varience Inflation Factor.

Vif

vif(model_both)
##        CGPA   GRE.Score         LOR TOEFL.Score    Research 
##    5.055911    4.701027    1.864445    4.260026    1.612143

Nilai VIF lebih dari 10 artinya terjadi multikolinearitas, harapan kita mendapatkan VIF yang lebih kecil dari 10 (< 10)

Model Prediction

chance_admi_pred <- predict(model_both, df_test)
final_data <- cbind(df_test, chance_admi_pred)
#  Gabungkan Predicted Value ke Data Original
head(final_data, 5)
##    GRE.Score TOEFL.Score University.Rating SOP LOR CGPA Research
## 3        316         104                 3 3.0 3.5  8.0        1
## 7        321         109                 3 3.0 4.0  8.2        1
## 14       307         109                 3 4.0 3.0  8.0        1
## 20       303         102                 3 3.5 3.0  8.5        0
## 21       312         107                 3 3.0 2.0  7.9        1
##    Chance.of.Admit chance_admi_pred
## 3             0.72        0.6536111
## 7             0.75        0.7148877
## 14            0.62        0.6422012
## 20            0.62        0.6434177
## 21            0.64        0.6096222
pred_train <- model_both$fitted.values
pred_test <- predict(model_both, newdata = df_test)

Model Evaluation dengan nilai error/Nilai Akhir dari Model.

MAE

# Mean Absolute Error
MAE(y_pred = pred_train, y_true = df$Chance.of.Admit)
## [1] 0.14846
MAE(y_pred = pred_test, y_true = df$Chance.of.Admit)
## [1] 0.1521623
  • MAE: Mean Absolute Error
    • dua diantara banyak metode untuk mengukur tingkat keakuratan suatu model peramalan. Nilai MAE merepresentasikan rata – rata kesalahan (error) absolut antara hasil peramalan dengan nilai sebenarnya.

MSE

# Mean Squared Error
MSE(y_pred = pred_train, y_true = df$Chance.of.Admit)
## [1] 0.03399186
MSE(y_pred = pred_test, y_true = df$Chance.of.Admit)
## [1] 0.03455155
  • MSE: Mean Squared Error
    • Rata-rata Kesalahan kuadrat diantara nilai aktual dan nilai peramalan. Metode Mean Squared Error secara umum digunakan untuk mengecek estimasi berapa nilai kesalahan pada peramalan.

RMSE

# Root Mean Squared Error
RMSE(y_pred = pred_train, y_true = df$Chance.of.Admit)
## [1] 0.1843688
RMSE(y_pred = pred_test, y_true = df$Chance.of.Admit)
## [1] 0.1858805
  • RMSE: Root Mean Squared Error
    • metode pengukuran dengan mengukur perbedaan nilai dari prediksi sebuah model sebagai estimasi atas nilai yang diobservasi. Root Mean Square Error adalah hasil dari akar kuadrat Mean Square Error.

MAPE

# Mean Absolute Percentage Error
MAPE(y_pred = pred_train, y_true = df$Chance.of.Admit)*100
## [1] 20.96434
MAPE(y_pred = pred_test, y_true = df$Chance.of.Admit)*100
## [1] 22.95332
  • MAPE: Mean Absolute Percentage Error
    • persentase kesalahan rata-rata secara multak.(absolut). Pengertian Mean Absolute Percentage Error adalah Pengukuran statistik tentang akurasi perkiraan (prediksi) pada metode peramalan.

Prediction Curve GRE Score

library(ggplot2)
ggplot(final_data, aes(x = GRE.Score, y = chance_admi_pred)) +
  geom_point(color = "purple", alpha = 0.5) +
  stat_smooth(method = "lm") +
  scale_x_continuous(name = "GRE Score") +
  scale_y_continuous(name = "Prediksi of Chance of Admit") +
  ggtitle("Prediction Curve pada GRE Score/Peluang di terima")

Summary

berdasarkan hasil yang kita dapat residuals bernilai yang kecil, model ini berkerja dengan sangat baik

Model Evaluation (Option)

residuals <- final_data$Chance.of.Admit - final_data$chance_admi_pred
residuals <- as.data.frame(residuals)
head(residuals,10)
##      residuals
## 1   0.06638889
## 2   0.03511232
## 3  -0.02220124
## 4  -0.02341774
## 5   0.03037780
## 6  -0.07870252
## 7   0.03297654
## 8   0.02736719
## 9  -0.11395615
## 10 -0.14891695