Sebuah analis kredit di Bank Rakyat Indonesia (BRI) Cabang Surabaya ingin memprediksi apakah pemohon Kredit Usaha Rakyat (KUR) akan gagal bayar. Untuk setiap aplikasi, ia memiliki data: rasio cicilan terhadap penghasilan (Debt-to-Income ratio, DTI), skor kredit internal bank (0–100), dan status pekerjaan (tetap vs kontrak). Variabel target: gagal bayar dalam 12 bulan (1 = ya, 0 = tidak).

Tabel mentah untuk 10 pemohon pertama terlihat seperti ini:

PemohonDTI (%)Skor KreditPekerjaanGagal?
13570Tetap0
24565Tetap0
35560Kontrak1
42585Tetap0
56050Kontrak1
64075Tetap0
75055Kontrak1
83080Tetap0
96545Kontrak1
103872Tetap0

Pola terlihat jelas: DTI tinggi dan skor kredit rendah cenderung beriringan dengan gagal bayar. Pertanyaan analisis yang ingin dijawab analis: berapa probabilitas gagal bayar seorang pemohon baru dengan DTI 48% dan skor 58? Dan sama pentingnya: berapa kenaikan risiko untuk setiap tambahan 1% DTI?

Cara spontan untuk menjawab adalah memasang regresi linear pada $y$ (0/1) terhadap $x$ (DTI): $\hat{y} = \beta_0 + \beta_1 \cdot \text{DTI}$. Tetapi di sini terjadi masalah serius. Garis regresi linear akan memprediksi nilai seperti $\hat{y} = -0{,}15$ untuk DTI rendah dan $\hat{y} = 1{,}30$ untuk DTI sangat tinggi — keluar dari batas wajar $[0, 1]$ untuk probabilitas. Lebih buruk lagi, sisa (residual) tidak mungkin berdistribusi normal (karena $y$ hanya 0 atau 1), varians bergantung pada $x$ (heteroskedastisitas terstruktur), dan interpretasi “tambahan 1% DTI menaikkan probabilitas gagal $\beta_1$” menjadi tidak linear dan keliru pada ekstrem.

Solusi yang benar adalah regresi logistik — sebuah model yang lahir di tahun 1958 dari pekerjaan Joseph Berkson di bidang biologi (bioassay) dan kini menjadi tulang punggung credit scoring, deteksi penipuan, diagnosa medis, churn pelanggan, dan banyak aplikasi klasifikasi lain. Artikel ini membangun regresi logistik dari nol: dari kegagalan OLS, ke transformasi logit, ke maximum likelihood, ke interpretasi koefisien, ke evaluasi model — semua dengan kasus konkret pemilihan kredit di bank Indonesia.

Mengapa Regresi Linear Tidak Cukup

Sebelum masuk ke solusi, mari pahami masalahnya lebih dalam. Misalkan kita pasang OLS pada data di atas dengan model $y = \beta_0 + \beta_1 \cdot \text{DTI} + \varepsilon$. Bayangkan diperoleh $\hat{\beta}_0 = -0{,}6$ dan $\hat{\beta}_1 = 0{,}025$. Maka prediksi untuk DTI = 20% adalah $\hat{y} = -0{,}6 + 0{,}025 \cdot 20 = -0{,}10$ — negatif, tidak masuk akal untuk probabilitas. Untuk DTI = 80%, prediksi $\hat{y} = -0{,}6 + 0{,}025 \cdot 80 = 1{,}40$ — di atas 1, juga tidak masuk akal. Inilah pelanggaran pertama: OLS tidak tahu bahwa $y$ harus berada di $[0, 1]$.

Pelanggaran kedua — heteroskedastisitas terstruktur. Untuk DTI rendah, hampir semua $y = 0$, sehingga residual kecil (sekitar 0). Untuk DTI menengah, $y$ campuran 0 dan 1, sehingga residual besar. Untuk DTI tinggi, hampir semua $y = 1$, residual kembali kecil. Pola “pulsing” ini melanggar asumsi homoskedastisitas OLS, membuat standard error bias dan uji-hipotesis tidak valid.

Pelanggaran ketiga — residual tidak normal. Karena $y$ hanya 0 atau 1, residual $e = y - \hat{y}$ terbatas pada dua nilai untuk $\hat{y}$ tertentu. Distribusi residual pasti bimodal (dua puncak), bukan normal. Inferensi berbasis $t$-statistik dan $F$-test menjadi rapuh.

Pelanggaran keempat — interpretasi linear salah arah. Slope OLS $\beta_1$ diinterpretasikan sebagai “perubahan $y$ per unit $x$”. Tetapi dalam konteks probabilitas, perubahan probabilitas per unit $x$ tidak konstan: dari $p = 0{,}02$ ke $p = 0{,}03$ jauh lebih mudah daripada dari $p = 0{,}95$ ke $p = 0{,}96$. Hubungan antara $x$ dan $p$ seharusnya berbentuk S-curve, bukan garis lurus.

Empat pelanggaran ini bukan sekadar masalah teknis. Mereka membuat OLS sebagai alat klasifikasi tidak hanya suboptimal, tetapi memberikan kesimpulan yang salah pada ekstrem.

Solusi: Transformasi Logit dan Fungsi Sigmoid

Apa yang kita inginkan: sebuah fungsi yang (1) memetakan gabungan linear $\beta_0 + \beta_1 x_1 + \ldots$ ke rentang $(0, 1)$, dan (2) melakukannya dengan halus, monoton, berbentuk S. Fungsi itu adalah logistic function atau sigmoid:

$$\boxed{\sigma(z) = \frac{1}{1 + e^{-z}} = \frac{e^z}{e^z + 1}}$$

Beberapa sifat penting sigmoid:

  • $\sigma(0) = 0{,}5$ — titik balik, di mana probabilitas 50:50.
  • $\sigma(z) \to 1$ saat $z \to +\infty$, dan $\sigma(z) \to 0$ saat $z \to -\infty$.
  • $\sigma(-z) = 1 - \sigma(z)$ — simetris.
  • Turunan: $\sigma'(z) = \sigma(z)(1 - \sigma(z))$, maksimum $\sigma' = 0{,}25$ di $z = 0$.

Sekarang kita substitusi $z$ dengan kombinasi linear prediktor:

$$\boxed{p = P(y=1 \mid x) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \ldots + \beta_k x_k)}}}$$

Ini adalah model regresi logistik. Untuk kasus KUR dengan satu prediktor (DTI):

$$p = \frac{1}{1 + e^{-(\beta_0 + \beta_1 \cdot \text{DTI})}}$$

Invers: transformasi logit

Pertanyaan alami: dari mana datangnya bentuk ini? Jawabannya lewat transformasi logit, yang merupakan invers dari sigmoid. Definisikan odds (peluang) sebagai rasio:

$$\text{odds} = \frac{p}{1-p}$$

Misal $p = 0{,}8$ → odds $= 4$ (4 banding 1), $p = 0{,}5$ → odds $= 1$, $p = 0{,}2$ → odds $= 0{,}25$ (1 banding 4). Odds terbentang dari 0 sampai $+\infty$. Log-odds atau logit adalah logaritma natural odds:

$$\text{logit}(p) = \ln\left(\frac{p}{1-p}\right)$$

Logit memetakan $(0,1) \to (-\infty, +\infty)$, suatu rentang tak terbatas yang cocok untuk kombinasi linear $\beta_0 + \beta_1 x$. Sekarang kita bisa menyamakan:

$$\boxed{\text{logit}(p) = \ln\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 x_1 + \ldots + \beta_k x_k}$$

Inilah jembatan: di skala log-odds, hubungan antara prediktor dan respons adalah linear. Bila Anda mendengar orang berkata “regresi logistik adalah model linear”, yang mereka maksud adalah linearitas pada skala logit, bukan pada skala probabilitas.

Estimasi Parameter: Maximum Likelihood

Berbeda dari OLS yang punya solusiclosed-form $\hat{\beta} = (X^\top X)^{-1} X^\top y$, regresi logistik tidak punya rumus tertutup untuk koefisien. Kita harus memakai maximum likelihood estimation (MLE) — sebuah prosedur iteratif (Newton-Raphson, iteratively reweighted least squares) yang memilih $\hat{\beta}$ untuk memaksimalkan likelihood data.

Fungsi likelihood

Untuk setiap observasi $i$, probabilitas melihat $y_i$ (0 atau 1) adalah:

$$P(y_i \mid x_i, \beta) = p_i^{y_i}(1-p_i)^{1-y_i}$$

di mana $p_i = \sigma(\beta_0 + \beta_1 x_{i1} + \ldots)$. Bila $y_i = 1$, ini menjadi $p_i$; bila $y_i = 0$, menjadi $(1 - p_i)$. Asumsi independensi antar observasi, likelihood gabungan adalah produk:

$$\boxed{L(\beta) = \prod_{i=1}^{n} p_i^{y_i}(1-p_i)^{1-y_i}}$$

Log-likelihood (lebih mudah dihitung, menghindari underflow pada produk besar):

$$\boxed{\ell(\beta) = \sum_{i=1}^{n} \left[ y_i \ln p_i + (1-y_i)\ln(1-p_i) \right]}$$

MLE mencari $\hat{\beta}$ yang memaksimalkan $\ell(\beta)$ — atau, ekuivalen, meminimalkan negatif log-likelihood atau log-loss:

$$\text{log-loss} = -\frac{1}{n}\sum_{i=1}^{n} \left[ y_i \ln p_i + (1-y_i)\ln(1-p_i) \right]$$

Log-loss inilah yang juga dipakai sebagai fungsi objektif di banyak algoritma machine learning klasifikasi.

Mengapa tidak ada solusi tertutup

Untuk menemukan $\hat{\beta}$, kita perlu menyelesaikan $\partial \ell / \partial \beta_j = 0$ untuk semua $j$. Persamaan normal yang dihasilkan:

$$\sum_{i=1}^{n} (y_i - p_i) x_{ij} = 0 \quad \text{untuk setiap } j$$

Persamaan ini nonlinear dalam $\beta$ (karena $p_i$ bergantung pada $\beta$ melalui sigmoid), sehingga tidak bisa diselesaikan secara aljabar. Kita pakai algoritma iteratif. Kabar baiknya: fungsi log-likelihood regresi logistik konkav secara global, sehingga pasti ada satu maksimum, dan algoritma Newton-Raphson konvergen dengan cepat (biasanya < 10 iterasi).

Di Excel: Solver

Bila Anda ingin menghitung manual di Excel, langkahnya adalah:

  1. Siapkan kolom-kolom: $x_i$, $y_i$, tebakan awal $\beta_0, \beta_1$ (misal $\beta_0 = 0$, $\beta_1 = 0$).
  2. Hitung $z_i = \beta_0 + \beta_1 x_i$, $p_i = 1/(1 + \exp(-z_i))$, lalu $\ell_i = y_i \ln p_i + (1-y_i)\ln(1-p_i)$.
  3. Jumlahkan $\sum \ell_i$.
  4. Jalankan SolverMaximize $\sum \ell_i$ dengan mengubah sel $\beta_0, \beta_1$.

Workbook stdsquare² pendamping melakukan persis ini, sehingga Anda dapat melihat setiap angka di setiap iterasi.

Interpretasi Koefisien dalam Tiga Skala

Salah satu kekuatan regresi logistik adalah koefisiennya dapat diinterpretasikan dalam tiga skala berbeda, masing-masing berguna untuk konteks berbeda.

Skala 1 — Log-odds (koefisien mentah)

Paling sederhana namun paling abstrak. Koefisien $\beta_j$ diinterpretasikan sebagai: “perubahan log-odds hasil $y=1$ untuk setiap kenaikan satu unit $x_j$, dengan variabel lain dipegang konstan.”

Contoh: misalkan $\hat{\beta}_0 = -5{,}0$ dan $\hat{\beta}_1 = 0{,}10$ untuk DTI. Artinya setiap kenaikan 1% DTI menaikkan log-odds gagal bayar sebesar 0,10 unit. Untuk DTI 40%, log-odds $= -5 + 0{,}10 \cdot 40 = -1$.

Skala 2 — Odds (odds ratio)

Transformasi eksponensial memberi interpretasi yang lebih intuitif:

$$\boxed{\text{Odds Ratio (OR)} = e^{\beta_j}}$$

OR mengukur rasio odds antara dua kelompok yang berbeda 1 unit di $x_j$. Misal $\beta_1 = 0{,}10$ → OR $= e^{0{,}10} = 1{,}105$. Interpretasi: setiap kenaikan 1% DTI menaikkan odds gagal bayar sebesar 10,5%.

Konvensi interpretasi:

  • $\text{OR} = 1$ → tidak ada efek.
  • $\text{OR} > 1$ → $x_j$ menaikkan odds hasil $y = 1$.
  • $\text{OR} < 1$ → $x_j$ menurunkan odds hasil $y = 1$.

Untuk prediktor biner (misal Pekerjaan: 1 = Kontrak, 0 = Tetap), $\text{OR} = e^{\beta}$ berarti rasio odds gagal untuk pekerja kontrak relatif terhadap pekerja tetap. Inilah skala yang paling sering dipakai di laporan medis dan sosial karena komunikatif.

Skala 3 — Probabilitas (efek marginal)

Untuk audiens bisnis yang lebih familiar dengan probabilitas, kita bisa hitung efek marginal — perubahan probabilitas per unit $x_j$:

$$\frac{\partial p}{\partial x_j} = \beta_j \cdot p(1-p)$$

Perhatikan bahwa efek marginal tidak konstan — bergantung pada $p$ (titik di mana evaluasi dilakukan). Konvensi: evaluasi pada rata-rata sampel atau pada kasus representatif. Untuk data kita dengan $\beta_1 = 0{,}10$ dan $p = 0{,}3$ (titik tengah-tengah), efek marginal $= 0{,}10 \cdot 0{,}3 \cdot 0{,}7 = 0{,}021$. Interpretasi: di sekitar DTI rata-rata, setiap kenaikan 1% DTI menaikkan probabilitas gagal sekitar 2,1 poin persen.

Pesan penting: ketika membaca laporan regresi logistik, selalu tanyakan di skala mana koefisien dilaporkan. Banyak kebingungan terjadi karena OR disangka probabilitas. OR $= 2$ bukan berarti “dua kali lebih mungkin” — itu berarti odds menjadi dua kali lipat, yang pada probabilitas bisa berarti kenaikan dari 0,3 ke 0,46 (bukan 0,6).

Inferensi: Uji Hipotesis pada Koefisien

Seperti OLS, koefisien regresi logistik dapat diuji signifikansinya. Standard error dihitung dari matriks informasi Fisher:

$$\text{Var}(\hat{\beta}) = (X^\top W X)^{-1}$$

di mana $W$ adalah matriks diagonal dengan $W_{ii} = p_i(1-p_i)$. Standard error $SE(\hat{\beta}_j)$ adalah akar dari elemen diagonal matriks ini. Statistik Wald:

$$z = \frac{\hat{\beta}_j}{SE(\hat{\beta}_j)}$$

dengan $p$-value dari distribusi normal standar. Interval kepercayaan 95%:

$$\hat{\beta}_j \pm 1{,}96 \cdot SE(\hat{\beta}_j) \quad \text{(di skala log-odds)}$$

atau, untuk odds ratio:

$$e^{\hat{\beta}_j \pm 1{,}96 \cdot SE(\hat{\beta}_j)}$$

Uji omnibus (Likelihood Ratio Test)

Selain uji Wald per koefisien, ada uji global yang membandingkan model penuh dengan model null (hanya intercept) lewat Likelihood Ratio Test (LRT):

$$G^2 = -2(\ell_{\text{null}} - \ell_{\text{full}}) = 2(\ell_{\text{full}} - \ell_{\text{null}})$$

$G^2$ mengikuti distribusi $\chi^2$ dengan derajat bebas $k$ (jumlah prediktor). Bila $G^2 > \chi^2_{\alpha, k}$, model secara keseluruhan signifikan.

Pseudo-$R^2$

Karena regresi logistik memakai MLE (bukan kuadrat terkecil), konsep $R^2$ OLS tidak berlaku. Beberapa versi “pseudo-$R^2$” populer:

  • McFadden: $R^2_{\text{MF}} = 1 - \ell_{\text{full}}/\ell_{\text{null}}$. Konvensi: 0,2–0,4 = model sangat baik.
  • Cox-Snell: $R^2_{\text{CS}} = 1 - (L_{\text{null}}/L_{\text{full}})^{2/n}$.
  • Nagelkerke: menormalkan Cox-Snell sehingga maksimum 1.

Pseudo-$R^2$ jangan diinterpretasikan sebagai “proporsi variansi yang dijelaskan” — itu konsep OLS. Hanya pakai sebagai indikator komparatif antar model pada dataset yang sama.

Evaluasi Model Klasifikasi

Berbeda dari regresi linear yang dievaluasi via RMSE atau $R^2$, model klasifikasi dievaluasi dari seberapa akurat memprediksi kategori. Ini melibatkan beberapa metrik yang menjawab pertanyaan berbeda.

Confusion Matrix

Untuk klasifikasi biner, ada empat kemungkinan hasil:

Prediksi: 0 (tidak gagal)Prediksi: 1 (gagal)
Aktual: 0True Negative (TN)False Positive (FP)
Aktual: 1False Negative (FN)True Positive (TP)

Dari matriks ini, turunkan:

$$\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$$$$\text{Precision} = \frac{TP}{TP + FP} \quad \text{(dari yang diprediksi gagal, berapa yang benar-benar gagal)}$$$$\text{Recall (Sensitivity, TPR)} = \frac{TP}{TP + FN} \quad \text{(dari yang benar-benar gagal, berapa tertangkap)}$$$$\text{Specificity (TNR)} = \frac{TN}{TN + FP} \quad \text{(dari yang benar-benar tidak gagal, berapa teridentifikasi benar)}$$$$F_1 = \frac{2 \cdot \text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} \quad \text{(rata-rata harmonik)}$$

Penting untuk konteks Indonesia: pada dataset kredit yang tidak seimbang (misal 5% gagal, 95% lancar), accuracy bisa menyesatkan. Model yang selalu memprediksi “tidak gagal” mencapai accuracy 95%, tetapi sama sekali tidak berguna. Pada kasus seperti ini, recall dan F1 menjadi lebih informatif.

Threshold dan Trade-off

Regresi logistik output probabilitas $p \in (0, 1)$. Untuk klasifikasi tegas, kita butuh threshold: prediksi 1 bila $p \geq \tau$, lainnya 0. Default umumnya $\tau = 0{,}5$, tetapi bisa dioptimalkan pada konteks biaya:

  • Kredit: False Negative (gagal yang lolos) mahal → turunkan threshold untuk recall tinggi. Bank lebih baik menolak beberapa aplikasi yang sebenarnya aman daripada menerima satu yang gagal.
  • Marketing: False Positive (menawarkan ke yang tidak tertarik) murah → threshold fleksibel.

ROC Curve dan AUC

Receiver Operating Characteristic (ROC) memplot True Positive Rate (Recall) terhadap False Positive Rate (1 − Specificity) untuk semua threshold $\tau \in [0, 1]$. Kurva ideal mendekati pojok kiri-atas (Recall = 1, FPR = 0). Area Under the Curve (AUC) merangkum kualitas model dalam satu angka:

  • $\text{AUC} = 0{,}5$ → model tidak lebih baik dari tebak acak.
  • $\text{AUC} = 0{,}7$–$0{,}8$ → model dapat diterima.
  • $\text{AUC} = 0{,}8$–$0{,}9$ → model baik.
  • $\text{AUC} > 0{,}9$ → model sangat baik (perlu diwaspadai overfitting).

AUC dapat juga diinterpretasikan sebagai probabilitas bahwa model memberi probabilitas lebih tinggi ke observasi positif acak daripada observasi negatif acak.

Studi Kasus Lengkap: Prediksi Default KUR

Mari kita terapkan seluruh kerangka ke dataset KUR yang lebih realistis. Misalkan Anda punya data 500 pemohon dengan tiga prediktor (DTI, Skor Kredit, Pekerjaan). Hasil regresi logistik (output software):

Prediktor$\hat{\beta}$$SE$$z$$p$$e^{\hat{\beta}}$ (OR)95% CI OR
Intercept−4,800,85−5,65<0,001
DTI (%)0,0720,0135,54<0,0011,075[1,048; 1,103]
Skor Kredit−0,0450,009−5,00<0,0010,956[0,939; 0,973]
Pekerjaan Kontrak (1/0)1,150,323,59<0,0013,158[1,685; 5,917]

Interpretasi langsung:

  • Setiap kenaikan 1% DTI menaikkan odds gagal bayar sebesar 7,5% (OR $= 1{,}075$), signifikan.
  • Setiap kenaikan 1 poin skor kredit menurunkan odds gagal sebesar 4,4% (OR $= 0{,}956$), signifikan.
  • Pekerja kontrak punya odds gagal 3,16 kali pekerja tetap, signifikan.
  • Semua $p < 0{,}001$ → semua prediktor signifikan secara statistik.

Prediksi untuk pemohon baru: DTI $= 48\%$, Skor $= 58$, Pekerjaan Kontrak.

$$z = -4{,}80 + 0{,}072 \cdot 48 + (-0{,}045) \cdot 58 + 1{,}15 \cdot 1$$$$= -4{,}80 + 3{,}456 - 2{,}610 + 1{,}15 = -2{,}804$$$$p = \frac{1}{1 + e^{2{,}804}} = \frac{1}{1 + 16{,}52} = 0{,}057$$

Probabilitas gagal bayar $= 5{,}7\%$ — relatif rendah. Bila threshold $\tau = 0{,}10$, aplikasi ini disetujui. Bila threshold lebih konservatif $\tau = 0{,}05$, aplikasi ditolak.

Evaluasi

Pada test set 100 observasi dengan threshold $\tau = 0{,}10$:

Pred: 0Pred: 1Total
Aktual 078 (TN)7 (FP)85
Aktual 15 (FN)10 (TP)15
Total8317100
$$\text{Accuracy} = (78 + 10)/100 = 0{,}88$$$$\text{Precision} = 10/17 = 0{,}588$$$$\text{Recall} = 10/15 = 0{,}667$$$$F_1 = 2 \cdot 0{,}588 \cdot 0{,}667 / (0{,}588 + 0{,}667) = 0{,}625$$

AUC dari ROC curve $= 0{,}86$ — model baik.

Analisis biaya-keuntungan

Untuk memilih threshold optimal, mari kita kuantisasi biaya:

  • Setiap FP (menolak aplikasi yang sebenarnya aman) → kehilangan bunga rata-rata Rp 2 juta per aplikasi.
  • Setiap FN (menerima yang gagal) → kerugian pokok pinjaman rata-rata Rp 20 juta per aplikasi.

Biaya total pada threshold $\tau = 0{,}10$: $7 \times 2 + 5 \times 20 = 14 + 100 = \text{Rp 114 juta}$.

Coba threshold $\tau = 0{,}08$ (lebih longgar) → dugaan baru: TP naik ke 12, FP naik ke 12, FN turun ke 3, TN turun ke 73. Biaya: $12 \times 2 + 3 \times 20 = 24 + 60 = \text{Rp 84 juta}$. Lebih murah — threshold ini lebih baik secara ekonomi.

Iterasi threshold sampai biaya minimum ditemukan adalah inti dari optimisasi threshold berbasis biaya. Praktik standar di industri perbankan.

Regresi Logistik Berganda dan Interaksi

Sampai sini kita berurusan dengan model dengan beberapa prediktor aditif. Tapi dunia nyata sering punya interaksi: efek DTI mungkin berbeda untuk pekerja kontrak vs tetap. Model dengan interaksi:

$$\text{logit}(p) = \beta_0 + \beta_1 \text{DTI} + \beta_2 \text{Kontrak} + \beta_3 (\text{DTI} \times \text{Kontrak})$$

$\beta_3$ mengukur modifikasi efek DTI oleh status pekerjaan. Interpretasi OR menjadi: untuk pekerja tetap, OR DTI $= e^{\beta_1}$; untuk pekerja kontrak, OR DTI $= e^{\beta_1 + \beta_3}$. Uji signifikansi $\beta_3$ menjawab: “apakah hubungan DTI–gagal berbeda antar jenis pekerjaan?”

Regresi logistik multinomial

Bila variabel respons punya 3 atau lebih kategori tanpa urutan (misal: pilihan transportasi: bus, kereta, ojek online), regresi logistik biner tidak cukup. Gunakan multinomial logistic regression — perluasan yang memodelkan log-odds tiap kategori relatif terhadap kategori baseline.

Regresi logistik ordinal

Bila respons punya 3+ kategori terurut (misal: kepuasan 1–5, tingkat pendidikan), pakai ordered logistic regression (proportional odds model). Asumsinya: efek prediktor sama di semua threshold pemisah kategori.

Asumsi yang Harus Dipenuhi

Regresi logistik terdengar hebat, tetapi punya asumsi yang kalau dilanggar membuat inferensi menyesatkan.

  1. Linearitas pada skala logit untuk prediktor kontinu. Bila hubungan $x$ dengan logit melengkung (misal efek DTI meningkat tajam setelah 50%), perlu transformasi (kuadratik, spline) atau binning. Cek via Box-Tidwell test.
  2. Independensi observasi. Tidak boleh ada pengukuran berulang pada subjek yang sama. Untuk data berstruktur (siswa dalam kelas, pelanggan dari kota yang sama), gunakan multilevel logistic regression (GLMM).
  3. Tidak ada multikolinearitas berat antar prediktor. Cek VIF (Variance Inflation Factor) — sama seperti OLS.
  4. Ukuran sampel memadai. Aturan praktis: minimal 10 observasi dengan $y = 1$ (kasus lebih jarang) per prediktor. Dengan 3 prediktor, butuh minimal 30 kejadian gagal. Pelanggaran → overfitting.
  5. Tidak ada pencilan berpengaruh ekstrem. Walaupun respons 0/1 tidak punya pencilan dalam arti klasik, prediktor bisa berpencil ekstrem; cek leverage via Cook’s distance atau DFBETAS yang dimodifikasi.

Perbandingan dengan Model Alternatif

Regresi logistik bukan satu-satunya pilihan untuk klasifikasi. Ringkasan komparatif:

ModelKapan dipakaiKelebihanKekurangan
Regresi logistikBaseline, interpretabilitas pentingKoefisien interpretable, inferensi statistik, cepatLinearitas logit; kalah akurat pada hubungan kompleks
ProbitKetika asumsi normalitas latent variabel masuk akal (ekonometri)Mirip logistik, distribusi normalInterpretasi OR kurang langsung
Linear Discriminant Analysis (LDA)Kelas berdistribusi normal multivariat, sampel kecilStabil pada sampel kecilAsumsi normalitasPrediktor
Decision Tree / Random ForestHubungan non-linear, interaksi otomatisFleksibel, menangani non-linearitasBlack-box, kurang interpretable
Gradient Boosting (XGBoost, LightGBM)Akurasi tertinggi, dataset besarKinerja state-of-the-artPerlu tuning; rentan overfitting; kurang transparan
Neural NetworkHubungan sangat kompleks, data besarUniversal approximatorData hungry, black-box

Untuk riset akademik yang menuntut interpretabilitas dan inferensi, regresi logistik tetap pilihan utama. Untuk aplikasi produksi dengan data besar (deteksi fraud real-time, rekomendasi), tree-based methods sering unggul.

Di Python dan R

Python dengan statsmodels untuk inferensi (koefisien + $p$-value):

import statsmodels.api as sm
X = sm.add_constant(df[["DTI", "Skor_Kredit", "Pekerjaan_Kontrak"]])
model = sm.Logit(df["Gagal"], X)
result = model.fit()
print(result.summary())
# Odds ratio dengan CI:
import numpy as np
or_df = pd.DataFrame({
    "OR": np.exp(result.params),
    "CI_low": np.exp(result.conf_int()[0]),
    "CI_high": np.exp(result.conf_int()[1]),
})

Atau dengan scikit-learn untuk prediksi murni:

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, classification_report, confusion_matrix
model = LogisticRegression(penalty=None, solver="lbfgs")
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, proba)
pred = (proba >= 0.10).astype(int)
print(confusion_matrix(y_test, pred))

R dengan glm():

model <- glm(Gagal ~ DTI + Skor_Kredit + Pekerjaan_Kontrak,
             data = df, family = binomial(link = "logit"))
summary(model)
exp(cbind(OR = coef(model), confint(model)))
library(pROC)
auc <- roc(df$Gagal, predict(model, type = "response"))

Jebakan Umum

1. Menginterpretasikan OR sebagai probabilitas. OR $= 2$ bukan “dua kali lebih mungkin”; itu adalah odds dua kali lipat.

2. Mengabaikan ketidakseimbangan kelas. Pada data dengan 5% kasus positif, accuracy 95% bisa datang dari model trivial. Selalu cek recall, F1, dan AUC; pertimbangkan stratified sampling atau class weights.

3. Menggunakan threshold default 0,5 tanpa berpikir. Pada konteks biaya asimetris (kredit, medis), threshold optimal sering jauh dari 0,5. Lakukan analisis biaya-keuntungan.

4. Tidak mengecek linearitas logit. Bila hubungan $x$ dengan logit melengkung, model gagal menangkap pola. Solusi: binning, transformasi polinomial, atau generalized additive model (GAM).

5. Mengabaikan ukuran sampel per prediktor. Aturan 10 EPV (Events Per Variable) bukan dogma, tetapi melanggar dengan 3 prediktor dan 15 kejadian positif = risiko overfitting nyata. Lakukan cross-validation.

6. Confounding dan causal inference. Regresi logistik memberikan asosiasi, bukan kausalitas. Untuk inferensi kausal, gunakan propensity score matching atau instrumental variable.

Penutup

Regresi logistik adalah jembatan antara dunia statistika klasik (regresi, inferensi) dan dunia machine learning modern (klasifikasi, prediksi). Kekuatannya terletak pada kombinasi interpretabilitas (OR, inferensi, koefisien), fleksibilitas (prediktor kontinu, kategorial, interaksi), dan soliditas teoretis (MLE, distribusi sampling, uji-hipotesis).

Tiga pesan kunci:

  1. Logit adalah transformasi kunci. Memahami logit = memahami 80% regresi logistik.
  2. Tiga skala interpretasi (probabilitas, odds, log-odds) — pilih yang paling sesuai untuk audiens Anda.
  3. Evaluasi model bukan hanya accuracy. Pada data tidak seimbang, recall dan AUC lebih informatif.

Workbook Excel pendamping berisi dataset KUR lengkap dengan formula hidup, tombol Solver untuk MLE, dan tab evaluasi (confusion matrix, ROC, AUC). Pakai untuk bereksperimen: ganti threshold, ganti prediktor, dan amati bagaimana metrik evaluasi berubah.