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