predict()
работает не очень хорошо, если данные не указаны в аргументе data
. Кажется, это работает:
polyModel <- lm(yData~poly(V1, V2, degree=2, raw=TRUE),
data=as.data.frame(xData))
length(fitted(polyModel)) ## 10
newData <- matrix(rnorm(100), 50, 2)
yPredicted <- predict(polyModel, newdata=as.data.frame(newData))
length(yPredicted) ## 50
V1
и V2
- имена столбцов по умолчанию, назначаемые при преобразовании матрицы во фрейм данных. - эта спецификация не будет Если вы располагаете неизвестным и / или большим количеством столбцов, которые нужно поместить в полином (например,
poly(V1, ..., V1000, degree=2, raw=TRUE)
)
, если вы заранее не знаете количество столбцов, 1015 * немного хакерское решение будет:
f <- as.formula(sprintf("yData~poly(%s, degree=2, raw=TRUE)",
paste("V", seq(ncol(xData)), sep="", collapse=", "))
polyModel <- lm(f, data=as.frame(xData))
(не проверено)