首页 > 解决方案 > 为什么 poly(x,2) 中的一阶自变量不会在多元回归中生成其估计值?

问题描述

我的回归模型有两种多项式项,但其中一个一阶变量(此处age)未能生成其估计值,experexper^2项没有失败。我想明白为什么。

我的代码是:

library(wooldridge)
data('card')

fit1_ols <- lm(lwage~educ + poly(exper, 2) + black + smsa + south + poly(age, 2),  data = card)
fit2_ols <- lm(lwage~educ + poly(exper, 2) + black + smsa + south + poly(age, 2) + motheduc + fatheduc, data = card)

summ(fit1_ols)
summ(fit2_ols)

结果分别是:

----------------------------------------------------
                         Est.   S.E.   t val.      p
--------------------- ------- ------ -------- ------
(Intercept)              5.26   0.05   107.40   0.00
educ                     0.07   0.00    21.10   0.00
poly(exper, 2)1          8.93   0.49    18.05   0.00
poly(exper, 2)2         -2.71   0.41    -6.66   0.00
black                   -0.19   0.02   -10.75   0.00
smsa                     0.16   0.02    10.36   0.00
south                   -0.12   0.02    -8.23   0.00
poly(age, 2)1            ???                           
poly(age, 2)2            0.17   0.41     0.41   0.68
----------------------------------------------------

----------------------------------------------------
                         Est.   S.E.   t val.      p
--------------------- ------- ------ -------- ------
(Intercept)              5.18   0.06    87.10   0.00
educ                     0.07   0.00    16.99   0.00
poly(exper, 2)1          9.45   0.60    15.65   0.00
poly(exper, 2)2         -2.89   0.51    -5.67   0.00
black                   -0.16   0.02    -6.69   0.00
smsa                     0.16   0.02     8.74   0.00
south                   -0.11   0.02    -6.22   0.00
poly(age, 2)1            ???                           
poly(age, 2)2            0.20   0.49     0.41   0.69
motheduc                 0.01   0.00     2.24   0.03
fatheduc                -0.00   0.00    -0.25   0.80
----------------------------------------------------

标签: rlinear-regression

解决方案


如果您使用普通summary而不是summ(为此您确实加载了相应的库),R 会告诉您问题:

library(wooldridge)
data('card')

fit1_ols <- lm(lwage~educ + poly(exper, 2) + black + smsa + south + poly(age, 2),  data = card)
fit2_ols <- lm(lwage~educ + poly(exper, 2) + black + smsa + south + poly(age, 2) + motheduc + fatheduc, data = card)

summary(fit1_ols)
summary(fit2_ols)

fit1_ols fit2_ols

如您所见,错误消息指示“由于奇异性而未定义”。这是有关如何处理此问题的有用帖子。基本上,缺失的变量可能与其他变量共线,这表明您需要更改模型的规格。


推荐阅读