Cara menggunakan predict() dengan model regresi logistik di r


Setelah kita memasang model regresi logistik di R, kita dapat menggunakan fungsi prediksi() untuk memprediksi nilai respons dari observasi baru yang belum pernah dilihat model tersebut sebelumnya.

Fungsi ini menggunakan sintaks berikut:

prediksi(objek, data baru, tipe = “respons”)

Emas:

  • objek : Nama model regresi logistik
  • data baru: Nama bingkai data baru yang akan dijadikan prediksi
  • type : Jenis prediksi yang akan dibuat

Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.

Contoh: Menggunakan Predict() dengan Model Regresi Logistik di R

Untuk contoh ini, kita akan menggunakan dataset R bawaan yang disebut mtcars :

 #view first six rows of mtcars dataset
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

Kami akan menyesuaikan model regresi logistik berikut di mana kami menggunakan variabel disp dan hp untuk memprediksi variabel respon am (tipe transmisi mobil: 0 = otomatis, 1 = manual):

 #fit logistic regression model
model <- glm(am ~ disp + hp, data=mtcars, family=binomial)

#view model summary
summary(model)

Call:
glm(formula = am ~ disp + hp, family = binomial, data = mtcars)

Deviance Residuals: 
    Min 1Q Median 3Q Max  
-1.9665 -0.3090 -0.0017 0.3934 1.3682  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept) 1.40342 1.36757 1.026 0.3048  
available -0.09518 0.04800 -1.983 0.0474 *
hp 0.12170 0.06777 1.796 0.0725 .
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 43,230 on 31 degrees of freedom
Residual deviance: 16,713 on 29 degrees of freedom
AIC: 22,713

Number of Fisher Scoring iterations: 8

Kita kemudian dapat membuat bingkai data baru yang berisi informasi tentang delapan mobil yang modelnya belum pernah dilihat sebelumnya dan menggunakan fungsi prediksi() untuk memprediksi kemungkinan bahwa sebuah mobil baru akan memiliki transmisi otomatis (am=0) atau transmisi manual ( pagi =1):

 #define new data frame
newdata = data. frame (disp=c(200, 180, 160, 140, 120, 120, 100, 160),
                     hp=c(100, 90, 108, 90, 80, 90, 80, 90),
                     am=c(0, 0, 0, 1, 0, 1, 1, 1))

#view data frame
newdata

#use model to predict value of am for all new cars
newdata$am_prob <- predict(model, newdata, type=" response ")

#view updated data frame
newdata

  disp hp am am_prob
1 200 100 0 0.004225640
2 180 90 0 0.008361069
3 160 108 0 0.335916069
4 140 90 1 0.275162866
5 120 80 0 0.429961894
6 120 90 1 0.718090728
7 100 80 1 0.835013994
8 160 90 1 0.053546152

Berikut cara menafsirkan hasilnya:

  • Peluang terambilnya mobil 1 bertransmisi manual adalah 0,004 .
  • Peluang terambilnya mobil 2 bertransmisi manual adalah 0,008 .
  • Peluang terambilnya mobil 3 bertransmisi manual adalah 0,336 .

Dan seterusnya.

Kita juga dapat menggunakan fungsi table() untuk membuat matriks konfusi yang menampilkan nilai am aktual versus nilai yang diprediksi oleh model:

 #create vector that contains 0 or 1 depending on predicted value of am
am_pred = rep(0, dim(newdata)[1])
am_pred[newdata$am_prob > .5] = 1

#create confusion matrix
table(am_pred, newdata$am)

am_pred 0 1
      0 4 2
      1 0 2

Terakhir, kita dapat menggunakan fungsi Mean() untuk menghitung persentase observasi dalam database baru yang modelnya memprediksi nilai am dengan benar :

 #calculate percentage of observations the model correctly predicted response value for
mean(am_pred == newdata$am)

[1] 0.75

Kita dapat melihat bahwa model tersebut dengan tepat memprediksi nilai am untuk 75% mobil di database baru.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:

Cara melakukan regresi linier sederhana di R
Cara melakukan regresi linier berganda di R
Bagaimana melakukan regresi polinomial di R
Cara membuat interval prediksi di R

Tambahkan komentar

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