Bagaimana melakukan regresi logistik menggunakan model statistik
Modul statsmodels Python menawarkan berbagai fungsi dan kelas yang memungkinkan Anda mengadaptasi berbagai model statistik.
Contoh langkah demi langkah berikut menunjukkan cara melakukan regresi logistik menggunakan fungsi statsmodels.
Langkah 1: Buat datanya
Pertama, mari kita buat pandas DataFrame yang berisi tiga variabel:
- Jam belajar (seluruh nilai)
- Metode belajar (metode A atau B)
- Hasil ujian (lulus atau gagal)
Kami akan menyesuaikan model regresi logistik menggunakan jam belajar dan metode belajar untuk memprediksi apakah seorang siswa lulus atau tidak dalam ujian tertentu.
Kode berikut menunjukkan cara membuat pandas DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' result ': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1], ' hours ': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6, 5, 8, 8, 7, 6, 7, 5, 4, 8, 9], ' method ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'A', 'B', 'A', 'B', 'B', 'A', 'A', 'B', 'A', 'B', 'A']}) #view first five rows of DataFrame df. head () result hours method 0 0 1 A 1 1 2 A 2 0 2 A 3 0 2 B 4 0 3 B
Langkah 2: Sesuaikan model regresi logistik
Selanjutnya, kita akan menyesuaikan model regresi logistik menggunakan fungsi logit() :
import statsmodels. formula . api as smf
#fit logistic regression model
model = smf. logit (' result~hours+method ', data=df). fit ()
#view model summary
print ( model.summary ())
Optimization completed successfully.
Current function value: 0.557786
Iterations 5
Logit Regression Results
==================================================== ============================
Dept. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
==================================================== ============================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------- -----------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[TB] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
==================================================== ============================
Nilai-nilai di kolom koefisien keluaran memberi tahu kita perubahan rata-rata dalam log peluang lulus ujian.
Misalnya:
- Penggunaan metode belajar B dikaitkan dengan peningkatan rata-rata log odds kelulusan ujian sebesar 0,0875 dibandingkan dengan menggunakan metode belajar A.
- Setiap jam belajar tambahan dikaitkan dengan peningkatan rata-rata sebesar 0,4909 dalam log peluang lulus ujian.
Nilai dalam P>|z| Kolom tersebut mewakili nilai p untuk setiap koefisien.
Misalnya:
- Metode penelitian mempunyai p-value sebesar 0,934 . Karena nilai ini tidak kurang dari 0,05, berarti tidak ada hubungan yang signifikan secara statistik antara jam belajar dengan lulus atau tidaknya siswa dalam ujian.
- Jam belajar memiliki nilai p sebesar 0,045 . Karena nilai ini kurang dari 0,05, berarti terdapat hubungan yang signifikan secara statistik antara jam belajar dengan lulus atau tidaknya siswa dalam ujian.
Langkah 3: Evaluasi kinerja model
Untuk menilai kualitas model regresi logistik, kita dapat melihat dua metrik pada keluarannya:
1. Nama panggilan R-kuadrat
Nilai ini dapat dianggap sebagai pengganti nilai R-kuadrat untuk model regresi linier.
Ini dihitung sebagai rasio fungsi log-likelihood yang dimaksimalkan dari model nol ke model penuh.
Nilai ini dapat berkisar dari 0 hingga 1, dengan nilai yang lebih tinggi menunjukkan kesesuaian model yang lebih baik.
Dalam contoh ini, nilai pseudo R-squared adalah 0,1894 , yang cukup rendah. Hal ini menunjukkan bahwa variabel prediktor model tidak berfungsi dengan baik dalam memprediksi nilai variabel respons.
2. Nilai p LLR
Nilai ini dapat dianggap sebagai pengganti nilai p untuk nilai F keseluruhan model regresi linier.
Jika nilai ini berada di bawah ambang batas tertentu (misalnya α = 0,05), maka kita dapat menyimpulkan bahwa model secara keseluruhan “berguna” dan dapat memprediksi nilai variabel respon dengan lebih baik dibandingkan model tanpa variabel prediktif.
Dalam contoh ini, nilai p LLR adalah 0,07375 . Tergantung pada tingkat signifikansi yang kita pilih (misalnya 0,01, 0,05, 0,1), kita mungkin dapat menyimpulkan bahwa model secara keseluruhan berguna atau tidak.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya dengan Python:
Cara melakukan regresi linier dengan Python
Cara melakukan regresi logaritma dengan Python
Cara melakukan regresi kuantil dengan Python