So verwenden sie die vorhersagefunktion mit glm in r (mit beispielen)


Die Funktion glm() in R kann zur Anpassung verallgemeinerter linearer Modelle verwendet werden. Diese Funktion ist besonders nützlich für die Anpassung logistischer Regressionsmodelle , Poisson-Regressionsmodelle und anderer komplexer Modelle.

Sobald wir ein Modell angepasst haben, können wir die Funktion „predict()“ verwenden, um den Antwortwert einer neuen Beobachtung vorherzusagen.

Diese Funktion verwendet die folgende Syntax:

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

Gold:

  • Objekt: Der Name der Modellanpassung mithilfe der glm()-Funktion
  • 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 ein verallgemeinertes lineares Modell in R angepasst wird und wie das Modell dann verwendet wird, um den Antwortwert einer neuen Beobachtung vorherzusagen, die es noch nie zuvor gesehen hat.

Beispiel: Verwendung der Prognosefunktion mit glm in R

Für dieses Beispiel verwenden wir den integrierten R-Datensatz namens mtcars :

 #view first six rows of mtcars data frame
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 dieses Modell verwenden, um mithilfe des folgenden Codes die Wahrscheinlichkeit vorherzusagen, dass ein neues Auto ein Automatikgetriebe (am=0) oder ein Schaltgetriebe (am=1) haben wird:

 #define new observation
newdata = data. frame (disp=200, hp=100)

#use model to predict value of am
predict(model, newdata, type=" response ")

         1 
0.00422564

Das Modell sagt voraus, dass die Wahrscheinlichkeit, dass das neue Auto über ein Schaltgetriebe (am=1) verfügt, 0,004 beträgt. Dies bedeutet, dass es sehr wahrscheinlich ist, dass dieses neue Auto mit einem Automatikgetriebe ausgestattet sein wird.

Beachten Sie, dass wir auch mehrere Vorhersagen gleichzeitig treffen können, wenn wir über eine Datenbank verfügen, die mehrere Neuwagen enthält.

Der folgende Code zeigt beispielsweise, wie das angepasste Modell verwendet wird, um die Wahrscheinlichkeit eines Schaltgetriebes für drei neue Autos vorherzusagen:

 #define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
                     hp=c(100, 90, 108))

#view data frame
newdata

  hp disp
1,200 100
2 180 90
3,160,108

#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")

          1 2 3 
0.004225640 0.008361069 0.335916069 

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 .

Kommentare

Die Spaltennamen im neuen Datenrahmen müssen genau mit den Spaltennamen im Datenrahmen übereinstimmen, die zum Erstellen des Modells verwendet wurden.

Beachten Sie, dass in unserem vorherigen Beispiel der Datenrahmen, den wir zum Erstellen des Modells verwendet haben, die folgenden Spaltennamen für unsere Prädiktorvariablen enthielt:

  • Anzeige
  • PS

Als wir also den neuen Datenrahmen namens „newdata“ erstellt haben, haben wir darauf geachtet, auch die Spalten zu benennen:

  • Anzeige
  • PS

Wenn die Spaltennamen nicht übereinstimmen, erhalten Sie die folgende Fehlermeldung:

Fehler bei der Auswertung (Predvars, Daten, Umgebung)

Beachten Sie dies, wenn Sie die Funktion „predict()“ verwenden.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, 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