使用 poly() 函数在 R 中进行回归
Regression in R using poly() function
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)
但事实并非如此。为什么?
因为不是同一个型号。你的第二个有一个独特的协变量,而第一个有两个。
> 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
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)
但事实并非如此。为什么?
因为不是同一个型号。你的第二个有一个独特的协变量,而第一个有两个。
> 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