- ベストアンサー
回帰分析:定数項ゼロのときの補正R2の値
- 回帰分析において、定数項をゼロにした場合の補正R2の計算方法がわかりません。
- 補正R2の計算式は一般的には以下のようになっています:補正R2=1-(1-R2)*(n-k)/(n-1)。
- ただし、定数項がゼロの場合は重決定R2と補正R2の関係式が異なる可能性があります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
まず,最新版EXCELでは不明,と断った上での話し。 >定数項ゼロの場合は、どうしてもあいません。 これは,かなり以前から有名なEXCELのバグです。 例えば,群馬大学社会情報学部の青木繁伸先生のWEBを参考にして下さい。 エクセルの回帰分析 http://aoki2.si.gunma-u.ac.jp/lecture/mb-arc/arc039/01073.html ここに, 明らかなバグです。 Excelを利用する場合定数項は0にしない方がいいでしょう。 それでなければRを使った方がいいと思います。 と書かれています。 さらに,そこのリンクにも解説 http://aoki2.si.gunma-u.ac.jp/Hanasi/StatTalk/11.html また,青木先生が,EXCELのその他のバグや精度の悪さを指摘したWEBも参考にどうぞ http://aoki2.si.gunma-u.ac.jp/Hanasi/excel/ ****************************************************** 補正決定係数は,通常は,自由度調整済決定係数(Adjusted R-square)と呼ばれます。 通常の決定係数との関係を添付ファイルに示しました。 質問者が, >定数項がゼロの場合は、そもそも重決定R2と補正R2のそれぞれの計算方法がことなりますが と言うのは, 添付画像(1)(2)のような定義で計算するときでしょう。 しかし,実質的には,(3)に示すような同一の定義の式です。 例えば,y = ax + b という一次関数の回帰(n = 5)の場合を考えます。 (1)~(3)では,自由度の計算だけが異なるので,その部分だけ考えます。 n = 5, k = 1 として b ≠ 0 の時 自由度 回帰 1 残差 3 合計 4 b = 0 の時 自由度 回帰 1 残差 4 合計 5 (1) (5 - 1) / (5 - 1 - 1) = 4 / 3 (2) 5 / (5 - 1) = 5 / 4 いずれも, 全自由度 / 残差自由度 という式で,(3)の定義式になっていることが分かります。 日本の文献やWEBでは,大抵,(1) (2)のような,サンプル数 n や 変数の数 k を使った説明をするので,定数項の有無で別式のように見えますが,実質的には単一の式で表されるのです。 蛇足ですが,青木先生のサイトを見て分かるように,EXCELを過信しないことが大切です。 EXCELに限らず,複数の統計プログラムで同じ処理をさせて,バグの有無を自分で確認することが大切です。 高価な有料ソフトでさえ,バグがありますから・・・
その他の回答 (5)
- 井口 豊(@Iguchi_Y)
- ベストアンサー率68% (157/228)
>定数項がないときの補正R2は使用せず、自分で重決定R2(決定係数)から「補正」して使用すればとりあえずは大丈夫ということでしょうか。 それが一番安全でしょう。 >回帰係数のt値などにはバグはないものでしょうか。 少なくとも,一次関数では,ありません。 重回帰や2次以上の回帰では,どうか調べてありませんが・・・ 定数項の有無の問題は,さまざまな関数で生じる可能性があります。 いずれにしろ,この質問のような疑問を絶えず持つことが肝心だと思います。 私も,EXCELに限らず,簡単なデータで各種計算ソフトをCheckするようにしています。
- 井口 豊(@Iguchi_Y)
- ベストアンサー率68% (157/228)
一つ前の回答の続きです。 書ききれなかったので,こちらが,あとです。 ******************** もういちど,EXCEL分散分析を見ます。 定数項有り y = ax + b モデル 重相関R 0.531816023 重決定R2 0.282828283 補正R2 0.193181818 自由度 変動 分散 回帰 1 2.375757576 2.375757576 残差 8 6.024242424 0.753030303 合計 9 8.4 合計分散 → 9 / 8.4 = 0.933333333 定数項無し y=ax モデル 重相関R 0.917830513 重決定R2 0.84241285 補正R2 0.731301739 自由度 変動 分散 回帰 1 64.02337662 64.02337662 残差 9 11.97662338 1.330735931 合計 10 76 合計分散 → 10 / 76 = 7.6 回帰変動や合計変動は,両者でかなり違いますが,残差変動は2倍程度しか違いません。 これは,前述のように, 残差変動は,直線から y 方向の偏差平方和(つまり,最小二乗法の定義)だから,両モデルとも基準の取り方が同じだからです。 だから,同一データで,適合度を調べるなら,残差変動を自由度で割った残差分散を比較すれば良いのです。 決定R2で比較すると, 定数項有り y = ax + b モデル 重決定R2 0.282828283 定数項無し y=ax モデル 重決定R2 0.84241285 となり,定数項無しモデルの適合度が高いように見えます。 しかし,これが比較できないことは既に述べました。 残差分散を比較すると, 定数項有り y = ax + b モデル 0.753030303 定数項無し y=ax モデル 1.330735931 であり,定数項有りが,直線からのバラツキが小さい,適合度が高いことが分かります。 残差変動を使う分析として,AIC(赤池情報量規準)を使う方法もあります。 最近亡くなった世界的な統計学者,赤池弘次氏の開発した最適モデル選択示数です。 前述の Fitting models to biological data の p143 にもあります。 ネット上でも,「赤池情報量規準」で検索すると, 日本語で膨大な解説や使用例があります。 実際の式は AIC = n・{LN (2π・残差変動/n) + 1} + 2*(パラメータ数+1) LNは自然対数。 AICにも複数の定義があるのですが,LNの中の2πや+1を取ったものです。 モデル比較するので,定数部分は無くてもいいのです。 上述のデータでは 定数項有り y = ax + b モデル 残差変動 6.024242424 パラメータ数 2 AIC 29.31083706 定数項無し y = ax モデル 残差変動 11.97662338 パラメータ数 1 AIC 36.18248671 残差変動利用の示数なので,当然,小さい値ほど適合度が高くなります。 定数項有り y = ax + b モデル の適合度が高く,さきほどの残差分散の結果と同じです。 式は、そちらのほうが見やすいかも。
お礼
お礼が遅くなりまして申し訳ございませんでした。 Excelのバグまで解明されたということで、お見事です。 是非ともマイクロソフトに教えてやったらよいと思います。 以上、総括いたしますとExcelユーザとしては、Excelで回帰分析をやるしかないのですが、 注意点といたしましては、 定数項がないときの補正R2は使用せず、自分で重決定R2(決定係数)から 「補正」して使用すればとりあえずは大丈夫ということでしょうか。 回帰係数のt値などにはバグはないものでしょうか。 また質問してすみません。先生が提供くださいました、情報リンクなど もう一度見直してみます。 ありがとうございました。
- 井口 豊(@Iguchi_Y)
- ベストアンサー率68% (157/228)
前回質問で,決定RがEXCEL独自かと言う点について。 どうやら変形ミスのようです。 前回,定数項無し y = ax モデルのEXCEL回帰分析で 重決定R2 0.84241285 補正R2 0.731301739 自由度 回帰 1 残差 9 合計 10 を示しました。 補正R2 = 1 - (合計自由度 / 残差自由度)*(1-R2) = 0.824903167 が正しいとも述べました。 この(1-R2)を展開すると 補正R2 = 1 - (合計自由度 / 残差自由度) + (合計自由度 / 残差自由度)*R2 = 1 - (10 / 9) + (10 / 9)* 0.842412850307587 = 0.824903167 当然同じ結果です。 ところがEXCELでは,展開を間違えて, 補正R2 = 1 - (合計自由度 / 残差自由度) + R2 とやってるようなのです。 (合計自由度 / 残差自由度)*(1-R2)の展開で,R2に(合計自由度 / 残差自由度)をかけなかったんですね。中学生などがやるミスです。 結果として, 補正R2 = 1 - (10 / 9) + 0.842412850307587 = 0.731301739 と出したようです。 ********* 決定係数が負ならバグかと言うと,必ずしもそうではありません。 例えば,次のデータを考えます。 x y 1 1 2 300 3 5 4 300 yのバラツキにも注意。 定数項あり,つまり y = ax + b をモデルとし, EXCEL分析ツールで回帰分析します。 重相関R 0.453216123 重決定R2 0.205404854 補正R2 -0.191892719 標準誤差 187.2121791 観測数 4 自由度 変動 分散 回帰 1 18120.2 18120.2 残差 2 70096.8 35048.4 合計 3 88217 合計分散 → 88217 / 3 = 29405.6666666667 係数 切片 1 X値1 60.2 定数項ありでも,補正R2は,見事に?マイナスです。 前回同様,定義に従って計算すると, 補正R2 = 1 - 残差分散 / 合計分散 = 1 - 35048.4 / 29405.6666666667 = -0.191892719 ピタリ合います。 つまり,補正R2が負なのは,バグではありません。 補正R2の定義式を見てください。 残差分散が合計分散より大きくなると, (残差分散 / 合計分散)>1 となり, 補正R2 = 1 - 残差分散 / 合計分散 < 0 となるのです。 ********************* さらに前回のデータをもう一度考えます。 x y 1 1 2 2 3 2 4 4 5 3 6 3 7 2 8 2 9 3 10 4 定数項なし,つまり,y = ax とします。 EXCELでグラフを描かせて,オプションで,数式とR2を表示したのが,添付図です。 R2 = -0.4258 と,マイナスです。 青木先生のサイト http://aoki2.si.gunma-u.ac.jp/Hanasi/StatTalk/11.html では,以前のEXCELでは,分析ツール出力表でも 重決定R2 -0.4257885 となっていたようです。 青木先生は,これをバグと見ているようですが,これもバグとは言えません。 前回述べたように, 定数項無し,の回帰分析は原点を基準 定数項有り,の回帰分析は重心(平均)を基準 に取ります。 それゆえ,相互比較できないという問題が起きました。 この問題を回避するひとつの手段は,両者とも基準を同じにすることです。 だから,両モデルとも,基準を重心にし,分析します。 結果は前回のものを使いますが,もう一度書きます。 定数項有り y = ax + b モデル 自由度 変動 分散 回帰 1 2.375757576 2.375757576 残差 8 6.024242424 0.753030303 合計 9 8.4 合計分散 → 9 / 8.4 = 0.933333333 定数項無し y=ax モデル 自由度 変動 分散 回帰 1 64.02337662 64.02337662 残差 9 11.97662338 1.330735931 合計 10 76 合計分散 → 10 / 76 = 7.6 EXCEL2003では,y=ax モデルについて 重決定R2 = 回帰変動 / 合計変動 = 64.0233766233766 / 76 = 0.84241285 と計算するのは前回示しました。 変動には,y = 0 からの偏差平方和を取ったことも前回述べました。 しかし,ここで,決定R2 を次のように変形します。 決定R2 = 回帰変動 / 合計変動 = (合計変動 - 残差変動)/ 合計変動 = 1 - 残差変動 / 合計変動 残差変動は,データと直線のズレ,つまり y 方向の偏差平方和,つまり,最小二乗法の定義だから,両モデルとも基準の取り方は同じです。 そして,合計変動を,y平均 2.6 からの偏差平方和 Σ(y-2.6)^2 = (1-2.6)^2 + (2-2.6)^2+.........+(4-2.6)^2 =8.4 つまり,定数項有り y = ax + b モデル の合計変動と同じ計算をします。 そして,定数項無し,y = ax モデルについて 決定R2 = 1 - 定数項無しの残差変動 / 定数項有りの合計変動 = 1 - 11.97662338 / 8.4 = -0.425788497619048 これが,以前の決定R2であり,今もグラフに出る決定R2です。 この定義は,例えば, Fitting models to biological data using linear and nonlinear regression http://www.graphpad.com/manuals/prism4/regressionbook.pdf という論文(たぶん統計プログラム解説書)のp34-35にも R2 = 1 - SSreg / SStot (p35) という表現で出てきます。 p34 の下のグラフを見ると分かりますが, SSreg は,y 平均からの偏差平方和 SStot は,関数の y 方向残差平方和 です。 そこには,R2がnegative になることもある(p35, 3行)と書かれ,それは,inappropriate model を選んだ時起きる(p35, 7行)と書かれています。 私個人としては,むしろ,こちらの定義の方が好きです。 つまり,不適当なモデルを選べば,マイナスが出る,というわけです。 もっと複雑な関数で,原点も通らないモデル,を考える時があります。 そのとき,やはり,重心(平均)を基準にして,変動を考えれば,統一的に決定R2が計算できます。 いずれにしても,定義によって,R値が変わるのは困ったことです。 初級本にあるような,決定係数=相関係数の2乗,のような単純な解説は良くありません。 かなり複雑な定義と教えるべきです。 ******************** 書ききれないので,2つに分けて続きます。
- 井口 豊(@Iguchi_Y)
- ベストアンサー率68% (157/228)
例えば,青木先生のサイト http://aoki2.si.gunma-u.ac.jp/Hanasi/StatTalk/11.html の下のほうに,統計プログラムSPSSで,定数項0の分析をしたときの注意点が書かれています。 下手な日本語訳という部分です(私も笑ってしまった)。 読んでもわかりにくいかもしれませんが,以下のような問題です。 直線がデータ重心(平均値)を通る,という性質があり,その平均を使って分析を行います。 だから,合計自由度が n-1 と,平均を計算した自由度が引かれています。 しかし,定数項なし,の回帰分析は,必ずしも平均を通りません。 だから,原点を使って分析を行います。 原点は計算で出たものではないので,合計自由度は引かれることなく,nのままです。 つまり,これら両者は,計算も分析も全く過程が違う,別物なのです。 だから,青木先生のサイトのSPSSの注意でも,両者のRは比較できない,と書かれているのです。 例えば,前回の例で,合計変動の欄を見てください。 定数項なし,つまり,y = ax では 分散分析表 自由度 変動 回帰 1 64.02337662 残差 9 11.97662338 合計 10 76 合計変動 76 です。 これは, データyと原点yつまり0との差の平方和です。 Σ(y-0)^2 = (1-0)^2 + (2-0)^2+.........+(4-0)^2 =76 一方, 定数項あり,つまり,y = ax + b では 分散分析表 自由度 変動 分散 回帰 1 2.375757576 2.375757576 残差 8 6.024242424 0.753030303 合計 9 8.4 合計変動 8.4 です。 これは, データyと平均yつまり2.6との差の平方和です。 Σ(y-2.6)^2 = (1-2.6)^2 + (2-2.6)^2+.........+(4-2.6)^2 =8.4 このように,計算式から違うので,両者の比較はできないのです。 もちろん,原点通過の式同士なら可能ですが・・・・ 前回も述べた http://okwave.jp/qa/q6734662.html でも指摘したことですが,理論的な背景を考えずに適用すると,思わぬ落とし穴に,はまる例と言えます。 EXCELの補正Rはバグと言うことで,自分で計算された方が良いでしょう。 もし,レポートや論文などに書く時は,その計算式(定義式)も書いたほうが親切です。 個人的経験から言えば,強制原点通過のRを求めた論文は,生物分野では滅多にありません。 つまり,y = ax + b を求め,パラメータ a, b が0 かどうか検定し(これは,EXCELでも可能), もし,b = 0 なら,改めて y = ax を求め,そこで終了,という感じになります。 つまり,最初から b = 0 とするのではなく, 理論的には b = 0 でも,本当にそうかどうか,y = ax + bで検定する,ということです。 今回のデータを係数ありで分析した結果は, 係数 標準誤差 t P-値 切片 1.666666667 0.592801941 2.811506763 0.022790091 X値1 0.16969697 0.095538683 1.776212143 0.113604984 切片のP-値<0.05なので,切片は有意に0と異なると考え,原点は通過しない,と言えます。
お礼
井口先生、本当に分かりやすい回答をありがとうございます。 定数項の有無で、そもそも決定係数の計算式自体が違っていて、 今回具体的に数値まで入れて示してくださいまして、これでExcelのアウトプットの 計算方法は全てわかりました。ありがとうございました。 どうでもよい話かもしれませんが、2003年より古いExcelの回帰分析で定数項0の場合で 決定係数がへんな値になるのは、定数項がある場合の決定係数の式をそのまま使用して計算 していたからではないかと思われるのですが、それにしても決定係数がマイナスとはひどいですね。 必ずしも定数項がゼロに限らず、ようは定数項に定数を設定するようなパラメータ制約を入れる場合におこる現象ということと解釈しました。 そこで、Excelでも異なる計算式を導入して、回避したのがExcel2003ということなのでしょうか。 SPSSでも両者のRは比較できないということであれば、(また質問してすみません。) q1、両者が比較できる(比較して意味のある)分析ツールがあるのでしょうか? q2、ExcelでもSPSSでも両者を比較できないのは、別々の式で定義しているからという、 ことですが、両者を統一的に比較できる計算式(つまり同一の式)などは統計理論的に ありえないということでしょうか。そもそも定数項有無の違いは、モデルが別物と考えて よいということではないかとい思いました。 本当に質問ばかりしてすみません。
- 井口 豊(@Iguchi_Y)
- ベストアンサー率68% (157/228)
>ここでまた質問してしまって良いのでしょか? 私自身としては,むしろ正確に理解してもらったほうが良いと思います。 別の質問でも,EXCEL関数を誤解(誤用?)されていた方がいたので,かなり詳しく説明したことがあります。 http://okwave.jp/qa/q6734662.html 本題ですが,私もEXCEL2003です。 分析ツールの回帰分析で行った,補正R2には,やはりバグと思われるような値が出ます。 例えば,青木先生が使ったデータでやってみます。 http://aoki2.si.gunma-u.ac.jp/Hanasi/StatTalk/11.html x y 1 1 2 2 3 2 4 4 5 3 6 3 7 2 8 2 9 3 10 4 ******************************** まず,通常の y = ax + b の分析 分析ツールの回帰分析から,必要部分だけの抜粋です。 回帰統計 重相関R 0.531816023 重決定R2 0.282828283 補正R2 0.193181818 分散分析表 自由度 変動 分散 回帰 1 2.375757576 2.375757576 残差 8 6.024242424 0.753030303 合計 9 8.4 合計分散 → 9 / 8.4 = 0.933333333 係数 切片 1.666666667 X値1 0.16969697 上のデータ入力して,この結果は合致しますか? ここで,合計分散は空欄です(不親切!)が,必要となるので,計算しておきます。 合計分散 = 合計変動 / 合計自由度 = 9 / 8.4 = 0.933333333 重決定R2 = 回帰変動 / 合計変動 = 2.37575757575758 / 8.4 = 0.282828283 これはピタリ合ってますね。 補正R2 = 1 - 残差分散 / 合計分散 = 1 - 0.753030303030303 / 0.933333333333333 = 0.193181818 これもピタリ合ってますね。 この式が,一番簡単な補正R2の計算です。 面倒ですが,重決定R2を使い,補正R2を出すと 補正R2 = 1 - (合計自由度 / 残差自由度)*(1-R2) = 1 - (9 / 8)*(1 - 0.282828282828283) = 0.193181818 当然ですが一致します。 ********************************************* 次に,原点通過 y=ax の計算です。 分析ツールの回帰分析から,必要部分だけの抜粋です。 回帰統計 重相関R 0.917830513 重決定R2 0.84241285 補正R2 0.731301739 分散分析表 自由度 変動 分散 回帰 1 64.02337662 64.02337662 残差 9 11.97662338 1.330735931 合計 10 76 合計分散 → 10 / 76 = 7.6 係数 切片 0 X値1 0.407792208 上のデータ入力して,この結果は合致しますか? ここでも,合計分散は空欄ですが,必要となるので,計算しておきます。 合計分散 = 合計変動 / 合計自由度 = 76 / 10 = 7.6 重決定R2 = 回帰変動 / 合計変動 = 64.0233766233766 / 76 = 0.84241285 これはピタリ合ってますね。 補正R2 = 1 - 残差分散 / 合計分散 = 1 - 1.33073593073593 / 7.6 = 0.824903167 違ってますね! 同じ式を使ったのに,EXCELの補正R2 と合致しません。 重決定R2を使い,補正R2を出すと 補正R2 = 1 - (合計自由度 / 残差自由度)*(1-R2) = 1 - (10 / 9)*(1 - 0.842412850307587) = 0.824903167 当然ですが,上の計算で求めた値に合致し,EXCELの表の値とは異なります。 ************
お礼
ご丁寧な回答ありがとうございます。本当に助かります。 具体的に設例まで用意してくださいまして、非常に明快です。 それで、またお礼といいつつ質問してしまって申し訳ございませんがさらに質問させてください。 それにしても、定数項の有無で、両者の決定係数があまりに、 違いすぎて、これはそもそも使い物になるのかどうか不安になりました。 定数項の有無の違いだけの2種類モデルがあった場合、決定係数では両者の選択ができないと いうことになってしまいませんでしょうか。 他の、分析ツールでもこのような決定係の大きな違いが生じるのでしょうか。 結論としては、定数項ゼロの場合の、Excelの補正R2の数値はバグということで、 よろしいのでしょうか。それとも、実はExcelオリジナルの関係式を定義しているので しょうか(それはないと思いますが)。 バグであるとすれば、関係式で計算をしなおした補正R2(0.824903167)を 使用するようにしたほうがよいような気がしました。 質問ばかりしてすみません。
お礼
すばやくご回答頂戴したにもかかわらず、お礼が遅くなりまして、申し訳ございません。 多くの貴重な情報と丁寧な回答をありがとうございました。 ご回答の内容を私なりに、調査しました。重決定R2と補正R2の関係式は、 定数項がゼロでないときは、Excelアウトプット(両数値間)には矛盾がありません(認識可能な範囲で確認済み)。 ところが、お試しになればわかると思いますが、定数項がゼロの場合は、関係式が微妙に合わない(データ数にもよりますが、小数点以下3桁くらいは合います)のは誤差でしょうか、それとも Excelのバクなのでしょうか。ちなみに、使用しているExcelは2003です。 宜しくお願いいたします。というか、ここでまた質問してしまって良いのでしょか?