如何使用 R 处理 OLS 中的异方差性

Posted

技术标签:

【中文标题】如何使用 R 处理 OLS 中的异方差性【英文标题】:How to deal with heteroscedasticity in OLS with R 【发布时间】:2014-06-24 21:13:10 【问题描述】:

我正在使用 OLS 方法拟合标准多元回归。我有 5 个预测变量(2 个连续变量和 3 个分类变量)加上 2 个双向交互项。我使用残差与拟合图进行回归诊断。异方差性非常明显,bptest() 也证实了这一点。

我不知道下一步该做什么。首先,我的因变量是合理对称的(我认为我不需要尝试转换我的 DV)。我的连续预测器也没有高度偏斜。我想在 lm(); 中使用权重但是,我怎么知道要使用什么权重?

有没有一种方法可以自动生成权重以执行加权最小二乘法?或者你还有其他方法吗?

【问题讨论】:

我建议 gls() 指定 weights 参数,但这在很大程度上取决于异方差的模式,以及 为什么 你想要纠正它(做您想获得正确的标准误差吗?提高估算器的效率?)请考虑添加一个 small reproducible example,以便我们更好地理解并更轻松地回答您的问题。 我认为这可能最好在 Cross Validated 上提出,因为主要问题主要是实质性问题,其次才是关于编程的问题。 【参考方案1】:

处理异方差的一个明显方法是估计异方差一致的标准误。大多数情况下,它们被称为稳健或白色标准错误。

您可以通过多种方式在 R 中获得稳健的标准误差。以下页面描述了在 R 中获得稳健标准错误的一种可能且简单的方法:

https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r

但是,有时有更微妙且通常更精确的方法来处理异方差性。例如,您可能会遇到分组数据,并发现自己的数据集中标准错误是异构的,但在组(集群)内是同质的。在这种情况下,您可能希望应用聚类标准错误。请参阅以下链接以计算 R 中的聚类标准误差:

https://economictheoryblog.com/2016/12/13/clustered-standard-errors-in-r

【讨论】:

【参考方案2】:

您的样本量是多少?我建议您使您的标准误差对异方差具有鲁棒性,但否则您不必担心异方差。原因是无论有无异方差,您的参数估计都是无偏的(即它们本来就很好)。唯一受影响的(在线性模型中!)是方差 - 协方差矩阵,即参数估计的标准误差将受到影响。除非您只关心预测,否则将标准误调整为对异方差具有鲁棒性就足够了。

参见例如here 如何在 R 中执行此操作。

顺便说一句,对于您的权重解决方案(我不建议这样做),您可能需要查看 nlme 包中的 ?gls

【讨论】:

以上是关于如何使用 R 处理 OLS 中的异方差性的主要内容,如果未能解决你的问题,请参考以下文章

异方差的检验与修正

R语言如何和何时使用glmnet岭回归

R语言aov函数进行单因素方差分析(One-way ANOVA)使用Q-Q图来评估方差分析因变量的正态性Bartlett验证方差的相等性(齐次性)car包中的outlierTest函数异常检验

R语言White’s检验实战:检验回归模型中是否存在异方差性(heteroscedasticity)发生了异常差(heteroscedasticity)问题如何解决

R语言Goldfeld-Quandt检验实战:检验回归模型中是否存在异方差性(heteroscedasticity)发生了异常差(heteroscedasticity)问题如何解决

我们如何计算 statsmodels OLS 中的截距和斜率?