Hoe op te lossen: fout in eval(predvars, data, env): object 'x' niet gevonden


Een fout die je tegen kunt komen in R is:

 Error in eval(predvars, data, env): object 'x' not found 

Deze fout treedt op wanneer u probeert een regressiemodel in R te gebruiken om de responswaarden van een nieuw dataframe te voorspellen, maar de kolomnamen in het nieuwe dataframe komen niet overeen met de kolomnamen in het gegevensframe dat u gebruikte passen bij het model. .

In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.

Hoe de fout te reproduceren

Stel dat we een eenvoudig lineair regressiemodel in R passen:

 #create data frame
data <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 9),
                   y=c(7, 8, 8, 6, 9, 8, 12, 14))

#fit linear regression model to data
model <- lm(y ~ x, data=data)

#view summary of model
summary(model)

Call:
lm(formula = y ~ x, data = data)

Residuals:
    Min 1Q Median 3Q Max 
-2.1613 -0.7500 0.5000 0.9355 1.5161 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 5.5161 0.9830 5.611 0.00137 **
x 0.7742 0.1858 4.167 0.00590 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.463 on 6 degrees of freedom
Multiple R-squared: 0.7432, Adjusted R-squared: 0.7004 
F-statistic: 17.37 on 1 and 6 DF, p-value: 0.005896

Stel nu dat we de functie voorspellen() proberen te gebruiken om responswaarden voor een nieuw dataframe te voorspellen:

 #define new data frame
new_data <- data. frame (x1=c(4, 5, 7, 8, 9))

#attempt to predict y values for new data frame
predict(model, newdata=new_data)

Error in eval(predvars, data, env): object 'x' not found

We ontvangen een foutmelding omdat het dataframe dat we gebruikten bij het aanpassen van het model een voorspellende variabele had met de naam x , maar in het nieuwe dataframe noemden we de voorspellende variabele x1 .

Omdat deze namen niet overeenkomen, ontvangen we een foutmelding.

Hoe u de fout kunt oplossen

De manier om deze fout op te lossen is door er simpelweg voor te zorgen dat de voorspellende variabele in het nieuwe dataframe dezelfde naam heeft.

We zullen er daarom voor zorgen dat we de voorspellende variabele x een naam geven in het nieuwe datablok:

 #define new data frame
new_data <- data. frame (x=c(4, 5, 7, 8, 9)) 

We kunnen nu de functie voorspellen() gebruiken om de responswaarden voor het nieuwe dataframe te voorspellen:

 #predict y values for new data frame
predict(model, newdata=new_data)

        1 2 3 4 5 
 8.612903 9.387097 10.935484 11.709677 12.483871

We kunnen de y-waarden voor het nieuwe dataframe met succes voorspellen zonder fouten, omdat de kolomnamen overeenkomen.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:

Oplossing in R: namen komen niet overeen met eerdere namen
Hoe op te lossen in R: de lengte van een langer object is geen veelvoud van de lengte van een korter object
Hoe op te lossen in R: contrasten kunnen alleen worden toegepast op factoren met 2 of meer niveaus

Einen Kommentar hinzufügen

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