Jak naprawić: błąd w eval(predvars, data, env): nie znaleziono obiektu „x”.


Błąd, który możesz napotkać w R to:

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

Ten błąd występuje, gdy próbujesz użyć modelu regresji w R do przewidzenia wartości odpowiedzi nowej ramki danych, ale nazwy kolumn w nowej ramce danych nie odpowiadają nazwom kolumn w ramce danych, których użyłeś pasuje do modelu. .

W tym samouczku dokładnie wyjaśniono, jak naprawić ten błąd.

Jak odtworzyć błąd

Załóżmy, że dopasowujemy prosty model regresji liniowej w R:

 #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

Załóżmy teraz, że próbujemy użyć funkcji przewidywania() do przewidzenia wartości odpowiedzi dla nowej ramki danych:

 #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

Otrzymujemy błąd, ponieważ ramka danych, której użyliśmy podczas dopasowywania modelu, zawierała zmienną predykcyjną o nazwie x , ale w nowej ramce danych nazwaliśmy zmienną predykcyjną x1 .

Ponieważ te nazwy nie są zgodne, pojawia się błąd.

Jak naprawić błąd

Sposobem naprawienia tego błędu jest po prostu upewnienie się, że zmienna predykcyjna w nowej ramce danych ma tę samą nazwę.

Dlatego w nowym bloku danych nazwiemy zmienną predykcyjną x :

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

Możemy teraz użyć funkcji przewidywania() do przewidzenia wartości odpowiedzi dla nowej ramki danych:

 #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

Jesteśmy w stanie skutecznie przewidzieć wartości y dla nowej ramki danych bez żadnych błędów, ponieważ nazwy kolumn są zgodne.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak rozwiązać inne typowe błędy w języku R:

Jak naprawić w R: Nazwy nie pasują do poprzednich nazw
Jak naprawić w R: długość dłuższego obiektu nie jest wielokrotnością długości krótszego obiektu
Jak naprawić w R: kontrasty można zastosować tylko do czynników o 2 lub więcej poziomach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *