Load the dataset

Tujuan utamanya adalah membangun model statistik yang dapat mempelajari data masa lalu untuk memprediksi apakah pemohon baru layak mendapatkan pinjaman. Peneliti ingin tahu variabel mana yang paling berkontribusi terhadap keputusan tersebut: apakah murni karena faktor uang (finansial) atau ada faktor demografis yang ikut campur?

Summary of missing values

Data mentah jarang sekali bersih dalam arti lainnya ialah dalam keadaan utuh dan dapat diolah secara langsung. Untuk itu, diperlukan sebuah langkah prosedur membersihkan dan menata kembali data mentah supaya sesuai dengan keadaan yang dapat diolah oleh peneliti.

## [1] "Missing values per column:"
##             Age          Income      LoanAmount     CreditScore YearsExperience 
##               0             196               0             194               0 
##          Gender       Education            City  EmploymentType    LoanApproved 
##               0               0               0               0               0

Cleaning: Remove rows with missing values (Income, CreditScore, Education)

Pembersihan (Cleaning): Menggunakan na.omit() untuk menghapus baris yang memiliki nilai kosong pada variabel Income atau CreditScore. Tanpa langkah ini, fungsi regresi akan error atau menghasilkan bias.

Convert categorical variables to factors

Transformasi Variabel (Factorization): Data seperti variabel Gender atau City adalah teks/karakter berformat string. Agar software bisa menghitungnya, dilakukan perubahan menjadi factor. R akan secara otomatis membuat dummy variables (mengubah kategori menjadi angka 0 dan 1 di balik layar) untuk keperluan regresi.

Fit the Logistic Regression model

Model persamaan logit:\[\ln\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1X_1 + \beta_2X_2 + \dots + \beta_nX_n\]

Di mana \(p\) adalah probabilitas pinjaman disetujui.

Karena targetnya adalah LoanApproved (0 atau 1), peneliti menggunakan fungsi glm() (General Linear Model) dengan parameter family = binomial.

Summary of the model

Output dari bagian ini (tabel ringkasan/summary) akan menunjukkan nilai P-value. Jika P-value < 0.05, maka variabel tersebut dianggap berpengaruh signifikan secara statistik terhadap keputusan pinjaman.

## 
## Call:
## glm(formula = LoanApproved ~ Age + Income + LoanAmount + CreditScore + 
##     YearsExperience + Gender + Education + City + EmploymentType, 
##     family = binomial, data = loan_data_clean)
## 
## Coefficients:
##                               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                 -1.229e+01  5.425e-01 -22.657   <2e-16 ***
## Age                         -4.639e-03  3.307e-03  -1.403    0.161    
## Income                       7.119e-05  3.869e-06  18.400   <2e-16 ***
## LoanAmount                   8.270e-06  6.074e-06   1.361    0.173    
## CreditScore                  1.314e-02  4.700e-04  27.958   <2e-16 ***
## YearsExperience              1.096e-03  4.284e-03   0.256    0.798    
## GenderMale                  -2.491e-02  9.837e-02  -0.253    0.800    
## EducationBachelors          -1.148e-01  2.586e-01  -0.444    0.657    
## EducationHigh School        -1.192e-01  2.587e-01  -0.461    0.645    
## EducationMasters            -9.890e-02  2.579e-01  -0.384    0.701    
## EducationPhD                 1.743e-02  2.578e-01   0.068    0.946    
## CityHouston                 -9.032e-03  1.374e-01  -0.066    0.948    
## CityNew York                 5.399e-02  1.380e-01   0.391    0.696    
## CitySan Francisco           -1.089e-02  1.370e-01  -0.080    0.937    
## EmploymentTypeSelf-Employed -3.940e-02  1.032e-01  -0.382    0.703    
## EmploymentTypeUnemployed    -4.051e+00  1.904e-01 -21.284   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5072.1  on 4620  degrees of freedom
## Residual deviance: 2656.3  on 4605  degrees of freedom
## AIC: 2688.3
## 
## Number of Fisher Scoring iterations: 7

Fit the Logistic Regression model

Grafik distribusi (Histogram) yang ditunjukkan membagi pemohon berdasarkan skor kredit mereka dan memberi warna berbeda untuk status persetujuan.

Melalui grafik ini, terlihat secara visual “garis batas” (threshold) di mana bank mulai lebih banyak memberikan persetujuan (biasanya di atas skor 600-700).

ggplot(loan_data_clean, aes(x = CreditScore, fill = as.factor(LoanApproved))) +
  geom_histogram(bins = 30, position = "dodge") +
  labs(title = "Loan Approval Distribution by Credit Score",
       x = "Credit Score",
       y = "Count",
       fill = "Loan Approved") +
  theme_minimal()