gpt4 book ai didi

python - 如何在 python 中加权站以订购最小二乘法?

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:47 24 4
gpt4 key购买 nike

我有 10 个气候站的降水数据,它是 DEM。

我做了一个线性回归如下:

DEM = [200, 300, 400, 500, 600, 300, 200, 100, 50, 200]
Prep = [50, 95, 50, 59, 99, 50, 23, 10, 10, 60]
X = DEM #independent variable
Y = Prep #dependent variable
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)

但现在我想为这些站增加权重,例如:

Weight = [0.3, 0.1, 0.1, 0.1, 0.2, 0.05, 0.05, 0.05, 0.05, 0.05]

图表就像http://ppt.cc/XXrEv

我找到了加权最小二乘法来做这件事,但我想知道它是如何工作的,为什么工作,或者它是否错误。

import numpy as np
import statsmodels.api as sm

Y = [1, 3, 4, 5, 2, 3, 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 np
import statsmodels.api as sm
start_time = time.time()
alist=[2,4,6]
DEM=[200,300,400,500,300,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_PRE
wls_model = sm.WLS(Y,X, weights=W).fit()

print wls_model.params[0] # intercept
print wls_model.params[1] # slope
print wls_model.rsquared #rsquared
print wls_model.summary()

而且我发现 WLS 会自动归一化。所以你可以直接添加权重。

关于python - 如何在 python 中加权站以订购最小二乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30722896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com