【发布时间】: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 除以 yerrx / yerr之前,您必须添加常数。常数也需要加权。
标签: python matlab linear-regression statsmodels