Вот некоторый код, который подгоняет полином к данным и строит его:
x <- c(30, 47.1, 69.6, 93.8, 117, 139.1, 170.9, 189.4, 197.5, 212.4)
y <- c(0, 1.734, 5.181, 9.026, 12.837, 16.197, 21.603, 25.306, 26.942, 29.384)
plot(y ~ x)
mod <- lm(y ~ poly(x, 2, raw = TRUE))
pred <- predict(mod, data.frame(x = 40:200))
lines(40:200, pred)
Когда я пытаюсь сделать то же самое , но используя промежуточную переменную для хранения результатов poly()
, я получаю сообщение об ошибке:
x <- c(30, 47.1, 69.6, 93.8, 117, 139.1, 170.9, 189.4, 197.5, 212.4)
y <- c(0, 1.734, 5.181, 9.026, 12.837, 16.197, 21.603, 25.306, 26.942, 29.384)
plot(y ~ x)
p <- poly(x, 2, raw = TRUE)
mod <- lm(y ~ p)
pred <- predict(mod, data.frame(x = 40:200))
lines(40:200, pred)
Сообщение об ошибке:
> pred <- predict(mod, data.frame(x = 40:200))
Warning message:
'newdata' had 161 rows but variables found have 10 rows
> lines(40:200, pred)
Error in xy.coords(x, y) : 'x' and 'y' lengths differ
Почему это происходит?