【发布时间】:2018-01-11 11:48:23
【问题描述】:
我正在使用 sklearn.linear_model.LinearRegression 并想计算我的系数的标准误差。据我所知,sklearn 不包含执行此操作的函数,因此我需要手动计算它们(参见https://en.wikipedia.org/wiki/Ordinary_least_squares,了解线性回归系数估计的标准误差示例)。
我正在使用我的线性回归的残差属性来获得残差平方和。我的问题是关于http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html 的文档,它将_residues 定义为:
residues_ : 数组、形状 (n_targets,) 或 (1,) 或空。 总和 残差。每个目标通过的欧几里得 2 范数平方 合身。如果线性回归问题是欠定的(数 训练矩阵的线性独立行数小于其 线性独立列的数量),这是一个空数组。如果 在拟合期间传递的目标向量是一维的,这是一个 (1,) 形状数组。
“残差总和”是文档中的错误吗?我认为它应该说“残差平方和”。 (对于线性回归,训练数据上的残差总和始终为零,如果它包含一个常数:请参阅https://stats.stackexchange.com/questions/194523/why-does-the-sum-of-residuals-equal-0-from-a-graphical-perspective。此外,文档中的以下句子说“平方欧几里得 2 范数”,它是方格。)如果文档确实有误,我该如何更正?
编辑:我可以用一个简单的例子来证实我的怀疑:
import numpy as np
from sklearn import linear_model
n_obs = 5
X = np.ones((n_obs, 1), dtype=float)
X[3] = 7.0
y = np.ones((n_obs, ))
y[1] = 10.0
y[3] = 9.0
model = linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)
np.isclose(np.sum(np.power(y - model.predict(X=X), 2)), model.residues_) # True
【问题讨论】:
-
如果您认为这是一个错误,您可以将其发布到他们的github issues page。如果你是正确的,那么他们会更正错误,如果你不是,你仍然可以获得关于为什么这样编写(或实现)的信息。
-
@VivekKumar 谢谢你的链接,我会这样做的。
标签: python scikit-learn linear-regression