How Does "Statsmodels. Regression. Linear_Model. Wls" Work?

I have used 'statsmodels.regression.linear_model' to do WLS.

But I have no idea about how to give weight my regression.

Does anyone know how the weight be given and how it work?

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]

why when weight is range(1,8) the slope and intercept is 1 and 0. but when weight is "1" the intercept is not 0.

1 Answer

In your example, the data is linear anyway, so the the regression will be a perfect fit, no matter what your weights. But if you change your data to have an outlier in the first position like this

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

then with constant weights you get

[-3.42857143  1.64285714]

but with W = range(1,8) you get

[-1.64285714  1.28571429]

which is closer to what you want without the outlier.

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Marcus Vance

Marcus Vance

Cybersecurity & Digital Privacy Researcher

Marcus Vance is a cybersecurity auditor and technology writer dedicated to educating the public about online safety, data privacy regulations, enterprise security, and emerging cyber threats.

Share this article
Twitter Facebook Pinterest