Predict.lm в R не может распознать новые данные
Я выполняю линейную регрессию, где предиктор классифицируется по другому значению, и у меня возникают проблемы при создании смоделированных ответов для новых данных.
Сначала я генерирую некоторые случайные значения для предиктора и условия ошибки. Затем я строю ответ. Обратите внимание, что предикторКоэффициент s зависит от значения категориальной переменной. Я составляю матрицу дизайна на основе предиктора и его категории.
set.seed(1)
category = c(rep("red", 5), rep("blue",5))
x1 = rnorm(10, mean = 1, sd = 1)
err = rnorm(10, mean = 0, sd = 1)
y = ifelse(category == "red", x1 * 2, x1 * 3)
y = y + err
df = data.frame(x1 = x1, category = category)
dm = as.data.frame(model.matrix(~ category + 0, data = df))
dm = dm * df$x1
fit = lm(y ~ as.matrix(dm) + 0, data = df)
# This line will not produce a warning
predictOne = predict.lm(fit, newdata = dm)
# This line WILL produce a warning
predictTwo = predict.lm(fit, newdata = dm[1:5,])
Предупреждение:
NewData» было 5 строк, но найденные переменные имеют 10 строк
Если только яЯ очень сильно ошибаюсь, я не долженне должно быть никаких проблем с именами переменных. (Есть одно или два обсуждения на этой доске, которые предлагают эту проблему.) Обратите внимание, что первое предсказание работает хорошо, а второе - нет. Единственное изменение заключается в том, что во втором прогнозе используются только первые пять строк матрицы проекта.
Мысли?