我做了一个线性回归跟随:
DEM = [200,300,400,500,600,200,100,50,200]Prep = [50,95,59,99,23,10,60]X = DEM #independent variableY = Prep #dependent variableslope,intercept,r_value,p_value,std_err = stats.linregress(x,y)
但现在我想为这些电台增加重量,例如:
Weight = [0.3,0.1,0.2,0.05,0.05]
该图表就像http://ppt.cc/XXrEv
我找到了加权最小二乘法,但我想知道它是如何工作的,为什么它是错误的.
import numpy as npimport statsmodels.API as smY = [1,3,4,5,2,4]X = range(1,8)X = sm.add_constant(X)wls_model = sm.WLS(Y,X,weights=range(1,8))results = wls_model.fit()results.params解决方法 回答:
import numpy as npimport statsmodels.API as smstart_time = time.time()aList=[2,6]DEM=[200,600]PRE=[20,19,18,20,21,22,30,23]A_DEM=[]A_PRE=[]W=[]for a in aList: A_DEM.append(DEM[a-1]) A_PRE.append(PRE[a-1]) W.append(1)X = sm.add_constant(A_DEM)Y = A_PREwls_model = sm.WLS(Y,weights=W).fit()print wls_model.params[0] # interceptprint wls_model.params[1] # slopeprint wls_model.rsquared #rsquaredprint wls_model.summary()
我发现WLS会自动标准化.所以你可以直接增加重量.
总结以上是内存溢出为你收集整理的如何在python中加权站到最小二乘?全部内容,希望文章能够帮你解决如何在python中加权站到最小二乘?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)