python - "statsmodels.regression.linear_model. WLS"是如何工作的?

标签 python linear-regression statsmodels

我使用“statsmodels.regression.linear_model”来做 WLS。

但我不知道如何为我的回归赋予权重。

有谁知道权重是如何给出的以及它是如何工作的?

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]

为什么当权重为 range(1,8) 时,斜率和截距为 1 和 0。 但当权重为“1”时,截距不为 0。

最佳答案

在您的示例中,数据无论如何都是线性的,因此无论您的权重如何,回归都将是一个完美的拟合。但是如果你改变你的数据在第一个位置有一个离群值这样

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

然后你得到恒定的权重

[-3.42857143  1.64285714]

但是使用 W = range(1,8) 你会得到

[-1.64285714  1.28571429]

在没有异常值的情况下,这更接近您想要的。

关于python - "statsmodels.regression.linear_model. WLS"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724573/

相关文章:

python - 用Python的statsmodels的OLS线性回归进行曲线拟合时,公式中的常数如何选择?

regression - 如何使用 Conda 更新到 statsmodels 的开发者版本?

python - 在直方图python中拟合非标准化高斯

PHP 非持久进程设计 vs Python/Java

python - 至少在一定距离内只保留列表中的元素 - 循环时更改迭代器 - Python

python - 尝试绘制一个简单的函数 - python

python - 是否有用于为 'patsy' 指定 "baseline"模型的 'statsmodels' 公式语法

python - scikit-learn .predict() 默认阈值

python - 使用 numpy 进行多元线性回归

python - Numpy 的最小二乘没有残差