Kursus
Setelah Anda melatih model regresi logistik, bagaimana Anda bisa yakin bahwa koefisiennya dapat dipercaya?
Regresi logistik dikenal sederhana. Dengan scikit-learn, Anda memanggil .fit(), membaca odds ratio, dan selesai. Namun yang sering tidak diketahui pemula adalah bahwa model ini memiliki asumsi, dan ketika Anda tidak mengikutinya, koefisien menjadi menyesatkan dan prediksi meleset dengan cara yang tidak akan diungkapkan metrik apa pun.
Sejujurnya, regresi logistik memiliki lebih sedikit asumsi dibanding regresi linear, dan asumsi yang ada mudah diperiksa. Anda hanya perlu menjalankan diagnostik yang tepat sebelum menafsirkan keluaran untuk mengetahui bagian mana dari model yang dapat dipercaya.
Dalam artikel ini, saya akan memandu Anda melalui setiap asumsi yang dibuat regresi logistik, cara memeriksanya di Python dan R, apa yang terjadi ketika dilanggar, serta alternatif yang dipilih ketika asumsi tidak dapat diikuti.
Jika Anda baru di data science dan machine learning, baca artikel blog kami tentang Regresi Linear Sederhana untuk memahami asumsi dan diagnostiknya.
Apa Itu Regresi Logistik?
Regresi logistik adalah model klasifikasi yang memprediksi probabilitas dari suatu keluaran kategorikal. Anda memberikan prediktor, dan model mengembalikan angka antara 0 dan 1 yang dapat dibaca sebagai probabilitas termasuk ke dalam kelas tertentu.
Kebanyakan orang menggunakannya untuk klasifikasi biner seperti churn atau tidak churn, spam atau bukan spam. Varian seperti regresi logistik multinomial dan ordinal mencakup lebih dari dua kelas, tetapi kasus biner adalah yang dimaksud kebanyakan orang saat mengatakan "regresi logistik".
Di balik layar, model menyesuaikan kombinasi linear dari prediktor Anda dan meneruskan hasilnya melalui fungsi logistik. Keluaran adalah probabilitas, dan koefisien memberi tahu Anda bagaimana tiap prediktor menggeser log-odds.
Perlu dicatat bahwa regresi logistik berbeda dari regresi linear. Yang pertama memiliki asumsi yang familiar seperti kenormalan residual, homoskedastisitas, linearitas antara prediktor dan target. Regresi logistik tidak membuat asumsi tersebut. Ia memiliki daftar sendiri, dan cukup berbeda sehingga menggunakan asumsi regresi linear akan memberikan hasil yang menyesatkan.
Untuk detail lebih lanjut tentang regresi logistik, baca artikel blog kami yang menunjukkan implementasi di Python.
Mengapa Asumsi Regresi Logistik Penting
Asumsi penting karena berhubungan langsung dengan apa yang Anda lakukan dengan model.
Jika Anda menghormati asumsi, koefisien berarti seperti yang Anda pikirkan. Odds ratio yang Anda baca valid, dan probabilitas model selaras dengan hasil aktual. Ketika asumsi tidak dihormati, semuanya menjadi goyah dengan cara yang tidak akan ditunjukkan oleh confusion matrix atau metrik lain apa pun.
Kabar baiknya, pelanggaran bukanlah hal biner. Deviasi ringan dari, misalnya, asumsi linearitas-logit tidak akan membuat model Anda tidak berguna. Itu hanya berarti odds ratio Anda sedikit meleset dan prediksi bisa lebih buruk dari yang seharusnya. Banyak model produksi hidup dengan pemeriksaan asumsi yang tidak sempurna, dan itu tidak masalah.
Yang tidak Anda inginkan adalah melewatkan pemeriksaan. Tanpa diagnostik, Anda tidak bisa mengetahui apakah Anda sedang melihat masalah kecil atau besar sampai prediksi meleset.
Gambaran Umum Asumsi Regresi Logistik
Sebelum masuk ke tiap asumsi, berikut adalah daftar lengkap yang perlu Anda periksa.
| Asumsi | Apa yang dipersyaratkan | Diagnostik umum |
|---|---|---|
| Observasi independen | Tidak ada catatan yang memengaruhi catatan lain | Desain studi, korelasi intra-kelas |
| Variabel keluaran yang sesuai | Biner, atau dimodelkan dengan varian yang tepat | Inspeksi target |
| Linearitas logit | Prediktor linear dalam log-odds | Uji Box-Tidwell, spline |
| Tidak ada multikolinearitas parah | Prediktor tidak berkorelasi kuat | VIF, matriks korelasi |
| Ukuran sampel yang memadai | Cukup peristiwa per variabel | Aturan praktis EPV |
| Tidak ada outlier yang sangat berpengaruh | Tidak ada satu catatan pun yang membelokkan penyesuaian | Jarak Cook, leverage |
Tabel asumsi regresi logistik
Itu seluruh daftar periksa. Di sisa artikel, saya akan memandu Anda melalui tiap asumsi dengan diagnostik di Python dan R, seperti apa pelanggarannya, dan apa yang harus dilakukan ketika sesuatu tidak beres.
Asumsi Utama Regresi Logistik
Asumsi 1: Variabel keluaran bersifat biner (atau dimodelkan dengan tepat)
Regresi logistik standar dibuat untuk keluaran biner. Variabel target harus memiliki tepat dua kategori, dan model dirancang untuk kasus itu.
Contoh klasiknya adalah churn atau tidak churn, penyakit atau tidak penyakit. Apa pun yang bisa Anda rumuskan sebagai pertanyaan ya/tidak cocok digunakan.
Ketika keluaran Anda memiliki lebih dari dua kategori, Anda memerlukan varian lain. Regresi logistik multinomial menangani kategori tak berurutan seperti segmen pelanggan atau jenis produk. Regresi logistik ordinal menangani kategori berurutan seperti skor kepuasan 1 hingga 5, di mana urutan antar level bermakna.
Memaksakan keluaran multi-kelas ke model biner biasanya berarti menggabungkan kategori yang tidak seharusnya digabung. Jika Anda memiliki target kepuasan dengan lima level lalu dipangkas menjadi "puas vs tidak", Anda kehilangan informasi yang bisa membantu model. Pilih varian yang sesuai dengan bentuk target Anda.
Asumsi 2: Observasi bersifat independen
Setiap baris dalam dataset Anda harus memberi model informasi yang tidak sudah disediakan baris lain. Jika dua catatan terkait dengan cara yang melanggar ini, standar error dan p-value Anda tidak akan bermakna sebagaimana mestinya.
Asumsi gagal kapan pun observasi berbagi struktur yang belum Anda modelkan. Contoh yang baik adalah pengukuran berulang pada pasien yang sama, karena berbagi biologi pasien tersebut. Contoh lain adalah siswa yang dikelompokkan dalam kelas yang sama, karena mereka berbagi guru dan ruang.
Ketika Anda mengabaikan ini dan memasang regresi logistik biasa, model memperlakukan tiap baris sebagai informasi baru dan mengurangi standar error lebih dari seharusnya. Koefisien masih bisa terlihat baik di permukaan, tetapi p-value dan interval kepercayaan akan terlalu percaya diri.
Alternatif standarnya adalah regresi logistik efek campuran dan GEE. Model efek campuran menambahkan efek acak untuk kelompok (pasien, kelas) sehingga model memperhitungkan korelasi dalam kelompok. GEE, singkatan dari generalized estimating equations, memberi efek rata-rata populasi dengan standar error yang dikoreksi tanpa mekanisme efek acak.
Pilih efek campuran saat Anda peduli pada variasi dalam kelompok. Pilih GEE saat Anda menginginkan efek marginal di seluruh populasi.
Asumsi 3: Linearitas logit
Ini adalah asumsi yang paling sering disalahpahami orang tentang regresi logistik.
Model tidak mengasumsikan prediktor Anda memiliki hubungan linear dengan keluaran. Ia mengasumsikan hubungan linear dengan log-odds dari keluaran. Itu pernyataan yang berbeda, dan mengubah apa yang harus Anda periksa.
Apa itu logit
Logit adalah logaritma natural dari odds. Untuk probabilitas p, odds adalah p / (1 - p), dan logit adalah log dari rasio tersebut:

Logit
Regresi logistik kemudian memasang persamaan linear pada skala ini:

Rumus regresi logistik
Sisi kanan linear pada prediktor. Sisi kiri adalah log-odds, bukan probabilitas. Probabilitas yang sebenarnya Anda pedulikan didapat dengan meneruskan kombinasi linear melalui fungsi logistik, yang bersifat non-linear.
Jadi hubungan antara prediktor mana pun dan probabilitas bersifat non-linear. Hubungan antara prediktor mana pun dan log-odds lah yang seharusnya linear.
Mengapa ini penting dalam praktik
Ketika linearitas logit tidak terpenuhi untuk suatu prediktor, koefisien pada prediktor tersebut merangkum suatu kurva dengan garis lurus. Model tetap memberi Anda angka, dan angkanya bisa saja signifikan secara statistik, tetapi angka itu tidak menggambarkan hubungan sebenarnya dalam data Anda.
Misalnya, age mungkin memiliki efek berbentuk U pada log-odds suatu penyakit, dengan risiko tinggi di kedua ujung dan lebih rendah di tengah. Jika Anda memasukkan age sebagai satu istilah linear, koefisiennya mungkin mendekati nol dan Anda menyimpulkan usia tidak berpengaruh. Padahal berpengaruh. Spesifikasinya yang salah.
Memeriksa linearitas logit
Anda memiliki beberapa opsi untuk memeriksa asumsi ini.
Pemeriksaan tercepat adalah inspeksi visual. Bagi tiap prediktor kontinu menjadi desil, hitung log-odds empiris dalam tiap bin, dan plot hasilnya terhadap prediktor. Garis kira-kira lurus berarti asumsi terpenuhi. Kurva yang jelas berarti tidak. Pemeriksaan ini informal tetapi bekerja baik ketika Anda memiliki cukup data per bin.
Uji Box-Tidwell menambahkan istilah interaksi antara tiap prediktor kontinu dan log naturalnya sendiri. Jika interaksi signifikan secara statistik, asumsi linearitas-logit dilanggar untuk prediktor tersebut. Uji ini hanya bekerja pada prediktor yang benar-benar positif (karena Anda tidak bisa mengambil log dari nol atau bilangan negatif), dan sensitif terhadap ukuran sampel seperti uji signifikansi lainnya.
Spline adalah opsi lain. Alih-alih memeriksa apakah linearitas terpenuhi, Anda mengganti istilah linear dengan fungsi basis yang fleksibel seperti restricted cubic spline, dan biarkan model menyesuaikan bentuk yang dibutuhkan. Jika spline jauh lebih baik daripada istilah linear (dinilai oleh likelihood ratio atau AIC), Anda punya bukti bahwa spesifikasi linear terlalu ketat. Spline juga sekaligus menjadi perbaikan. Mempertahankannya dalam model final sering kali merupakan jawaban terbaik saat linearitas gagal.
Apa yang harus dilakukan ketika linearitas gagal
Jika asumsi gagal untuk suatu prediktor, Anda punya beberapa opsi:
- Transformasi prediktor (transformasi log atau akar kuadrat sering kali berhasil) hingga hubungannya tampak linear dalam log-odds
- Gunakan spline dan terima model yang sedikit lebih kompleks
Keduanya tetap berada dalam keluarga regresi logistik, dan keduanya lebih baik daripada mengecualikan prediktor yang sebenarnya informatif.
Asumsi 4: Tidak ada multikolinearitas parah
Regresi logistik menangani prediktor berkorelasi sampai batas tertentu. Setelah melewati batas itu, model mulai berperilaku tidak semestinya dengan cara yang sulit dikenali dari metrik uji apa pun.
Multikolinearitas terjadi ketika dua atau lebih prediktor memiliki informasi yang sama (atau sangat mirip). Mungkin Anda memiliki tinggi dalam inci dan tinggi dalam sentimeter dalam model yang sama. Mungkin Anda memiliki total pendapatan dan pendapatan per pelanggan berdampingan dengan jumlah pelanggan.
Dua hal yang salah ketika ada multikolinearitas:
- Koefisien menjadi tidak stabil: Jika Anda menambah atau menghapus satu baris, koefisien pada prediktor yang kolinear bisa berayun atau berbalik tanda. Model tetap bekerja, tetapi koefisien individual tidak bermakna.
- Standar error membesar: Dengan lebih sedikit informasi independen per prediktor, model menjadi kurang yakin tentang tiap koefisien. P-value naik, dan efek nyata dapat kembali tidak signifikan.
Prediksi biasanya baik-baik saja. Jika Anda hanya peduli pada probabilitas yang diprediksi, multikolinearitas ringan hingga sedang jarang menyebabkan masalah. “Kerusakan” terkonsentrasi pada koefisien dan inferensi yang Anda lakukan atasnya.
Dua pemeriksaan yang digunakan adalah matriks korelasi dan variance inflation factor (VIF). Matriks korelasi adalah hal pertama yang dilihat, terutama pasangan prediktor dengan korelasi di atas 0,8 atau 0,9 secara absolut. Keterbatasannya adalah matriks korelasi hanya menangkap kolinearitas berpasangan, bukan kasus multi-arah di mana tiga atau lebih prediktor secara kolektif redundan.
VIF hadir untuk kasus multi-arah. Untuk tiap prediktor, VIF mengukur seberapa besar varians koefisiennya meningkat karena kolinearitas dengan prediktor lainnya. VIF 1 berarti tidak ada kolinearitas, nilai hingga 5 biasanya baik, dan nilai di atas 10 adalah sinyal kuat bahwa prediktor tersebut redundan dengan yang lain dalam model.
Ketika VIF memberi tanda, perbaikan termudah adalah menghapus salah satu prediktor yang kolinear atau menggabungkannya menjadi satu fitur seperti jumlah atau rasio. Jika Anda lebih suka mempertahankan semua prediktor, regularisasi (ridge atau elastic net) menstabilkan koefisien tanpa harus memilih.
Asumsi 5: Ukuran sampel memadai
Regresi logistik bekerja dengan sampel kecil, tetapi agak tidak andal. Koefisien berayun lebih dari seharusnya, dan efek kelas langka menjadi hampir mustahil untuk diestimasi.
Ukuran sampel yang penting untuk regresi logistik bukan jumlah baris total. Melainkan jumlah peristiwa (observasi pada kelas minoritas). Dataset dengan 100.000 baris dan 50 kasus penipuan adalah masalah sampel kecil, karena model hanya memiliki 50 contoh hal yang ingin dipelajari.
Di sinilah events per variable (EPV) berperan. EPV adalah jumlah observasi kelas minoritas dibagi jumlah prediktor dalam model. Jika Anda memiliki 50 kasus penipuan dan 10 prediktor, EPV Anda adalah 5.
Aturan praktis lama adalah EPV minimal 10. Simulasi yang lebih baru menunjukkan bahwa angka yang tepat bergantung pada besaran efek dalam data dan jumlah regularisasi yang Anda gunakan. EPV serendah 5 bisa baik-baik saja dalam beberapa kondisi, dan EPV 20 atau lebih mungkin dibutuhkan di kondisi lain.
Intinya, perlakukan EPV sebagai informasi peringatan. Di bawah 10, harapkan estimasi tidak stabil dan pertimbangkan metode terpenalti seperti regresi logistik Firth atau ridge. Di bawah 5, dapatkan lebih banyak data atau sederhanakan model sebelum mempercayai koefisien individual apa pun.
Ketidakseimbangan kelas adalah masalah terkait tetapi berbeda.
Dataset di mana 99% kasus adalah satu kelas masih bisa memiliki cukup peristiwa per variabel secara absolut. Yang bergeser adalah tingkat dasar keluaran, bukan EPV. Data tidak seimbang cenderung menghasilkan estimasi probabilitas yang konservatif, dan akurasi berhenti menjadi metrik yang berguna. Untuk mengatasinya, evaluasi dengan log-loss atau Brier score alih-alih akurasi, dan pertimbangkan class weight atau penyetelan ambang jika Anda membutuhkan keputusan yang seimbang.
Asumsi 6: Tidak ada outlier yang sangat berpengaruh
Regresi logistik tidak mengasumsikan prediktor Anda terdistribusi normal. Prediktor yang miring dan variabel hitung semuanya baik-baik saja. Yang diperhatikan model adalah apakah ada satu observasi yang memiliki pengaruh berlebihan pada koefisien yang dipasang.
Observasi yang berpengaruh adalah yang, jika Anda menghapusnya, akan secara bermakna mengubah model. Ini tidak sama dengan outlier residual. Suatu titik bisa memiliki residual besar (model memprediksinya dengan buruk) tanpa menjadi berpengaruh, dan suatu titik bisa sangat berpengaruh (model sangat bergantung padanya) tanpa memiliki residual besar.
Anda akan menginginkan beberapa diagnostik yang melihat aspek pengaruh yang berbeda:
- Leverage mengukur seberapa tidak biasanya nilai prediktor suatu observasi relatif terhadap data lainnya. Leverage saja tidak berarti observasi berpengaruh. Itu berarti titik tersebut berpotensi berpengaruh jika keluarannya tidak sesuai dengan yang disarankan prediktor
- Jarak Cook menggabungkan leverage dengan residual menjadi satu angka yang memperkirakan seberapa banyak koefisien terpasang akan berubah jika Anda menghapus observasi. Nilai jarak Cook yang besar menyoroti titik yang perlu diselidiki. Konvensi umum adalah nilai di atas 4/n (di mana n adalah ukuran sampel) atau cukup melihat beberapa nilai jarak Cook terbesar dalam dataset Anda
- Diagnostik residual sangat bagus untuk kasus yang tidak tertangkap oleh leverage dan jarak Cook. Residual deviance dan residual Pearson menandai observasi yang sulit dipasangkan oleh model. Titik dengan residual besar perlu dilihat meski leverage-nya sedang, karena model memberi tahu Anda bahwa ia tidak bisa menjelaskan kasus itu dengan prediktor lain
Ketika Anda menemukan titik berpengaruh, pertanyaannya apakah titik itu nyata atau salah. Kesalahan entri data diperbaiki atau dihapus. Kasus yang nyata tetapi tidak biasa tetap dipertahankan, dan Anda mencatat bahwa kesimpulan Anda bergantung padanya. Jangan hanya mengecualikan titik karena berpengaruh. Itulah cara berakhir dengan model yang cocok pada data latih Anda dan tidak pada yang lain.
Kesalahpahaman Umum tentang Asumsi Regresi Logistik
Sebagian besar kebingungan tentang asumsi regresi logistik berasal dari penggunaan daftar periksa regresi linear. Asumsi regresi linear dikenal luas dan diajarkan di mana-mana, lalu muncul dalam regresi logistik di tempat yang tidak semestinya. Berikut empat yang paling umum untuk diluruskan.
Regresi logistik memerlukan variabel berdistribusi normal
Ini salah. Regresi logistik tidak membuat asumsi kenormalan pada variabel mana pun dalam model.
Keluaran seharusnya biner, bukan normal, dan itu telah kita bahas pada Asumsi 1. Prediktor juga tidak diasumsikan normal, dan bisa berbentuk apa pun sesuai data. Yang penting adalah hubungan antara prediktor dan log-odds, bukan distribusi marjinal variabel tunggal.
Regresi logistik memerlukan homoskedastisitas
Ini juga salah. Homoskedastisitas (varian residual konstan di seluruh rentang nilai prediksi) adalah asumsi regresi linear yang tidak berlaku untuk regresi logistik.
Varian keluaran pada regresi logistik bergantung pada probabilitas yang diprediksi itu sendiri. Untuk keluaran Bernoulli, varian sama dengan p(1 - p), yang tertinggi dekat p = 0.5 dan terendah dekat 0 dan 1. Varian tidak konstan, dan model memperhitungkannya melalui fungsi likelihood yang dimaksimalkan.
Jadi saat Anda memasang regresi logistik, Anda tidak melanggar apa pun dengan memiliki probabilitas prediksi dengan varian berbeda-beda. Memang begitu cara kerja model.
Prediktor harus berdistribusi normal
Ini salah. Regresi logistik tidak menempatkan asumsi distribusional pada prediktor.
Anda bisa mencampur prediktor kontinu, biner, hitung, dan kategorikal dalam model yang sama. Prediktor yang miring tidak masalah. Prediktor berekor berat juga tidak masalah. Model tidak peduli bentuk marjinal. Satu-satunya hal yang dipedulikan adalah linearitas logit (dibahas pada Asumsi 3), yang merupakan asumsi bentuk hubungan, bukan bentuk distribusi.
Jika kemiringan prediktor menimbulkan masalah, biasanya karena linearitas logit atau outlier yang berpengaruh.
Residual harus berdistribusi normal
Ini salah. Tidak ada asumsi kenormalan pada residual regresi logistik.
Regresi linear mengasumsikan residual berdistribusi normal di sekitar nol, karena itu bagian dari cara kerjanya untuk inferensi. Regresi logistik menggunakan maximum likelihood estimation pada likelihood binomial, dan distribusi residualnya ditentukan oleh keluaran (0 atau 1) dan probabilitas terpasang. Residual tersebut tidak normal, dan memang tidak seharusnya normal.
Jadi ketika Anda memeriksa diagnostik residual untuk regresi logistik (seperti pada Asumsi 6), Anda mencari observasi yang berpengaruh dan titik yang tidak bisa dijelaskan model, bukan kurva lonceng.
Cara Memeriksa Asumsi Regresi Logistik di Python
Saya akan melakukan diagnostik dengan statsmodels. Scikit-learn memasang regresi logistik tetapi tidak memberi VIF, statistik pengaruh, atau diagnostik residual secara langsung.
Menyiapkan contoh
Saya akan membuat dataset churn sintetis dengan tiga prediktor (usia, pendapatan, dan skor belanja), di mana usia dan pendapatan sengaja dikorelasikan agar ada yang bisa ditemukan oleh multikolinearitas.
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
np.random.seed(42)
n = 1000
age = np.random.normal(40, 12, n).clip(18, 80)
income = 30000 + 1500 * age + np.random.normal(0, 8000, n)
spending_score = np.random.uniform(1, 100, n)
logit_p = -3 + 0.04 * age + 0.02 * spending_score
p = 1 / (1 + np.exp(-logit_p))
y = np.random.binomial(1, p)
df = pd.DataFrame({
"churned": y,
"age": age,
"income": income,
"spending_score": spending_score,
})
model = smf.glm(
"churned ~ age + income + spending_score",
data=df, family=sm.families.Binomial()
).fit()
print(model.summary())

Ringkasan model
Ringkasan memberi Anda koefisien, standar error, statistik z, dan p-value. age dan spending_score muncul sebagai prediktor bermakna. Koefisien income sangat kecil karena keluaran tidak secara langsung bergantung pada pendapatan. Efek yang tampak darinya terserap oleh usia.
Multikolinearitas dengan VIF
Statsmodels membuat perhitungan ini sangat mudah:
from statsmodels.stats.outliers_influence import variance_inflation_factor
X = sm.add_constant(df[["age", "income", "spending_score"]])
vif = pd.DataFrame({
"feature": X.columns,
"VIF": [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
})
print(vif[vif["feature"] != "const"])

Keluaran VIF
VIF untuk age dan income sekitar 5,5, yang menunjukkan multikolinearitas ringan. spending_score mendekati 1, yang diinginkan. Variansnya tidak dibesarkan oleh kolinearitas dengan yang lain. VIF di atas 5 adalah tanda ringan; di atas 10 adalah masalah serius yang perlu segera diselesaikan. Langkah di sini adalah menghapus salah satu dari age atau income atau menggabungkannya menjadi satu fitur.
Linearitas logit dengan Box-Tidwell
Uji Box-Tidwell menambahkan istilah interaksi antara tiap prediktor kontinu dan log naturalnya sendiri. Interaksi yang signifikan menandai hubungan log-odds non-linear untuk prediktor tersebut.
df_bt = df.copy()
for col in ["age", "income", "spending_score"]:
df_bt[f"{col}_logx"] = df_bt[col] * np.log(df_bt[col])
bt_formula = (
"churned ~ age + income + spending_score + "
"age_logx + income_logx + spending_score_logx"
)
bt_model = smf.glm(
bt_formula, data=df_bt, family=sm.families.Binomial()
).fit()
interactions = ["age_logx", "income_logx", "spending_score_logx"]
print(bt_model.pvalues[interactions])

Keluaran Box-Tidwell
Jika salah satu p-value ini di bawah 0,05, asumsi linearitas-logit patut dicurigai untuk prediktor tersebut. Logit di sini dihasilkan secara linear, jadi interaksi tidak boleh signifikan. Pada data nyata, perlakukan hasil signifikan sebagai pemicu untuk memplot log-odds empiris terhadap prediktor tersebut dan putuskan apakah transformasi atau spline adalah perbaikan yang tepat.
Diagnostik pengaruh
Statsmodels memberi akses ke jarak Cook dan leverage melalui get_influence().
influence = model.get_influence()
cooks_d = influence.cooks_distance[0]
leverage = influence.hat_matrix_diag
flagged = pd.DataFrame({
"cooks_d": cooks_d,
"leverage": leverage,
}).sort_values("cooks_d", ascending=False).head(10)
print(flagged)

Keluaran diagnostik pengaruh
Ambang jarak Cook yang layak diselidiki kira-kira 4/n. Dengan 1000 baris, itu 0.004. Apa pun yang jauh di atas itu perlu dilihat lebih dekat. Dalam dataset ini, jarak Cook terbesar masih kecil secara absolut, yang merupakan hasil baik dan membosankan yang biasanya Anda inginkan.
Sekarang saya akan membuat visualisasi untuk memudahkan membaca distribusinya:

Diagnostik pengaruh divisualisasikan
Titik yang berada jauh di atas garis putus-putus adalah yang perlu diselidiki. Ada beberapa, tetapi tidak terlalu banyak.
Diagnostik residual
Residual deviance memberi tahu Anda observasi mana yang sulit dipasangkan oleh model.
deviance_resid = model.resid_deviance
fitted = model.fittedvalues
resid_df = pd.DataFrame({
"fitted": fitted,
"deviance": deviance_resid,
}).sort_values("deviance", key=abs, ascending=False).head(10)
print(resid_df)

Keluaran diagnostik residual
Residual deviance positif besar adalah kasus di mana model memberikan probabilitas rendah tetapi kenyataannya positif. Residual negatif besar adalah kebalikannya. Anda harus menyilangkan observasi ber-residual tinggi dengan diagnostik pengaruh di atas. Kasus yang sekaligus diprediksi buruk dan berpengaruh adalah yang paling layak diselidiki.
Cara Memeriksa Asumsi Regresi Logistik di R
R memiliki dukungan bawaan yang lebih rapat untuk diagnostik ini. Sebagian besar yang Anda butuhkan berasal dari glm() bawaan R ditambah paket car.
Menyiapkan contoh
Saya akan membuat jenis dataset sintetis yang sama seperti contoh Python, dengan usia dan pendapatan sengaja dikorelasikan.
set.seed(42)
n <- 1000
age <- pmin(pmax(rnorm(n, mean = 40, sd = 12), 18), 80)
income <- 30000 + 1500 * age + rnorm(n, sd = 8000)
spending_score <- runif(n, min = 1, max = 100)
logit_p <- -3 + 0.04 * age + 0.02 * spending_score
p <- 1 / (1 + exp(-logit_p))
churned <- rbinom(n, size = 1, prob = p)
df <- data.frame(churned, age, income, spending_score)
model <- glm(churned ~ age + income + spending_score,
data = df, family = binomial)
summary(model)

Keluaran ringkasan model
Keluaran summary(model) memberi Anda koefisien, standar error, statistik z, dan p-value. age dan spending_score seharusnya tampak bermakna, sementara efek income terserap oleh age.
Multikolinearitas dengan VIF
Paket car menyediakan vif() untuk glm apa pun:
library(car)
vif(model)

Keluaran VIF di R
age dan income keduanya akan kembali dengan VIF sekitar 5,7, yang menunjukkan multikolinearitas yang dibangun dalam data. spending_score mendekati 1. Seperti di Python, nilai di atas 5 perlu mendapat perhatian dan nilai di atas 10 adalah masalah yang jelas.
Linearitas logit dengan Box-Tidwell
Fungsi car::boxTidwell dirancang untuk regresi linear, jadi untuk regresi logistik pendekatan terbaik adalah menambahkan istilah interaksi secara manual dan memasang ulang:
df_bt <- df
df_bt$age_logx <- df_bt$age * log(df_bt$age)
df_bt$income_logx <- df_bt$income * log(df_bt$income)
df_bt$spending_score_logx <- df_bt$spending_score * log(df_bt$spending_score)
bt_model <- glm(
churned ~ age + income + spending_score +
age_logx + income_logx + spending_score_logx,
data = df_bt, family = binomial
)
interactions <- c("age_logx", "income_logx", "spending_score_logx")
summary(bt_model)$coefficients[interactions, ]

Keluaran BoX-Tidwell di R
Keluaran menunjukkan koefisien dan p-value untuk tiap istilah interaksi. P-value yang signifikan menandai pelanggaran asumsi linearitas-logit untuk prediktor tersebut. Untuk data sintetis di sini, uji tidak boleh menolak linearitas. Pada data nyata, tindak lanjuti dengan plot log-odds empiris atau pasang model dengan spline (dari paket splines) untuk prediktor yang ditandai uji.
Diagnostik pengaruh
R menyediakan cooks.distance() dan hatvalues() di base, jadi tidak perlu paket pihak ketiga:
cooks_d <- cooks.distance(model)
leverage <- hatvalues(model)
influence_df <- data.frame(
index = seq_along(cooks_d),
cooks_d = cooks_d,
leverage = leverage
)
head(influence_df[order(-influence_df$cooks_d), ], 10)

Diagnostik pengaruh di R
Ambang jarak Cook sama seperti di Python: 4/n, atau 0.004 untuk dataset 1000 baris. Apa pun yang jauh di atas itu layak diselidiki. Untuk pemeriksaan visual cepat, plot(model, which = 4) dari base R memberi plot jarak Cook dalam satu baris.

Diagnostik pengaruh di R divisualisasikan
Diagnostik residual
Fungsi residuals() di R memberi residual deviance dari glm:
deviance_resid <- residuals(model, type = "deviance")
fitted_vals <- fitted(model)
resid_df <- data.frame(
fitted = fitted_vals,
deviance = deviance_resid
)
head(resid_df[order(-abs(resid_df$deviance)), ], 10)

Diagnostik residual di R
Residual deviance absolut besar adalah kasus yang prediksi modelnya meleset. Anda harus menyilangkan ini dengan penanda jarak Cook di atas untuk menemukan observasi yang sekaligus kurang pas dan berpengaruh.
Untuk tampilan sekali lihat semuanya, influence.measures(model) mengembalikan tabel yang menggabungkan jarak Cook, leverage, DFBETA, dan beberapa statistik pengaruh lain di satu tempat. Ini cara tercepat memindai semua diagnostik standar pada glm yang telah dipasang.
Apa yang Terjadi Saat Asumsi Dilanggar?
Sebagian besar pelanggaran asumsi tidak akan membuat model Anda “rusak” hingga tidak bekerja. Pelanggaran membuatnya berperilaku tidak semestinya dengan cara halus yang hanya terlihat jika Anda tahu apa yang dicari.
Empat konsekuensi yang paling sering muncul:
- Koefisien tidak stabil: Perubahan kecil pada data (beberapa baris ditambah atau dihapus, sedikit perubahan rekayasa fitur) dapat secara drastis mengubah koefisien atau membalik tanda. Inilah yang dilakukan multikolinearitas, dan juga terjadi ketika ukuran sampel terlalu kecil untuk jumlah prediktor
- Kalibrasi buruk: Probabilitas yang diprediksi model berhenti cocok dengan laju aktual dalam data. Ia memprediksi churn 30% untuk suatu grup namun Anda mengamati 15%. Akurasi mungkin masih tampak baik, tetapi probabilitasnya meleset. Pelanggaran linearitas logit dan outlier berpengaruh sama-sama berkontribusi
- Inferensi menyesatkan: Ini yang paling sulit dikenali, karena model masih menghasilkan standar error dan p-value yang tampak baik. Observasi berkorelasi menurunkan standar error di bawah yang seharusnya, dan spesifikasi prediktor yang salah menaikkannya. Apa pun itu, p-value yang Anda dapatkan tidak bermakna seperti yang Anda kira
- Kualitas prediksi menurun: Gejala paling jelas, meski sering paling kecil dalam praktik. Prediksi biasanya lebih tahan banting dibanding koefisien, itulah sebabnya tim yang hanya fokus pada akurasi sering melewatkan tanda peringatan.
Namun sejujurnya, pelanggaran jarang membuat model tidak berguna. Pelanggaran membuat bagian-bagian tertentu tidak dapat diandalkan, dan bagian mana yang tidak dapat diandalkan bergantung pada asumsi mana yang rusak. Itulah mengapa diagnostik penting.
Alternatif Saat Asumsi Regresi Logistik Gagal
Jika diagnostik Anda menunjukkan masalah yang tidak bisa diperbaiki dalam regresi logistik, langkah berikutnya adalah menggunakan model yang tidak membuat asumsi tersebut.
Generalized additive models (GAM) adalah hal berikutnya yang perlu dilihat. GAM mempertahankan fungsi tautan logistik dan struktur aditif yang dapat diinterpretasi, tetapi mengganti istilah linear dengan fungsi halus untuk tiap prediktor. Anda mendapatkan koefisien-dengan-bentuk alih-alih satu angka, yang menyelesaikan masalah linearitas logit. GAM tetap cukup parametrik untuk diperiksa dan diinterpretasi, menjadikannya peningkatan yang baik dari regresi logistik saat asumsi linearitas tidak dapat dipenuhi.
Model berbasis pohon adalah alternatif yang lebih fleksibel. Random forest dan gradient boosting tidak membuat asumsi tentang distribusi prediktor atau bentuk hubungan. Model ini menangani multikolinearitas dan bahkan dapat menangkap non-linearitas. Model ini tidak memberi interpretasi koefisien yang mudah seperti regresi logistik, tetapi cenderung unggul pada metrik prediktif ketika data memiliki struktur non-linear atau interaksi yang tidak Anda masukkan ke model.
Pilihan antara GAM dan model berbasis pohon bergantung pada yang Anda butuhkan dari model.
- Pilih GAM saat keterjelasan adalah prioritas dan Anda ingin melihat bagaimana tiap prediktor memengaruhi log-odds
- Pilih pohon boosted bertahap saat kualitas prediksi adalah prioritas dan Anda bisa menerima model yang kurang transparan
Perlu dicatat bahwa asumsi regresi logistik lebih mudah diperiksa daripada diabaikan. Jika Anda bisa memperbaiki masalah dengan transformasi, spline, regularisasi, atau sampel yang lebih baik, keterjelasan dan keluaran inferensial regresi logistik biasanya mengalahkan apa yang Anda dapatkan dari beralih ke model yang lebih fleksibel.
Jadi, beralihlah ke GAM atau model pohon ketika diagnostik memberi tahu bahwa asumsi benar-benar tidak terpenuhi, bukan hanya karena regresi logistik bukan algoritme mutakhir.
Praktik Terbaik untuk Pemodelan Regresi Logistik
Terakhir, ikuti daftar singkat ini agar selalu mendapatkan model yang dapat Anda percaya:
- Periksa asumsi sebelum interpretasi: Jalankan VIF, uji Box-Tidwell, dan diagnostik pengaruh sebelum Anda membaca koefisien. Jika Anda menafsirkan dulu dan memeriksa belakangan, Anda akan mendapati diri membela angka yang tidak Anda verifikasi. Anda tidak ingin menjadi orang itu di rapat
- Gunakan regularisasi saat ukuran sampel kecil: Ridge atau elastic net menstabilkan koefisien ketika EPV rendah atau prediktor berkorelasi. Trade-off-nya adalah bias kecil untuk pengurangan varians yang besar, yang biasanya sepadan
- Validasi pada data yang tidak dilihat model: Sisihkan set uji atau gunakan cross-validation. Metrik pelatihan melebih-lebihkan performa kapan pun model memiliki ruang untuk overfit, yang pada regresi logistik terjadi kapan pun Anda memiliki banyak prediktor atau peristiwa langka
- Evaluasi kalibrasi: Akurasi menyembunyikan apakah probabilitas yang diprediksi selaras dengan laju aktual. Gunakan log-loss atau Brier score untuk evaluasi, dan lihat plot kalibrasi ketika probabilitas penting untuk keputusan bisnis
Kesimpulan
Sejujurnya, regresi logistik adalah salah satu model yang lebih memaafkan untuk Anda pasang.
Model ini toleran terhadap prediktor yang miring dan keluaran yang tidak seimbang, dan tidak peduli seperti apa residual Anda. Yang tidak bisa ditoleransi adalah hubungan yang salah dispesifikasikan dengan log-odds, atau sekumpulan prediktor yang semuanya membawa informasi sama.
Itulah mengapa linearitas logit dan multikolinearitas adalah dua pemeriksaan asumsi yang layak diperlakukan sebagai wajib. Keduanya mendistorsi model dengan cara yang tidak bisa ditangkap metrik uji apa pun. Empat asumsi lainnya juga relevan, tetapi dua ini adalah yang benar-benar perlu Anda fokuskan.
Untuk aman, jalankan diagnostik bersamaan dengan evaluasi, bukan setelahnya. Model yang memprediksi dengan baik dan lulus pemeriksaan asumsinya adalah model yang dapat Anda dukung. Selain itu adalah model yang telah Anda latih tetapi belum benar-benar diverifikasi.
Jika ini terdengar rumit, memang demikian. Dibutuhkan banyak hal untuk menjadi insinyur machine learning yang baik, jadi kami menyarankan Anda mendaftar di jalur Machine Learning Scientist in Python kami. 85 jam materi akan membuat Anda siap kerja untuk 2026.
FAQs
Apakah regresi logistik memiliki asumsi?
Ya. Regresi logistik memiliki lebih sedikit asumsi daripada regresi linear, tetapi bukan tanpa asumsi. Asumsi utama mencakup bentuk variabel keluaran, independensi observasi, linearitas log-odds, serta tidak adanya multikolinearitas tinggi atau titik yang sangat berpengaruh.
Apa asumsi paling penting dari regresi logistik?
Dua yang paling penting adalah linearitas logit dan tidak adanya multikolinearitas tinggi. Linearitas logit paling sering disalahpahami, karena regresi logistik tidak mengasumsikan hubungan linear antara prediktor dan keluaran, tetapi mengasumsikannya antara prediktor dan log-odds. Multikolinearitas penting karena mendistorsi koefisien dan membesar-besarkan standar error tanpa memengaruhi akurasi, sehingga bisa tersembunyi dari pemeriksaan yang hanya melihat kinerja prediktif.
Apa yang terjadi jika asumsi regresi logistik dilanggar?
Tergantung asumsi mana yang rusak. Pelanggaran linearitas pada logit atau multikolinearitas kuat secara diam-diam merusak koefisien sambil membiarkan akurasi utuh, sehingga mudah terlewat. Kegagalan independensi membengkakkan atau mengecilkan standar error, membuat p-value tidak andal. Kebanyakan pelanggaran tidak membuat model tidak berguna, tetapi membuat bagian-bagiannya tidak dapat dipercaya dengan cara yang tidak akan ditunjukkan akurasi saja.
Apakah regresi logistik memerlukan prediktor berdistribusi normal?
Tidak. Regresi logistik tidak menempatkan asumsi distribusional pada prediktor. Anda bisa mencampur prediktor kontinu, kategorikal, miring, dan berekor berat dalam model yang sama tanpa masalah. Yang penting adalah hubungan antara tiap prediktor dan log-odds, bukan bentuk marjinal prediktor itu sendiri.
Berapa ambang VIF yang baik untuk regresi logistik?
Nilai VIF hingga 5 biasanya baik, nilai antara 5 dan 10 menunjukkan multikolinearitas sedang yang layak diselidiki, dan nilai di atas 10 adalah sinyal bahwa satu atau lebih prediktor redundan. Ambang ini bukan aturan keras melainkan konvensi, karena interpretasi VIF bergantung pada ukuran sampel dan presisi yang Anda butuhkan. Jika VIF suatu prediktor tinggi dan standar errornya tampak tidak stabil di berbagai subset data, Anda punya bukti bahwa kolinearitas menimbulkan masalah.
