Регрессия в R с использованием функции poly () - PullRequest
0 голосов
/ 30 апреля 2018

Функция poly () в R используется для получения ортогональных векторов и может быть полезна для интерпретации значимости коэффициентов. Однако я не вижу смысла использовать его для прогнозирования. На мой взгляд, две следующие модели (модель_1 и модель_2) должны давать одинаковые прогнозы.

q=1:11
v=c(3,5,7,9.2,14,20,26,34,50,59,80)
model_1=lm(v~poly(q,2))
model_2=lm(v~1+q+q^2)
predict(model_1)
predict(model_2)

Но это не так. Почему?

1 Ответ

0 голосов
/ 30 апреля 2018

Потому что они не одна и та же модель. У вашего второго есть один уникальный ковариат, а у первого два.

> model_2

Call:
lm(formula = v ~ 1 + q + q^2)

Coefficients:
(Intercept)            q  
    -15.251        7.196  

Вы должны использовать функцию I(), чтобы изменить один параметр внутри формулы, чтобы регрессия считала его ковариатным:

model_2=lm(v~1+q+I(q^2))

> model_2

Call:
lm(formula = v ~ 1 + q + I(q^2))

Coefficients:
(Intercept)            q       I(q^2)  
     7.5612      -3.3323       0.8774  

даст такой же прогноз

> predict(model_1)
        1         2         3         4         5         6         7         8         9        10        11 
 5.106294  4.406154  5.460793  8.270210 12.834406 19.153380 27.227133 37.055664 48.638974 61.977063 77.069930 
> predict(model_2)
        1         2         3         4         5         6         7         8         9        10        11 
 5.106294  4.406154  5.460793  8.270210 12.834406 19.153380 27.227133 37.055664 48.638974 61.977063 77.069930
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...