至少有三种正则化策略可以解决这种多重共线性/分离问题。
1)建立一个贝叶斯回归模型,该模型在回归系数上建立一个先验分布,将估计值缩小到零,但如果后验分布足够强,则为后验分布提供足够的先验概率以向数据中的信号移动。有几种类型的先验,包括但不限于 Laplace、spike-and-slab 和 horseshoe priors。格尔曼等人。bayesglm
有一篇很好的论文描述了逻辑回归中系数的默认先验分布,它与他们在 R 包中开发的函数很好地配对arm
,这使您可以轻松地构建和总结逻辑和其他广义线性模型。你可以在这里阅读他们关于这个主题的论文。
2) 使用 L1 范数(LASSO 回归)、L2 范数(岭回归)或它们的某种组合(弹性网络模型)的惩罚回归。Tibshirani、Hastie 及其同事在 R 中开发了一个名为 的包glmnet
,它实现了弹性网络回归(因此 L1 和 L2 回归,因为它们是弹性网络的特例)。该软件包包括 logit 模型。该软件包有一个很好的小插图,在其末尾您可以找到有关一般正则化以及 ridge/LASSO/elastic-net 框架的有用参考资料。如果您想观看该小插曲的视频版本,并了解很多其他内容,我建议您也参加他们的斯坦福在线课程。
3)在逻辑和其他广义线性模型中处理多重共线性问题的另一种方法是通过增强回归。在增强回归模型中,您迭代地聚合来自许多称为“基础学习器”的简单模型的推论。通过聚合许多简单模型的估计,您可以避免维度灾难,还可以计算变量重要性度量。如果您正确设置基础学习器,多重共线性不再是问题。R 中有一个很棒的包叫做mboost
,它实现了增强的广义线性模型和多级广义线性模型。另一个mboost
重要的原因是可用的基础学习器的多样性,包括非参数平滑样条和随机场。惊人的东西。更好的是一个相关的包叫做gamboostLSS
,它允许您在我们可能性的每个参数上构建增强回归模型,而不仅仅是平均值或其他一些位置参数。
在您的情况下,我想说这些方法中最好的是 Gelman 等人。配方或弹性网选项。其中,我更喜欢 Gelman 等人。配方,因为它不仅会产生点估计,还会产生系数的后验分布。
旁注:弹性网络和提升方法的美妙之处,以及对于某些先验完全贝叶斯推理方法,通过正则化模型,您还可以构建具有许多特征的模型——甚至模型比观察更多的特征。在某种意义上,正则化过程选择了那些最重要的特征,同时避免或至少减轻了维度灾难。