Различное поведение при использовании poly () внутри и снаружи lm () в R - PullRequest
1 голос
/ 13 апреля 2020

Вот некоторый код, который подгоняет полином к данным и строит его:

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)

enter image description here

Когда я пытаюсь сделать то же самое , но используя промежуточную переменную для хранения результатов 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

Почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...