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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *