我使用“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]
为什么当权重为 range(1,8) 时,斜率和截距为 1 和 0。 但当权重为“1”时,截距不为 0。
最佳答案
在您的示例中,数据无论如何都是线性的,因此无论您的权重如何,回归都将是一个完美的拟合。但是如果你改变你的数据在第一个位置有一个离群值这样
Y = [-5,2,3,4,5,6,7]
然后你得到恒定的权重
[-3.42857143 1.64285714]
但是使用 W = range(1,8)
你会得到
[-1.64285714 1.28571429]
在没有异常值的情况下,这更接近您想要的。
关于python - "statsmodels.regression.linear_model. WLS"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724573/