1

我有一些数据,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 函数不匹配。

4

1 回答 1

0

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

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

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

作为参考:

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

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

(y_i - x_i beta) / sigma_i

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

于 2014-02-13T17:13:30.157 回答