Comment réparer : erreur dans eval(predvars, data, env) : objet ‘x’ pas trouvé
Une erreur que vous pouvez rencontrer dans R est :
Error in eval(predvars, data, env) : object 'x' not found
Cette erreur se produit lorsque vous tentez d’utiliser un modèle de régression dans R pour prédire les valeurs de réponse d’un nouveau bloc de données, mais que les noms de colonnes du nouveau bloc de données ne correspondent pas aux noms de colonnes du bloc de données que vous avez utilisé pour ajuster le modèle. .
Ce didacticiel explique exactement comment corriger cette erreur.
Comment reproduire l’erreur
Supposons que nous ajustions un modèle de régression linéaire simple dans 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 **
---
Signif. 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
Supposons maintenant que nous essayions d’utiliser la fonction prédire() pour prédire les valeurs de réponse pour une nouvelle trame de données :
#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
Nous recevons une erreur car le bloc de données que nous avons utilisé lors de l’ajustement du modèle avait une variable prédictive nommée x , mais dans le nouveau bloc de données, nous avons nommé la variable prédictive x1 .
Puisque ces noms ne correspondent pas, nous recevons une erreur.
Comment réparer l’erreur
La façon de corriger cette erreur consiste simplement à s’assurer que la variable prédictive dans la nouvelle trame de données porte le même nom.
Nous veillerons donc à nommer la variable prédictive x dans le nouveau bloc de données :
#define new data frame
new_data <- data.frame(x=c(4, 5, 7, 8, 9))
Nous pouvons maintenant utiliser la fonction prédire() pour prédire les valeurs de réponse pour le nouveau bloc de données :
#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
Nous sommes en mesure de prédire avec succès les valeurs y pour le nouveau bloc de données sans aucune erreur puisque les noms de colonnes correspondent.
Ressources additionnelles
Les didacticiels suivants expliquent comment résoudre d’autres erreurs courantes dans R :
Comment réparer dans R : les noms ne correspondent pas aux noms précédents
Comment réparer dans R : la longueur d’un objet plus longue n’est pas un multiple de la longueur d’un objet plus courte
Comment réparer dans R : les contrastes ne peuvent être appliqués qu’à des facteurs avec 2 niveaux ou plus