2017-08-03 21 views
-1

私は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 
+1

エラーと思われる場合は、[github issues page](https://github.com/scikit-learn/scikit-learn/issues)に投稿できます。あなたが正しいならば、彼らは間違いを訂正します。もしそうでなければ、なぜこれがなぜこう書かれた(または実装された)のかについての情報を得るでしょう。 –

+0

@VivekKumarリンクをありがとう、私はそれをします。 – Adrian

+0

https://github.com/scikit-learn/scikit-learn/issues/9491 – Adrian

答えて

0

残基:()、または(1)または(私は簡単な例を使用して、私の疑いを確認することができますK、)ndarray b - a xの各列の2ノルムの2乗の和。行列aのランクが< Nまたは> Mの場合、または 'gelsy'が使用されている場合、これは空の配列です。 bが1-Dならば、これは(1、)形状の配列であり、そうでなければ形状は(K、)である。

あなたは正しいと思われます。

self.residues_は#5452(2015年10月にマージされている)から廃止され、v0.19(リリース予定)で削除される予定です。 スニペットに表示されているとおり、とにかく簡単に計算できます。

関連する問題