Come risolvere: errore in eval(predvars, data, env): oggetto 'x' non trovato


Un errore che potresti riscontrare in R è:

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

Questo errore si verifica quando si tenta di utilizzare un modello di regressione in R per prevedere i valori di risposta di un nuovo frame di dati, ma i nomi delle colonne nel nuovo frame di dati non corrispondono ai nomi delle colonne nel frame di dati utilizzato in precedenza adatta al modello. .

Questo tutorial spiega esattamente come correggere questo errore.

Come riprodurre l’errore

Supponiamo di adattare un semplice modello di regressione lineare in 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

Supponiamo ora di provare a utilizzare la funzione predit() per prevedere i valori di risposta per un nuovo frame di dati:

 #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

Riceviamo un errore perché il frame di dati utilizzato durante l’adattamento del modello aveva una variabile predittrice denominata x , ma nel nuovo frame di dati abbiamo denominato la variabile predittrice x1 .

Poiché questi nomi non corrispondono, riceviamo un errore.

Come correggere l’errore

Il modo per correggere questo errore è semplicemente garantire che la variabile predittore nel nuovo frame di dati abbia lo stesso nome.

Faremo quindi attenzione a denominare la variabile predittiva x nel nuovo blocco dati:

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

Ora possiamo utilizzare la funzione predit() per prevedere i valori di risposta per il nuovo frame di dati:

 #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

Siamo in grado di prevedere con successo i valori y per il nuovo frame di dati senza errori poiché i nomi delle colonne corrispondono.

Risorse addizionali

I seguenti tutorial spiegano come risolvere altri errori comuni in R:

Come risolvere il problema in R: i nomi non corrispondono ai nomi precedenti
Come risolvere in R: la lunghezza di un oggetto più lungo non è un multiplo della lunghezza di un oggetto più corto
Come risolvere in R: i contrasti possono essere applicati solo a fattori con 2 o più livelli

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *