Predict () r'de lojistik regresyon modeliyle nasıl kullanılır?


R’ye bir lojistik regresyon modeli yerleştirdikten sonra, modelin daha önce hiç görmediği yeni bir gözlemin yanıt değerini tahmin etmek için tahmin() işlevini kullanabiliriz.

Bu işlev aşağıdaki sözdizimini kullanır:

tahmin(nesne, yeniveri, tür = “yanıt”)

Altın:

  • nesne: Lojistik regresyon modelinin adı
  • newdata: Tahminlerde bulunulacak yeni veri çerçevesinin adı
  • type: Yapılacak tahminin türü

Aşağıdaki örnekte bu fonksiyonun pratikte nasıl kullanılacağı gösterilmektedir.

Örnek: Predict() işlevini R’de Lojistik Regresyon Modeli ile Kullanmak

Bu örnek için mtcars adı verilen yerleşik R veri kümesini kullanacağız:

 #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

Am tepki değişkenini (aracın şanzıman tipi: 0 = otomatik, 1 = manuel) tahmin etmek için disp ve hp değişkenlerini kullandığımız aşağıdaki lojistik regresyon modelini uygulayacağız:

 #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

Daha sonra, modelin daha önce hiç görmediği sekiz araba hakkında bilgi içeren yeni bir veri çerçevesi oluşturabilir ve yeni bir arabanın otomatik şanzımana (am=0) veya manuel şanzımana sahip olma olasılığını tahmin etmek için tahmin() işlevini kullanabiliriz ( ben =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

Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:

  • 1 numaralı arabanın manuel şanzımana sahip olma olasılığı 0,004’tür .
  • 2 numaralı arabanın manuel şanzımana sahip olma olasılığı 0,008’dir .
  • 3 numaralı arabanın manuel şanzımana sahip olma olasılığı 0,336’dır .

Ve benzeri.

Model tarafından tahmin edilen değerlere karşı gerçek am değerlerini görüntüleyen bir karışıklık matrisi oluşturmak için table() işlevini de kullanabiliriz:

 #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

Son olarak, yeni veritabanındaki modelin am değerini doğru tahmin ettiği gözlemlerin yüzdesini hesaplamak için Mean() işlevini kullanabiliriz:

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

[1] 0.75

Modelin yeni veri tabanındaki arabaların %75’i için am değerini doğru tahmin ettiğini görebiliyoruz.

Ek kaynaklar

Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

R’de basit doğrusal regresyon nasıl gerçekleştirilir
R’de çoklu doğrusal regresyon nasıl gerçekleştirilir
R’de polinom regresyonu nasıl gerçekleştirilir
R’de bir tahmin aralığı nasıl oluşturulur

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir