So verwenden sie predict() mit dem logistischen regressionsmodell in r


Sobald wir ein logistisches Regressionsmodell in R angepasst haben, können wir die Funktion „predict()“ verwenden, um den Antwortwert einer neuen Beobachtung vorherzusagen, die das Modell noch nie zuvor gesehen hat.

Diese Funktion verwendet die folgende Syntax:

Vorhersage(Objekt, neue Daten, Typ = „Antwort“)

Gold:

  • Objekt: Der Name des logistischen Regressionsmodells
  • newdata: Der Name des neuen Datenrahmens, für den Vorhersagen getroffen werden sollen
  • Typ: Der Typ der zu treffenden Vorhersage

Das folgende Beispiel zeigt, wie Sie diese Funktion in der Praxis nutzen können.

Beispiel: Verwendung von Predict() mit einem logistischen Regressionsmodell in R

Für dieses Beispiel verwenden wir den integrierten R-Datensatz namens 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

Wir werden das folgende logistische Regressionsmodell anpassen, in dem wir die Variablen disp und hp verwenden, um die Antwortvariable am (den Getriebetyp des Autos: 0 = automatisch, 1 = manuell) vorherzusagen:

 #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

Anschließend können wir einen neuen Datenrahmen erstellen, der Informationen über acht Autos enthält, die das Modell noch nie zuvor gesehen hat, und mithilfe der Funktion „predict()“ die Wahrscheinlichkeit vorhersagen, dass ein neues Auto ein Automatikgetriebe (am=0) oder ein Schaltgetriebe haben wird ( bin =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

So interpretieren Sie das Ergebnis:

  • Die Wahrscheinlichkeit, dass Auto 1 ein Schaltgetriebe hat, beträgt 0,004 .
  • Die Wahrscheinlichkeit, dass Auto 2 ein Schaltgetriebe hat, beträgt 0,008 .
  • Die Wahrscheinlichkeit, dass Auto 3 ein Schaltgetriebe hat, beträgt 0,336 .

Und so weiter.

Wir können auch die Funktion table() verwenden, um eine Verwirrungsmatrix zu erstellen, die die tatsächlichen am-Werte im Vergleich zu den vom Modell vorhergesagten Werten anzeigt:

 #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

Schließlich können wir die Funktion „Mean()“ verwenden, um den Prozentsatz der Beobachtungen in der neuen Datenbank zu berechnen, für die das Modell den Wert von am richtig vorhergesagt hat:

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

[1] 0.75

Wir können sehen, dass das Modell den am- Wert für 75 % der Autos in der neuen Datenbank korrekt vorhergesagt hat.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in R ausführen:

So führen Sie eine einfache lineare Regression in R durch
So führen Sie eine multiple lineare Regression in R durch
So führen Sie eine Polynomregression in R durch
So erstellen Sie ein Vorhersageintervall in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert