私はsklearn.linear_model.LinearRegressionを使用しています。私の係数の標準誤差を計算したいと思います。 Sklearnにはこれを行う関数は含まれていないので、手動で計算する必要があります(線形回帰係数推定の標準誤差の例については、https://en.wikipedia.org/wiki/Ordinary_least_squaresを参照してください)。sklearn.linear_model.LinearRegressionの残差の二乗和
私は、二乗残差の合計を得るために私の線形回帰のresidue_属性を使用しています。
residues_:アレイ、形状(n_targets)又は(1)または空の私の質問は、AS _residuesを定義http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.htmlでドキュメント、程度です。 残余の合計。 フィットの間に渡された各ターゲットの2乗ユークリッド2乗。線形回帰問題が未定義である場合(トレーニング行列の線形独立行の数 は 個の線形独立列の数よりも少ない)、これは空の配列です。 フィットの間に渡されたターゲットベクトルが1次元の場合、これは (1、)形状の配列です。
「残量の合計」はドキュメントに誤りがありますか?私はそれが "残差の平方和"と言うべきだと思います。 (訓練データの残差の総和は、線形回帰の場合、定数が含まれている場合は常にゼロです:https://stats.stackexchange.com/questions/194523/why-does-the-sum-of-residuals-equal-0-from-a-graphical-perspectiveを参照してください)また、次の文章では「二乗ユークリッド2ノルム」と示されています。 )ドキュメンテーションが本当に間違っている場合は、どうすれば修正できますか?
編集:残基が直接scipy.linalg.lstsqから採取した
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](https://github.com/scikit-learn/scikit-learn/issues)に投稿できます。あなたが正しいならば、彼らは間違いを訂正します。もしそうでなければ、なぜこれがなぜこう書かれた(または実装された)のかについての情報を得るでしょう。 –
@VivekKumarリンクをありがとう、私はそれをします。 – Adrian
https://github.com/scikit-learn/scikit-learn/issues/9491 – Adrian