R: применение регрессии к набору данных с факторами

#r #regression #linear-regression

#r #регрессия #линейная регрессия

Вопрос:

У меня есть следующий набор данных: введите описание изображения здесь

И я пытаюсь соответственно применить многолинейную регрессию к наборам данных для обучения и тестирования, как показано ниже:

 library(caTools)

set.seed(123)
split = sample.split(data$G3, SplitRatio = 0.8)
train_set = subset(data, split == TRUE)
test_set = subset(data, split == FALSE)

write.csv(train_set, "student_train.csv", row.names = FALSE)
write.csv(test_set, "student_test.csv", row.names = FALSE)

#Multilinear regression
multi = lm(formula = G3 ~ ., data = train_set)

#Predicting the test values
y_pred_m = predict(multi, newdata = test_set)

library(Metrics)

mae_m = mae(test_set[[10]], y_pred_m)
rmse_m = rmse(test_set[[10]], y_pred_m)
  

Однако оба моих значения mae и rmse возвращаются как NA в консоли и как NA_real_ на вкладке Environment . Мое data$G3 значение не является фактором, поэтому я не уверен, почему я получаю следующее сообщение об ошибке: In Ops.factor(actual, predicted) : ‘-’ not meaningful for factors. я новичок в использовании R для регрессии, поэтому, пожалуйста, помогите.

Комментарии:

1. Вместо того, чтобы включать скриншот данных, было бы полезно, если бы вы вставили выходные dput(data) данные в текст вашего вопроса. Это позволило бы другим пользователям воспроизводить набор данных локально.

Ответ №1:

Десятый столбец — это фактор, internet . Так и должно быть

 mae_m = mae(test_set$G3, y_pred_m)
rmse_m = rmse(test_set$G3, y_pred_m)