Я строю модель прогнозирования, используя тестовый сплит 60/40.
Я хотел бы построить модель полиномиальной регрессии с 10 объясняющими переменными.
Сначала я строю модель, основанную на тренировках, и регрессирую на training$y
.
model_poly = lm(training$y ~ poly(training$x1, degree=2, raw=TRUE) +
poly(training$x2, degree=2, raw=TRUE) +
poly(training$x3, degree=2, raw=TRUE) +
poly(training$x4, degree=2, raw=TRUE) +
poly(training$x5, degree=2, raw=TRUE) +
poly(training$x6, degree=2, raw=TRUE) +
poly(training$x7, degree=2, raw=TRUE) +
poly(training$x8, degree=2, raw=TRUE) +
poly(training$x9, degree=2, raw=TRUE) +
poly(training$x10, degree=2, raw=TRUE))
Впоследствии я хотел бы предсказать новые данные (test
), используя эту модель.
poly_predictions = predict(model_poly, poly(test$x1, degree=2, raw=TRUE)+
poly(test$x2, degree=2, raw=TRUE) +
poly(test$x3, degree=2, raw=TRUE) +
poly(test$x4, degree=2, raw=TRUE) +
poly(test$x5, degree=2, raw=TRUE) +
poly(test$x6, degree=2, raw=TRUE) +
poly(test$x7, degree=2, raw=TRUE) +
poly(test$x8, degree=2, raw=TRUE) +
poly(test$x9, degree=2, raw=TRUE) +
poly(test$x10, degree=2, raw=TRUE))
Тестовые данные имеют около 200 тыс. Строк, а тренировочные данные - около 300 тыс. Строк.
Проблема в том, что poly_predictions
имеет размерность данных обучения, а не данных испытаний. Поэтому что-то не так.
Что мне здесь не хватает? При прогнозировании с помощью простой линейной модели, такой как
model_lm = lm(training$y ~ ., training)
lm_predictions = predict(model_lm, test)
У меня не было проблем.