So verwenden sie die predict()-funktion mit lm() in r


Die Funktion lm() in R kann zur Anpassung linearer Regressionsmodelle verwendet werden.

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 Sie die Funktion lm() verwenden, um ein lineares Regressionsmodell in R anzupassen, und wie Sie dann die Funktion Predict() verwenden, um den Antwortwert einer neuen Beobachtung vorherzusagen, die das Modell noch nie zuvor gesehen hat.

Beispiel: Verwendung der Predict()-Funktion mit lm() in R

Angenommen, wir haben den folgenden Datenrahmen in R, der Informationen über verschiedene Basketballspieler enthält:

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

Angenommen, wir möchten das folgende multiple lineare Regressionsmodell unter Verwendung der gespielten Minuten und der Gesamtzahl der Fouls anwenden, um die Anzahl der von jedem Spieler erzielten Punkte vorherzusagen:

Punkte = β 0 + β 1 (Minuten) + β 2 (Fouls)

Wir können die Funktion lm() verwenden, um dieses Modell anzupassen:

 #fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = points ~ minutes + fouls, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.5241 -1.4782 0.5918 1.6073 2.0889 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8949 4.5375 -2.621 0.0343 *  
minutes 0.9774 0.1086 9.000 4.26e-05 ***
fouls 2.1838 0.8398 2.600 0.0354 *  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.148 on 7 degrees of freedom
Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 
F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05

Mithilfe der Koeffizienten aus den Modellergebnissen können wir die angepasste Regressionsgleichung schreiben:

Punkte = -11,8949 + 0,9774 (Minuten) + 2,1838 (Fouls)

Mit der Funktion „predict()“ können wir dann vorhersagen, wie viele Punkte ein Spieler erzielen wird, der 15 Minuten lang spielt und insgesamt 3 Fouls begeht:

 #define new observation
newdata = data. frame (minutes=15, fouls=3)

#use model to predict points value
predict(fit, newdata)

       1 
9.317731

Das Modell sagt voraus, dass dieser Spieler 9,317731 Punkte erzielen wird.

Beachten Sie, dass wir auch mehrere Vorhersagen gleichzeitig treffen können, wenn wir über einen Datenrahmen verfügen, der mehrere neue Beobachtungen enthält.

Der folgende Code zeigt beispielsweise, wie das angepasste Regressionsmodell verwendet wird, um die Punktwerte von drei Spielern vorherzusagen:

 #define new data frame of three cars
newdata = data. frame (minutes=c(15, 20, 25),
                     fouls=c(3, 2, 1))

#view data frame
newdata

  minutes fouls
1 15 3
2 20 2
3 25 1

#use model to predict points for all three players
predict(model, newdata)

        1 2 3 
 9.317731 12.021032 14.724334 

So interpretieren Sie das Ergebnis:

  • Die erwartete Punktzahl für den Spieler mit 15 Minuten und 3 Fouls beträgt 9,32 .
  • Die erwartete Punktzahl für den Spieler mit 20 Minuten und 2 Fouls beträgt 12,02 .
  • Die erwarteten Punkte für den Spieler mit 25 Minuten und 1 Foul liegen bei 14,72 .

Hinweise zur Verwendung von Predict()

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:

  • Protokoll
  • Fehler

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

  • Protokoll
  • Fehler

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

 Error in eval(predvars, data, env)

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