在R中使用poly()函数进行回归

5

R中的函数poly()用于生成正交向量,可以帮助解释系数的显著性。然而,我认为在预测方面使用它没有意义。在我看来,下面两个模型(model_1和model_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个回答

3
因为它们不是同一个模型。您的第二个模型有一个独特的协变量,而第一个模型有两个。
> 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接