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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *