Cara membuat prediksi menggunakan model regresi di statsmodels
Anda dapat menggunakan sintaks dasar berikut untuk menggunakan penyesuaian model regresi menggunakan modul statsmodels dengan Python untuk membuat prediksi tentang observasi baru:
model. predict (df_new)
Sintaks khusus ini akan menghitung nilai respons yang diprediksi untuk setiap baris DataFrame baru yang disebut df_new , menggunakan model regresi yang sesuai untuk model statistik yang disebut model .
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Membuat prediksi menggunakan model regresi di Statsmodels
Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang jam belajar, ujian persiapan yang diambil, dan nilai akhir yang diterima siswa di kelas tertentu:
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view head of DataFrame df. head () hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72
Kita dapat menggunakan fungsi OLS() dari modul statsmodels agar sesuai dengan model regresi linier berganda , menggunakan “jam” dan “ujian” sebagai variabel prediktor dan “skor” sebagai variabel respons:
import statsmodels. api as sm #define predictor and response variables y = df[' score '] 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.718 Model: OLS Adj. R-squared: 0.661 Method: Least Squares F-statistic: 12.70 Date: Fri, 05 Aug 2022 Prob (F-statistic): 0.00180 Time: 09:24:38 Log-Likelihood: -38.618 No. Observations: 13 AIC: 83.24 Df Residuals: 10 BIC: 84.93 Df Model: 2 Covariance Type: non-robust ==================================================== ============================ coef std err t P>|t| [0.025 0.975] -------------------------------------------------- ---------------------------- const 71.4048 4.001 17.847 0.000 62.490 80.319 hours 5.1275 1.018 5.038 0.001 2.860 7.395 exams -1.2121 1.147 -1.057 0.315 -3.768 1.344 ==================================================== ============================ Omnibus: 1,103 Durbin-Watson: 1,248 Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803 Skew: -0.289 Prob(JB): 0.669 Kurtosis: 1.928 Cond. No. 11.7 ==================================================== ============================
Dari kolom koefisien pada output, kita dapat menulis model regresi yang sesuai:
Skor = 71.4048 + 5.1275 (jam) – 1.2121 (ujian)
Sekarang misalkan kita ingin menggunakan model regresi yang sesuai untuk memprediksi “skor” lima siswa baru.
Pertama, mari buat DataFrame untuk menampung lima observasi baru:
#create new DataFrame
df_new = pd. DataFrame ({' hours ': [1, 2, 2, 4, 5],
' exams ': [1, 1, 4, 3, 3]})
#add column for constant
df_new = sm. add_constant (df_new)
#view new DataFrame
print (df_new)
const hours exams
0 1.0 1 1
1 1.0 2 1
2 1.0 2 4
3 1.0 4 3
4 1.0 5 3
Selanjutnya, kita dapat menggunakan fungsi prediksi() untuk memprediksi “skor” untuk masing-masing siswa ini, menggunakan “jam” dan “ujian” sebagai nilai untuk variabel prediktor dalam model regresi yang kami sesuaikan:
#predict scores for the five new students model. predict (df_new) 0 75.320242 1 80.447734 2 76.811480 3 88.278550 4 93.406042 dtype:float64
Berikut cara menafsirkan hasilnya:
- Siswa pertama di DataFrame baru diharapkan mendapat skor 75.32 .
- Siswa kedua di DataFrame baru diharapkan mendapat skor 80.45 .
Dan seterusnya.
Untuk memahami cara penghitungan prediksi ini, kita perlu mengacu pada model regresi sebelumnya:
Skor = 71.4048 + 5.1275 (jam) – 1.2121 (ujian)
Dengan memasukkan nilai “jam” dan “ujian” bagi siswa baru, kita dapat menghitung prediksi skornya.
Misalnya, siswa pertama di DataFrame baru memiliki nilai 1 untuk jam dan nilai 1 untuk ujian.
Jadi, skor prediksi mereka dihitung sebagai berikut:
Skor = 71,4048 + 5,1275(1) – 1,2121(1) = 75,32 .
Skor setiap siswa di DataFrame baru dihitung dengan cara yang sama.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya dengan Python:
Cara Melakukan Regresi Logistik dengan Python
Cara menghitung AIC model regresi dengan Python
Cara menghitung R-kuadrat yang disesuaikan dengan Python