偏分或回归分类变量?

机器算法验证 回归
2022-03-15 18:30:35

有时我在文献中看到,诸如性别之类的分类变量在(固定效应或混合效应)回归分析中被“部分”或“回归”了。我对这样的声明涉及的以下实际问题感到困扰:

(1) 通常论文中没有提到编码方法。这样的变量必须用定量值进行编码,我觉得明智的方法应该是效果编码(例如,男性 = 1,女性 = -1),这样就可以通过以两性的总平​​均值解释的其他效果来实现偏分团体。不同的编码可能会呈现不同的(和不需要的)解释。例如,虚拟编码(例如,男性 = 0,女性 = 1)会留下与男性相关的其他影响,而不是总平均值。如果两组中的受试者数量不相等,即使将这个虚拟编码变量居中也可能无法很好地达到偏心目的。我对么?

(2) 如果模型中包含此类分类变量的影响,首先检查其影响似乎是必要的,并且应该在上下文中讨论,因为它会影响对其他影响的解释。令我困扰的是,有时作者甚至没有提到性效应的重要性,更不用说任何模型构建过程了。如果存在性别效应,一个自然的后续问题是性别与模型中的其他变量之间是否存在交互作用?如果不存在性别效应且不存在相互作用,则应从模型中删除性别。

(3) 如果认为这些作者对性不感兴趣,那么首先将其包含在模型中而不检查其影响有什么意义?当存在性效应时(我有限的经验基本上没有),包含这样一个分类变量(并且在性的固定效应上花费一个自由度)是否会为他们的偏心目的带来任何好处?

4个回答

我认为(1)没有任何区别。这个想法是从反应其他预测因素中部分排除性的影响。编码 0、1(治疗对比)或 1、-1(总和为零对比)并不重要,因为模型代表相同的“数量”信息,然后将其删除。这是R中的一个例子:

set.seed(1)
dat <- data.frame(Size = c(rnorm(20, 180, sd = 5), 
                           rnorm(20, 170, sd = 5)),
                  Sex = gl(2,20,labels = c("Male","Female")))

options(contrasts = c("contr.treatment", "contr.poly"))
r1 <- resid(m1 <- lm(Size ~ Sex, data = dat))
options(contrasts = c("contr.sum", "contr.poly"))
r2 <- resid(m2 <- lm(Size ~ Sex, data = dat))
options(contrasts = c("contr.treatment", "contr.poly"))

从这两个模型中,残差是相同的,然后将这些信息带入后续模型(加上从其他协变量中删除性别效应的相同内容):

> all.equal(r1, r2)
[1] TRUE

我碰巧同意(2),但在(3)上,如果研究人员对性不感兴趣,他们可能仍想控制性效应,所以我的空模型将是一个包含性的模型,我用额外的协变量测试替代方案加上性。您关于交互和测试非有趣变量的影响的观点是重要且有效的观察。

确实,编码方法的选择会影响您解释模型系数的方式。不过,根据我的经验(我意识到这可能取决于您的领域),虚拟编码非常普遍,以至于人们处理它并没有很大的问题。

在这个例子中,如果男性 = 0 和女性 = 1,那么截距基本上是男性的平均反应,而性别系数是由于是女性而对反应的影响(“女性效应”)。一旦您处理具有两个以上级别的分类变量,事情就会变得更加复杂,但解释方案以一种自然的方式扩展。

这最终意味着您应该小心,您从分析中得出的任何实质性结论都不取决于所使用的编码方法。

请记住,尽管添加任何其他因素都会减少该错误。即使性别在您的模型中无关紧要,它在研究中可能仍然有用。如果样本量足够大,任何因素都可以发现显着性。相反,如果样本量不够大,则可能无法测试显着效果。因此,良好的模型构建和功率分析。

看起来我无法直接对辛普森博士的回答添加长评论。对不起,我必须把我的回应放在这里。

非常感谢您的回复,辛普森博士!我应该稍微澄清一下我的论点。我在部分业务上遇到的问题不是理论问题,而是实际问题。假设线性回归模型具有以下形式

y = a + b * 性别 + 其他固定效应 + 残差

我完全同意,从理论的角度来看,无论我们如何量化 Sex 变量,我们都会有相同的残差。即使我用一些疯狂的数字对主题进行编码,例如男性 = 10.7 和女性 = 53.65,我仍然会得到与r1r2的示例相同的残差。然而,这些论文中重要的不是残差。相反,重点是解释a上述模型中的截距和其他固定效应,这可能会在偏分时引起问题。考虑到这样的重点,性的编码方式似乎确实对上述模型中所有其他效应的解释产生了重大影响。使用虚拟编码(options(contrasts = c("contr.treatment", "contr.poly"))在 R) 中,除“b”外的所有其他效果都应解释为与代码“0”(男性)的性别组相关联。使用效果编码(options(contrasts = c("contr.sum", "contr.poly"))在 R 中),除b性别之外的所有其他效果都是整个人群的平均效果。

使用您的示例,模型简化为

y = a + b * 性别 + 残差。

关于截距的估计,以下问题可以清楚地看到a

> summary(m1)

Call: lm(formula = Size ~ Sex, data = dat)

...

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 180.9526     0.9979 181.332  < 2e-16 ***

> summary(m2)

Call: lm(formula = Size ~ Sex, data = dat)

...

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 175.4601     0.7056 248.659  < 2e-16 ***

最后,看来我必须同意我原来的论点(3)可能无效。继续你的例子,

> options(contrasts = c("contr.sum", "contr.poly"))
> m0 <- lm(Size ~ 1, data = dat)
> summary(m0)

Call: lm(formula = Size ~ 1, data = dat)

...

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  175.460      1.122   156.4   <2e-16 ***

似乎在模型中包含性别不会改变效果估计,但它确实增加了统计能力,因为数据中的更多可变性是通过性别效应来解释的。我之前在论点 (3) 中的错觉可能来自一个具有巨大样本量的数据集,其中在模型中添加 Sex 并没有真正改变其他影响的重要性。

然而,在传统的平衡方差分析类型分析中,由于方差的正交划分,诸如性别之类的主体间因素不会对与该因素无关的那些影响产生影响?