Verwenden Sie die Vorhersagefunktion für ein lineares Regressionsmodell in R

Jesse John 21 Juni 2023
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.

  1. Ein Modellobjekt.
  2. Neue Daten.

In diesem Zusammenhang gibt es zwei wichtige Überlegungen, die wir berücksichtigen müssen.

  1. 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.

  2. 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.

  1. Wir müssen einen Datenrahmen an das Argument newdata der Funktion predict() übergeben. Dies wurde oben nach dem ersten Fehler durchgeführt.
  2. 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
Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

Verwandter Artikel - R Error