R线性回归分类变量“隐藏”值

机器算法验证 r 回归 分类数据 回归系数 分类编码
2022-03-09 12:18:04

这只是我遇到过几次的例子,所以我没有任何样本数据。在 R 中运行线性回归模型:

a.lm = lm(Y ~ x1 + x2)

x1是一个连续变量。x2是分类的,具有三个值,例如“低”、“中”和“高”。然而,R 给出的输出类似于:

summary(a.lm)
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.521     0.20       1.446   0.19        
x1            -0.61     0.11       1.451   0.17
x2Low         -0.78     0.22       -2.34   0.005
x2Medium      -0.56     0.45       -2.34   0.005

我知道 R 对这些因素(x2作为一个因素)引入了某种虚拟编码。我只是想知道,我如何解释x2值“高”?例如,“High”x2对此处给出的示例中的响应变量有什么影响?

我在其他地方(例如这里)看到过这样的例子,但没有找到我能理解的解释。

1个回答

问:“...我如何解释 x2 值“High”?例如,“High”x2s 对此处给出的示例中的响应变量有什么影响??

A:你肯定注意到输出中没有提到 x2="High"。目前 x2High 被选为“基本情况”。这是因为您提供了一个因子变量,其中包含级别的默认编码,尽管对于人类思维来说,L/M/H 的排序更自然。但是在字母表中,“H”在词汇上位于“L”和“M”之前,因此被 R 选择为基本情况。

由于没有对“x2”进行排序,因此每个报告的对比度都是相对于 x2="High" 的,因此相对于 x2="High",x2=="Low" 估计为 -0.78。目前,当 x2="High" 和 x1= 0 时,Intercept 是“Y”的估计值。您可能希望在更改级别排序后重新运行回归(但不使因子排序)。

x2a = factor(x2, levels=c("Low", "Medium", "High"))

那么您的“中”和“高”估计将更符合您的预期。

编辑:有替代编码安排(或更准确的模型矩阵安排。)R中对比的默认选择是“治疗对比”,它指定一个因子水平(或因子水平的一种特定组合)作为参考水平并报告其他水平或组合的估计平均差。但是,您可以通过强制 Intercept 为 0(不推荐)或使用其他对比度选项之一来使参考水平成为整体平均值:

?contrasts
?C   # which also means you should _not_ use either "c" or "C" as variable names.

您可以为不同的因素选择不同的对比,尽管这样做似乎会带来额外的解释负担。S-Plus 默认使用 Helmert 对比,SAS 使用治疗对比但选择最后一个因子水平而不是第一个作为参考水平。