【问题标题】:How to weight station to Order Least Squares in python?如何在python中对站进行加权以订购最小二乘?
【发布时间】:2023-04-07 17:01:01
【问题描述】:

我有 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

【问题讨论】:

  • 如果您想知道加权最小二乘法是如何(以及为什么)工作的,那么最好上一门统计学课程:SO 并不是真正适合这类问题的地方。
  • 您需要考虑的一件事是权重代表什么:如果它们是错误(标准偏差),则权重应该是方差的倒数(1 / 错误**2)。你在这里给出的例子,weights=range(1, 8),看起来很不切实际,因为这意味着错误随着X的增加而减少。
  • 感谢您的重播,这很有帮助。

标签:
python
linear-regression
least-squares
weighted