Como corrigir: erro em eval(predvars, data, env): objeto ‘x’ não encontrado
Um erro que você pode encontrar no R é:
Error in eval(predvars, data, env): object 'x' not found
Este erro ocorre quando você tenta usar um modelo de regressão em R para prever os valores de resposta de um novo quadro de dados, mas os nomes das colunas no novo quadro de dados não correspondem aos nomes das colunas no quadro de dados que você usou para ajuste o modelo. .
Este tutorial explica exatamente como corrigir esse erro.
Como reproduzir o erro
Suponha que ajustamos um modelo de regressão linear simples em 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
Agora suponha que estamos tentando usar a função predizer() para prever valores de resposta para um novo quadro de dados:
#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
Recebemos um erro porque o quadro de dados que usamos ao ajustar o modelo tinha uma variável preditora chamada x , mas no novo quadro de dados nomeamos a variável preditora x1 .
Como esses nomes não correspondem, recebemos um erro.
Como corrigir o erro
A maneira de corrigir esse erro é simplesmente garantir que a variável preditora no novo quadro de dados tenha o mesmo nome.
Portanto, nos certificaremos de nomear a variável preditiva x no novo bloco de dados:
#define new data frame
new_data <- data. frame (x=c(4, 5, 7, 8, 9))
Agora podemos usar a função predizer() para prever os valores de resposta para o novo quadro de dados:
#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
Somos capazes de prever com êxito os valores de y para o novo quadro de dados sem erros, pois os nomes das colunas correspondem.
Recursos adicionais
Os tutoriais a seguir explicam como resolver outros erros comuns em R:
Como corrigir em R: os nomes não correspondem aos nomes anteriores
Como corrigir em R: o comprimento de um objeto mais longo não é múltiplo do comprimento de um objeto mais curto
Como corrigir em R: contrastes só podem ser aplicados a fatores com 2 ou mais níveis