线性回归未返回Team列全部类别系数的技术求助
问题:线性回归中无法查看全部20个团队的系数估计值
我的数据中Team列包含20个团队,每个团队约24条观测值,但运行线性回归后,模型摘要仅显示15个团队的系数,希望获取全部团队的系数估计值,求解决思路。
运行代码
(log_teams <- lm(Worked ~ Team+Activity+Presented+Confirmed+Jobs_Filled+Converted, data = df)) %>% summary
模型输出
Call: lm(formula = Worked ~ Team + Activity + Presented + Confirmed + Jobs_Filled + Converted, data = WBY) Residuals: Min 1Q Median 3Q Max -4.4035 -1.0048 0.0000 0.8774 5.1677 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 2.609486 1.869903 1.396 0.1699 TeamCRW 0.110828 1.908735 0.058 0.9540 TeamEMW -1.068797 2.767863 -0.386 0.7013 TeamGSW -0.424508 2.795353 -0.152 0.8800 TeamNS2 -1.234508 2.388392 -0.517 0.6078 TeamNUW -1.458735 2.083549 -0.700 0.4875 TeamOBW 3.224057 2.103054 1.533 0.1324 TeamORT -0.432185 1.884824 -0.229 0.8197 TeamPC1 4.338479 2.115219 2.051 0.0462 * TeamPC2 -1.002268 2.227166 -0.450 0.6549 TeamPDW 2.560784 2.791501 0.917 0.3640 TeamPLW 1.381216 2.151150 0.642 0.5242 TeamPYW -1.074374 2.799772 -0.384 0.7030 TeamSB2 -0.646769 2.288132 -0.283 0.7788 TeamSYW 2.252061 1.833820 1.228 0.2259 TeamWMO 0.857452 2.302522 0.372 0.7114 Activity -0.000627 0.002906 -0.216 0.8302 Presented 0.162181 0.331876 0.489 0.6275 Confirmed -0.242462 0.317139 -0.765 0.4486 Jobs_Filled -0.025657 0.016099 -1.594 0.1182 Converted 0.006213 0.002610 2.381 0.0217 * --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 2.247 on 44 degrees of freedom (427 observations deleted due to missingness) Multiple R-squared: 0.5217, Adjusted R-squared: 0.3043 F-statistic: 2.4 on 20 and 44 DF, p-value: 0.007786*
解决思路
- 明确参考组机制:R的
lm()处理分类变量时,会自动选一个类别作为参考组,该组的系数不会单独显示在摘要中——你看到的15个团队系数,是其余团队相对于这个隐藏参考组的差值。 - 确认参考组:执行以下代码查看哪个团队是默认参考组:
输出的第一个类别即为参考组,它的系数等价于模型中的截距项levels(df$Team)(Intercept)。 - 提取全部团队系数:
- 用
dummy.coef()函数直接输出每个团队的完整估计值(包括参考组):
该函数会把分类变量的每个水平系数单独列出,无需手动计算。dummy.coef(log_teams) - 若要获取结构化的系数表,可使用
broom包的tidy()函数:
虽然参考组不会单独出现,但结合library(broom) tidy(log_teams, conf.int = TRUE)levels(df$Team)和截距项,可补全参考组的系数信息。
- 用
- 排查数据缺失影响:输出显示有427条观测因缺失被删除,执行以下代码检查每个团队的有效观测数:
如果某个团队的所有观测都被删除,模型会自动排除该类别,这也会导致显示的团队数量不足20个。table(df$Team, useNA = "ifany")
内容的提问来源于stack exchange,提问作者ngarn
相关产品推荐
相关产品推荐

