“statsmodels.regression.linear_model.WLS”如何工作?

时间:2015-06-09 06:33:06

标签: python linear-regression statsmodels

我使用'statsmodels.regression.linear_model'来做WLS。

但我不知道如何给予体重回归。

有谁知道如何给予重量以及它是如何工作的?

import numpy as np
import statsmodels.api as sm
Y = [1,2,3,4,5,6,7]
X = range(1,8)
W= [1,1,1,1,1,1,1]
X = sm.add_constant(X)
wls_model = sm.WLS(Y,X, weights=W)
results = wls_model.fit()
results.params
print results.params
#[ -1.55431223e-15   1.00000000e+00]
import numpy as np
import statsmodels.api as sm
Y = [1,2,3,4,5,6,7]
X = range(1,8)
W= range(1,8)
X = sm.add_constant(X)
wls_model = sm.WLS(Y,X, weights=W)
results = wls_model.fit()
results.params
print results.params
#[0  1]

为什么当权重为范围(1,8)时,斜率和截距为1和0。 但当重量为“1”时,截距不为0.

1 个答案:

答案 0 :(得分:2)

在您的示例中,无论如何数据都是线性的,因此无论您的权重如何,回归都是完美的。但是,如果您将数据更改为在第一个位置具有异常值,就像这样

$(document).ready(function() {
    var s = $(".scrolling-panel");
    var pos = s.position();
    $(window).scroll(function() {
      var windowpos = $(window).scrollTop();
          if (windowpos >= pos.top) {
              s.addClass("stick");
          } else {
              s.removeClass("stick");
            }
    });
});

然后以恒定的权重得到

Y = [-5,2,3,4,5,6,7]

但是[-3.42857143 1.64285714] 你得到了

W = range(1,8)

在没有异常值的情况下更接近你想要的东西。