我使用'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.
答案 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)
在没有异常值的情况下更接近你想要的东西。