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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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.

You Might Also Like