Как исправить: ошибка в eval(predvars, data, env): объект «x» не найден


Ошибка, с которой вы можете столкнуться в R:

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

Эта ошибка возникает, когда вы пытаетесь использовать модель регрессии в R для прогнозирования значений ответа нового фрейма данных, но имена столбцов в новом фрейме данных не соответствуют именам столбцов в фрейме данных, который вы использовали для подойдет модель. .

В этом руководстве объясняется, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, мы подгоняем простую модель линейной регрессии в 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

Теперь предположим, что мы пытаемся использовать функцию Predict() для прогнозирования значений ответа для нового кадра данных:

 #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

Мы получаем ошибку, потому что фрейм данных, который мы использовали при подборе модели, имел переменную-предиктор с именем x , но в новом фрейме данных мы назвали переменную-предиктор x1 .

Поскольку эти имена не совпадают, мы получаем сообщение об ошибке.

Как исправить ошибку

Чтобы исправить эту ошибку, нужно просто убедиться, что переменная-предиктор в новом фрейме данных имеет то же имя.

Поэтому мы обязательно назовем прогнозируемую переменную x в новом блоке данных:

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

Теперь мы можем использовать функцию Predict() для прогнозирования значений ответа для нового кадра данных:

 #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

Мы можем успешно предсказать значения y для нового фрейма данных без каких-либо ошибок, поскольку имена столбцов совпадают.

Дополнительные ресурсы

В следующих руководствах объясняется, как устранить другие распространенные ошибки в R:

Как исправить в R: Имена не совпадают с предыдущими именами
Как исправить в R: длина более длинного объекта не кратна длине более короткого объекта
Как исправить в R: контрасты можно применять только к факторам с 2 и более уровнями

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *