【问题标题】:Using robust linear methods from python module "statsmodels" with weights?使用带有权重的python模块“statsmodels”中的稳健线性方法?
【发布时间】:2014-02-15 00:10:27
【问题描述】:

我有一些数据,y 有错误,y_err,在 x 处测量。我需要拟合一条直线来模仿matlab中的一些代码,特别是具有健壮“on”的拟合方法并将权重设为1/yerr。 matlab 文档说它使用 bisquare 方法(也称为 TukeyBiweight 方法)。到目前为止我的代码是..

    rlm_model = sm.RLM(y, x, M=sm.robust.norms.TukeyBiweight())
    rlm_results = rlm_model.fit()
    print rlm_results.params

但是我需要找到一种方法来包含从 yerr 派生的权重。 希望人们能提供帮助,这是我第一次尝试使用 statsmodel 模块。

针对第一个答案: 我试过了;

y=y*(yerr)
x=x*(yerr)

x=sm.add_constant(x, prepend=False)
rlm_model = sm.RLM(y, x, M=sm.robust.norms.TukeyBiweight())
results=rlm_model.fit()

但遗憾的是这与 matlab 函数不匹配。

【问题讨论】:

  • 试试y = y / yerr,除以yerr,权重是倒数。在将 x 除以 yerr x / yerr 之前,您必须添加常数。常数也需要加权。

标签: python matlab linear-regression statsmodels


【解决方案1】:

statsmodels RLM 尚不支持反映异方差性的权重,即观察值之间的不等方差。

作为一种解决方法,您可以在调用 RLM 时将 y 和 x 除以 yerr。

我认为,类似于加权最小二乘法,参数估计、它们的标准误差和其他统计数据在这种情况下仍然是正确的。但我还没有检查。

作为参考:

卡罗尔、雷蒙德 J. 和大卫鲁珀特。 “异方差线性模型中的稳健估计。”统计年鉴(1982):429-441。

他们还估计方差函数,但对于固定权重 1/sigma_i,优化只使用

(y_i - x_i beta) / sigma_i

权重 1/sigma_i 只是相对权重,仍会乘以对错误规模的稳健估计。

【讨论】:

  • 我编辑了问题以反映您的提示。也感谢您的参考,因为我认为问题源于我对这些方法缺乏了解。
猜你喜欢
  • 2018-01-13
  • 2017-02-09
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 2022-11-02
  • 2015-10-17
  • 2016-06-20
相关资源
最近更新 更多