Новые прогнозы, когда модель содержит многочлен - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь предсказать y для нового вектора данных x_new вручную.Под «рукой» я подразумеваю не использовать функцию predict (моя фактическая модель - это объект mcmc, который predict не принимает).Это нормально для простой модели, подобной этой:

lm1 <- lm(Petal.Width ~ Petal.Length + Sepal.Width + Sepal.Length, data=iris)
x_new <- c(1, 1.4, 3.2, 5.2)
y <- x_new %*% lm1$coef

Но я не уверен, как действовать, когда моя модель выглядит так:

lm2 <- lm(Petal.Width ~ Petal.Length + Sepal.Width + poly(Sepal.Length,3), data=iris)

Как именно я использую параметрыиз переменной poly()?

1 Ответ

0 голосов
/ 25 ноября 2018

Вам нужно установить poly(., raw=TRUE), чтобы он использовал необработанные, а не ортогональные полиномы.Сравните, теперь они дают одинаковые коэффициенты:

lm2 <- lm(Petal.Width ~ Petal.Length + Sepal.Width + Sepal.Length +
            I(Sepal.Length^2) + I(Sepal.Length^3), data=iris)
lm3 <- lm(Petal.Width ~ Petal.Length +  poly(Sepal.Length, 3, raw=TRUE), 
          data=iris)

> coef(lm2)
      (Intercept)      Petal.Length       Sepal.Width      Sepal.Length I(Sepal.Length^2) I(Sepal.Length^3) 
      10.22126962        0.50889848        0.22999328       -5.81536464        0.98349473       -0.05626378 
> coef(lm3)
                       (Intercept)                       Petal.Length                        Sepal.Width poly(Sepal.Length, 3, raw = TRUE)1 
                       10.22126962                         0.50889848                         0.22999328                        -5.81536464 
poly(Sepal.Length, 3, raw = TRUE)2 poly(Sepal.Length, 3, raw = TRUE)3 
                        0.98349473                        -0.05626378 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...