Verwenden Sie die Vorhersagefunktion für ein lineares Regressionsmodell in R
Nachdem wir mit der Funktion lm()
ein lineares Regressionsmodell erstellt haben, können wir damit unter anderem Werte der Antwortvariablen (auch als Ausgabe oder abhängig bezeichnet) für neue Werte des Merkmals (auch als die Eingabe oder unabhängige) Variablen.
In diesem Artikel betrachten wir die grundlegenden Argumente der Funktion predict()
von R im Kontext der linearen Regression. Insbesondere werden wir sehen, dass die Funktion erwartet, dass die Eingabe in einem bestimmten Format mit bestimmten Spaltennamen vorliegt.
Verwenden Sie die Funktion predict()
für ein lineares Regressionsmodell in R
Um die Funktion predict()
zu demonstrieren, bauen wir zunächst ein lineares Regressionsmodell mit einigen Beispieldaten auf.
Beachten Sie die Spaltennamen im Datenrahmen und beachten Sie, wie sie in der linearen Regressionsformel verwendet werden.
Beispielcode:
Feature = c(15:24)
set.seed(654)
Response = 2* c(15:24) + 5 + rnorm(10, 0,3)
DFR = data.frame(Response, Feature)
DFR
# The arguments' formula and data are named for clarity.
LR_mod = lm(formula = Response~Feature, data = DFR)
LR_mod
Ausgang:
> Feature = c(15:24)
> set.seed(654)
> Response = 2* c(15:24) + 5 + rnorm(10, 0,3)
> DFR = data.frame(Response, Feature)
> DFR
Response Feature
1 32.71905 15
2 35.83089 16
3 44.06888 17
4 40.71729 18
5 43.28590 19
6 47.45182 20
7 50.19730 21
8 51.81954 22
9 53.22364 23
10 51.69406 24
> # The arguments' formula and data are named for clarity.
> LR_mod = lm(formula = Response~Feature, data = DFR)
> LR_mod
Call:
lm(formula = Response ~ Feature, data = DFR)
Coefficients:
(Intercept) Feature
2.096 2.205
Verwenden Sie predict()
, um die Antwort vorherzusagen
Da wir nun ein lineares Regressionsmodell haben, können wir die Funktion predict()
von R verwenden, um Werte der Antwort vorherzusagen, die neuen Werten der Merkmalsvariablen entsprechen.
Die Funktion predict()
benötigt für ein lineares Regressionsmodell mindestens zwei Argumente.
- Ein Modellobjekt.
- Neue Daten.
In diesem Zusammenhang gibt es zwei wichtige Überlegungen, die wir berücksichtigen müssen.
-
Wir müssen die neuen Daten als Datenrahmen bereitstellen. In unserem Beispiel ist das Feature eine einzelne Variable.
Wenn wir der Funktion
predict()
einen Vektor übergeben, erhalten wir einen Fehler. -
Wenn sich der Spaltenname der Feature-Variablen im neuen Datenrahmen vom Namen der entsprechenden Spalte im ursprünglichen Datenrahmen unterscheidet, erhalten wir eine unerwartete Ausgabe.
Beispielcode:
# First, let us create new values for the feature variable.
NewFeature = c(20.5, 16.5, 22.5)
# If we provide a vector, we get an error.
predict(object = LR_mod, newdata = NewFeature)
# Make a data frame.
DFR2 = data.frame(NewFeature)
# Another error.
# R saw the correct number of rows in the new data but did not use them.
predict(LR_mod, newdata = DFR2)
Ausgang:
> # First, let us create new values for the feature variable.
> NewFeature = c(20.5, 16.5, 22.5)
> # If we provide a vector, we get an error.
> predict(object = LR_mod, newdata = NewFeature)
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
'data' must be a data.frame, environment, or list
> # Make a data frame.
> DFR2 = data.frame(NewFeature)
> # Another error.
> # R saw the correct number of rows in the new data but did not use them.
> predict(LR_mod, newdata = DFR2)
1 2 3 4 5 6 7 8 9 10
35.17674 37.38209 39.58745 41.79280 43.99816 46.20351 48.40887 50.61422 52.81958 55.02494
Warning message:
'newdata' had 3 rows but variables found have 10 rows
Wir müssen zwei Dinge sicherstellen, um die korrekte Ausgabe der Funktion predict()
zu erhalten.
- Wir müssen einen Datenrahmen an das Argument
newdata
der Funktionpredict()
übergeben. Dies wurde oben nach dem ersten Fehler durchgeführt. - Der Spaltenname der Feature-Variablen sollte mit dem identisch sein, der im ursprünglichen Datenrahmen zum Erstellen des Modells verwendet wurde. Wir werden diese Änderung im folgenden Codesegment vornehmen.
Es ist auch eine gute Praxis, die Argumente zu benennen.
Mit diesen Aspekten erhalten wir die erwartete Ausgabe der Funktion predict()
.
Beispielcode:
# The feature column of the new data frame is given the same name as in the original data frame.
DFR3 = data.frame(Feature = NewFeature)
# Finally, predict() works as expected.
predict(LR_mod, newdata = DFR3)
Ausgang:
> # The feature column of the new data frame is given the same name as in the original data frame.
> DFR3 = data.frame(Feature = NewFeature)
> # Finally, predict() works as expected.
> predict(LR_mod, newdata = DFR3)
1 2 3
47.30619 38.48477 51.71690