【问题标题】:statsmodels -- weights in robust linear regressionstatsmodels——稳健线性回归中的权重
【发布时间】:2018-01-13 22:29:00
【问题描述】:

我正在查看 statsmodels 中的稳健线性回归,但找不到指定此回归“权重”的方法。例如,在最小二乘回归中为每个观察分配权重。类似于 WLS 在 statsmodels 中所做的。

或者有没有办法绕过它?

http://www.statsmodels.org/dev/rlm.html

【问题讨论】:

标签: python regression linear-regression statsmodels


【解决方案1】:

RLM 目前不允许用户指定权重。权重在内部用于实现重新加权的最小二乘拟合方法。

如果权重具有方差权重的解释以解释不同观察值的差异,则类似于 WLS 对数据(endog y 和 exog x)进行重新缩放将产生加权参数估计值。

WLS 在 whiten 方法中使用它来重新调整 y 和 x

X = np.asarray(X)
if X.ndim == 1:
    return X * np.sqrt(self.weights)
elif X.ndim == 2:
    return np.sqrt(self.weights)[:, None]*X

我不确定是否所有可用的额外结果都适用于重新调整的模型。

编辑基于cmets的跟进

在 WLS 中,等式 W*( Y_est - Y )^2 = (sqrt(W)*Y_est - sqrt(W)*Y)^2 表示参数估计值相同,不受权重解释的影响。

在 RLM 中,我们有一个非线性目标函数 g((y - y_est) / sigma),但这种等价性通常不成立

fw * g((y - y_est) / sigma) != g((y - y_est) * sw / sigma )

其中 fw 是频率权重,sw 是尺度或方差权重,sigma 是残差的估计尺度或标准差。 (一般情况下,我们找不到与 fw 对应的 sw。)

这意味着在 RLM 中,我们不能使用重新缩放数据来考虑频率权重。

旁白: statsmodels 目前的发展是在 GLM 中加入不同的权重类别,以开发可以添加到其他模型中的模式。目标是至少将 freq_weights、var_weights 和 prob_weights 作为模型的选项与 Stata 相似。

【讨论】:

  • “重新调整数据”是什么意思?
  • 与 WLS 中的代码 sn-p 一样,将数据 x 和 y 乘以权重的平方根,或者等价地除以先验标准差。
  • 嗯.. 有趣的是,我没想到简单地乘以数据会起作用。但我猜是这样,因为我们有效地将 W*( Y_est - Y )^2 转换为 (sqrt(W)*Y_est - sqrt(W)*Y)^2 ...
  • 我在答案中添加了关于频率权重的评论,以指出 WLS 中的权重与 RLM 中可能的权重之间的差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 2015-12-12
  • 2015-10-17
  • 1970-01-01
  • 2012-11-28
  • 2015-01-31
  • 2018-04-02
相关资源
最近更新 更多