Panduan lengkap regresi linier dengan python
Regresi linier merupakan metode yang dapat kita gunakan untuk memahami hubungan antara satu atau lebih variabel prediktor dan variabel respon.
Tutorial ini menjelaskan cara melakukan regresi linier dengan Python.
Contoh: regresi linier dengan Python
Misalkan kita ingin mengetahui apakah jumlah jam yang dihabiskan untuk belajar dan jumlah ujian praktik yang diambil mempengaruhi nilai yang diterima siswa pada ujian tertentu.
Untuk mengeksplorasi hubungan ini, kita dapat melakukan langkah-langkah berikut dengan Python untuk melakukan regresi linier berganda.
Langkah 1: Masukkan datanya.
Pertama, kita akan membuat pandas DataFrame untuk menampung kumpulan data kita:
import pandas as pd #create data df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6, 5, 3, 4, 6, 2, 1, 2], 'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2, 4, 4, 4, 5, 1, 0, 1], 'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96, 90, 82, 85, 99, 83, 62, 76]}) #view data df hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72 5 1 2 69 6 5 1 94 7 4 1 94 8 2 0 88 9 4 3 92 10 4 4 90 11 3 3 75 12 6 2 96 13 5 4 90 14 3 4 82 15 4 4 85 16 6 5 99 17 2 1 83 18 1 0 62 19 2 1 76
Langkah 2: Lakukan regresi linier.
Selanjutnya, kita akan menggunakan fungsi OLS() dari pustaka statsmodels untuk melakukan regresi kuadrat terkecil biasa, menggunakan “jam” dan “ujian” sebagai variabel prediktor dan “skor” sebagai variabel respons:
import statsmodels.api as sm #define response variable y = df['score'] #define predictor variables x = df[['hours', 'exams']] #add constant to predictor variables x = sm.add_constant(x) #fit linear regression model model = sm.OLS(y, x).fit() #view model summary print(model.summary()) OLS Regression Results ==================================================== ============================ Dept. Variable: R-squared score: 0.734 Model: OLS Adj. R-squared: 0.703 Method: Least Squares F-statistic: 23.46 Date: Fri, 24 Jul 2020 Prob (F-statistic): 1.29e-05 Time: 13:20:31 Log-Likelihood: -60.354 No. Observations: 20 AIC: 126.7 Df Residuals: 17 BIC: 129.7 Df Model: 2 Covariance Type: non-robust ==================================================== ============================ coef std err t P>|t| [0.025 0.975] -------------------------------------------------- ---------------------------- const 67.6735 2.816 24.033 0.000 61.733 73.614 hours 5.5557 0.899 6.179 0.000 3.659 7.453 exams -0.6017 0.914 -0.658 0.519 -2.531 1.327 ==================================================== ============================ Omnibus: 0.341 Durbin-Watson: 1.506 Prob(Omnibus): 0.843 Jarque-Bera (JB): 0.196 Skew: -0.216 Prob(JB): 0.907 Kurtosis: 2,782 Cond. No. 10.8 ==================================================== ============================
Langkah 3: Interpretasikan hasilnya.
Berikut cara menafsirkan angka paling relevan dalam hasil:
R kuadrat: 0,734 . Ini disebut koefisien determinasi. Ini adalah proporsi varians variabel respon yang dapat dijelaskan oleh variabel prediktor. Dalam contoh ini, 73,4% variasi nilai ujian dijelaskan oleh jumlah jam belajar dan jumlah persiapan ujian yang diambil.
F-statistik: 23.46 . Ini adalah statistik F keseluruhan model regresi.
Masalah (statistik F): 1.29e-05. Ini adalah nilai p yang terkait dengan statistik F keseluruhan. Hal ini memberitahu kita apakah model regresi secara keseluruhan signifikan secara statistik atau tidak. Dengan kata lain, hal ini memberi tahu kita apakah gabungan kedua variabel prediktor mempunyai hubungan yang signifikan secara statistik dengan variabel respons. Dalam kasus ini, nilai p kurang dari 0,05, menunjukkan bahwa gabungan variabel prediktor “jam belajar” dan “persiapan ujian diambil” memiliki hubungan yang signifikan secara statistik dengan nilai ujian.
koefisien: Koefisien masing-masing variabel prediktor menunjukkan perubahan rata-rata yang diharapkan dalam variabel respons, dengan asumsi variabel prediktor lainnya tetap konstan. Misalnya, untuk setiap tambahan jam yang dihabiskan untuk belajar, nilai ujian rata-rata diperkirakan akan meningkat sebesar 5,56 , dengan asumsi bahwa ujian praktik yang diambil tetap konstan.
Berikut cara lain untuk melihatnya: jika Siswa A dan Siswa B sama-sama mengikuti jumlah ujian persiapan yang sama namun Siswa A belajar satu jam lebih lama, maka Siswa A harus memperoleh skor 5,56 poin lebih tinggi daripada siswa B.
Kami menafsirkan koefisien intersep yang berarti bahwa nilai ujian yang diharapkan untuk siswa yang belajar tanpa jam kerja dan tidak mengikuti ujian persiapan adalah 67,67 .
P>|t|. Nilai p individual memberi tahu kita apakah setiap variabel prediktor signifikan secara statistik atau tidak. Kita dapat melihat bahwa “jam” signifikan secara statistik (p = 0,00) sedangkan “ujian” (p = 0,52) tidak signifikan secara statistik pada α = 0,05. Karena istilah “ujian” tidak signifikan secara statistik, kami mungkin memutuskan untuk menghapusnya dari model.
Estimasi persamaan regresi: Kita dapat menggunakan koefisien dari keluaran model untuk membuat estimasi persamaan regresi berikut:
nilai ujian = 67,67 + 5,56*(jam) – 0,60*(ujian persiapan)
Kita dapat menggunakan persamaan regresi perkiraan ini untuk menghitung nilai ujian yang diharapkan seorang siswa, berdasarkan jumlah jam belajar dan jumlah ujian praktik yang mereka ambil. Misalnya, seorang siswa yang belajar selama tiga jam dan mengikuti ujian persiapan harus mendapat nilai 83,75 :
Perlu diingat bahwa karena ujian persiapan sebelumnya tidak signifikan secara statistik (p = 0,52), kami mungkin memutuskan untuk menghapusnya karena tidak memberikan perbaikan apa pun pada model secara keseluruhan. Dalam hal ini, kita dapat melakukan regresi linier sederhana hanya dengan menggunakan jam belajar sebagai variabel prediktor.
Langkah 4: Verifikasi asumsi model.
Setelah Anda melakukan regresi linier, Anda mungkin ingin memeriksa beberapa asumsi untuk memastikan bahwa hasil model regresi dapat diandalkan. Asumsi tersebut antara lain:
Asumsi #1: Terdapat hubungan linier antara variabel prediktor dan variabel respon.
- Verifikasi asumsi ini dengan membuat plot sisa yang menampilkan nilai yang sesuai terhadap sisa untuk model regresi.
Hipotesis #2: Independensi residu.
- Verifikasi hipotesis ini dengan melakukan uji Durbin-Watson .
Hipotesis #3: Homoskedastisitas residu.
- Verifikasi hipotesis ini dengan melakukan uji Breusch-Pagan .
Asumsi No. 4: Normalitas residu.
- Verifikasi asumsi ini secara visual menggunakanplot QQ .
- Verifikasi hipotesis ini dengan tes formal seperti tes Jarque-Bera atau tes Anderson-Darling .
Asumsi #5: Verifikasi bahwa tidak ada multikolinearitas di antara variabel prediktor.
- Verifikasi hipotesis tersebut dengan menghitung nilai VIF masing-masing variabel prediktor.
Jika asumsi ini terpenuhi, Anda dapat yakin bahwa hasil model regresi linier berganda Anda dapat diandalkan.
Anda dapat menemukan kode Python lengkap yang digunakan dalam tutorial ini di sini .