解释线性回归中分类预测变量的估计

时间:2016-07-08 09:10:17

标签: r regression linear-regression lm

我是线性回归的新手,我试图弄清楚如何解释汇总结果。我难以解释分类预测因子的估计。请考虑以下示例。我添加了列的年龄和长度,以包括数字预测器和数字目标。

library(MASS)
data <- as.data.frame(HairEyeColor)

data$length <- c(155, 173, 172, 176, 186, 188, 160, 154, 192, 192, 185, 150, 181, 195, 161, 194,
173, 185, 185, 195, 168, 158, 151, 170, 163, 156, 186, 173, 167, 172, 164, 182)
data$age <- c(48, 44, 8, 23, 23, 63, 64, 26, 8, 56, 40, 11, 17, 12, 60, 10, 9, 21, 46, 7, 12, 9, 32, 37, 52, 64, 36, 31, 41, 24)

summary(lm(length ~ Hair + Eye + Sex + age, data))

输出:

         Estimate Std. Error t value Pr(>|t|)    
(Intercept) 182.72906    8.22026  22.229   <2e-16 ***
HairBrown     6.22998    7.45423   0.836    0.412    
HairRed      -0.38261    7.50570  -0.051    0.960    
HairBlond    -0.25860    7.36012  -0.035    0.972    
EyeBlue      -8.44369    7.36646  -1.146    0.263    
EyeHazel      0.06968    7.49589   0.009    0.993    
EyeGreen     -0.15554    7.27704  -0.021    0.983    
SexFemale    -4.92415    5.18308  -0.950    0.352    
age          -0.19084    0.15910  -1.200    0.243

其中大部分都不重要,但暂时不要理会。

  1. 有什么可说的(拦截)?直观地,我说当分类预测因子(Hair = Black,Eye = Brown,Sex = Male)的基线值适用时,以及当年龄= 0时,这是长度值。这是正确的吗?

  2. 数据集中长度的平均值为173.8125,但估计值为182.72906。这是否意味着对于基线情况,长度估计实际上高于平均长度?

  3. 与问题2类似的问题:让我们说Eye = Blue,所有其他值仍然作为基线。估计时间变为174.284(182.72906 - 8.44369)。我可以从中推断出预期的平均长度是174.284,因此仍高于整体平均值(173.8125)吗?

  4. 如何发现哪个预测变量/值对长度有正面或负面影响?简单地采用估算方向不会起作用:负估计仅表示与基线相比具有负面影响。这是否意味着我推断出例如Eye = Blue与 Eye = Brown相比具有负面影响,而不是推断它一般会产生负面影响

  5. 为什么(拦截)很重要,而所有其他行都没有?拦截的意义是什么?

  6. 当仅使用Hair作为预测器运行模型时,Hair = Blond的方向变为正(见下文),而在之前的模型中为负。为每个预测器单独运行模型是否更明智,以便我可以捕获单个预测变量的真实大小和方向?

        summary(lm(length ~ Hair, data))
    
    
        Estimate Std. Error t value Pr(>|t|)    
    
        (Intercept)  173.125      5.107  33.900   <2e-16 ***
        HairBrown      4.250      7.222   0.588    0.561    
        HairRed       -2.625      7.222  -0.363    0.719    
        HairBlond      1.125      7.222   0.156    0.877  
    
  7. 感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

  1. 是。虚拟变量是通过对比编码创建的,因此您的截距确实是对基值的预测。

  2. 再次如第1点所述,是。

  3. 是的,你可以得出结论,但差别很小。您应该检查平均值是否在置信区间内下降。如果确实如此,那么平均值和蓝色值之间的差异对于实际目的来说并不重要。

  4. 由于这些都是虚拟变量,您可以推断出正面估计表明是正面影响,反之亦然。但是,更准确地看一下置信区间。只有当上下两个区间都是正数时,您才能充满信心地说该变量具有正面影响。否则它是不可预测的。

  5. 由于您的数据并未向模型提供有关所有变量为零时发生的情况的任何信息,因此模型将具有较少的观测值来对截距进行任何有意义的预测。你的虚拟变量在任何时候都不会全为零。

  6. 是的,你可以这样做,但它主要只给你方向,只要置信区间不包括零。

  7. 如果我是你,我会选择一个不同的模型,比如回归树,这些模型已知可以与分类变量一起使用。

答案 1 :(得分:0)

明确指出:

1)是的,你的解释是正确的。 HairBrown = 6表示棕发型个体的长度比基线类别长6个单位。在这种黑头发的情况下,但值得注意的是,对于分类变量,基线的选择是任意的。

2)我不会以这种方式单独解释截距值,因为:A)记住你还有一个连续的预测器(年龄),你没有将这个预测器纳入这个概念;没有人在年龄= 0,因此您正在估算一个没有(或不能,而不是)在您的数据集中出现的个人的值。 B)你有几个解释变量,因此“基线情况”是将不需要集中的东西混为一谈。您拥有关于每个变量正在做什么的信息,并且可以将它们组合起来预测年龄,眼睛颜色,性别和头发颜色的任何特定组合的值。

3)在某些情况下,你可能会在你的例子中谈论年龄= 0的人。即便如此,我也不明白你为什么要与平均情况进行比较(原因在前一个案例中有所解释)。此外,忽略当前的连续预测因子,组间样本量的差异可能会严重影响整体平均值。将组相互比较比将各组与总体平均值进行比较几乎总是更有意义。另请注意,这忽略了参数估计的不确定性。

4)'总体上有负面影响'并不是很有意义。这必然是一种比较,即相对于某事物是负面的。您可以做的是在其他类别(不仅仅是基线)与估计系数之间进行成对比较,因为关系是可传递的。例如。 EyeBlue和EyeGreen都是相对于基线的阴性,但EyeGreen更负面。因此,绿眼睛的个体长度较短(忽略变量不显着的事实)

5)拦截是重要的只是意味着你的基线长度不等于0.在大多数情况下,这不是很有用,特别是因为(再次!)这假设年龄为0.这是一个问题外推。

6)不,但这不是一个非常简单的话题(如果你有兴趣了解更多,请查看模型选择)。在这种情况下,你的变量都不重要,(松散地说)意味着你无法确定任何变量是否具有正面或负面影响。因此,模型结构的变化会使标志翻转,这并不奇怪。查看置信区间以查看参数估计的范围有多宽;它们的范围从负面到正面。基本上,假设你有一个不错的样本量,你的变量可能没有多大解释。

这里的所有比较都更容易用图形来思考(使用上面的参数值制作,并用头发颜色着色):

Plot by group