■Excel:重回帰分析(1) ■重回帰とは■ 重回帰とは何か,何から何を求めるものか,その際注意すべきことは何かなど,このページでは,(1)「代数的に解いた場合」,(2)「最小二乗法で解いた場合」 から「だいたいどういう話をしているか」というイメージをつかみ,最後に,(3)分析ツールまたはTREND()関数を用いて簡単に求める方法を考える. 実務に適するのは(3)「分析ツール」で,操作は簡単で結果はすぐ出るが,そもそも何を求めているのかは前の2つ(1)(2)の解説で理解してください. ■要約■ 2つ以上の説明変数(独立変数)x1,x2,・・によって目的変数(従属変数)yを表わす方程式 |
|||||||||||||||||||||||||||||
例 輸出型企業であるトヨタ自動車の株価は,円/USドル為替レートや日経平均株価の影響を受けるのではないかと考え,これらの値でトヨタ自動車の株価を表わす方程式を考える. 右の表1のように,2007年1月から3月上旬までのトヨタ自動車の株価,円/ドル為替レート,日経平均株価(終値)を作成しておき,説明変数(独立変数)x1,x2によって目的変数(従属変数)yを表わす方程式 (「初等統計学」(P.G.ホーエル著/培風館)P.259の説明が分かりやすいので,以下の説明は,その考え方による.)この連立方程式を解いて,a=-1205.07,b=15.6969,c=0.4190 したがって, y = -1205.07 + 15.6969x1 + 0.4190x2 ・・・(4) が求める方程式となり,日経平均株価と為替レートを入力すればトヨタ自動車の株価が求められる.(年月があまり外れたらダメ) この方程式によって予測した値と実際の値を並べてグラフにすると右図1のようになり(相関係数0.93),かなりよい予測となっていることが分かる. ○ この例のように,2つ以上の説明変数(独立変数)を用いて1つの目的変数(従属変数)の値を予測する式を重回帰式といい,特に1次関数で表わすものがよく使われる. |
表1
※ 左で求めた重回帰式(4)は,yとx1,yとx2各々別に求めた単回帰式の和ではない. |
○ 上の方程式を実際にExcelで求めて見よう ※ 定数 a11,a12,a13,・・・,a33,b1,b2,b3 が与えられているとき,x,y,z を未知数とする連立方程式 a21x + a22y +a23z = b2 a31x + a32y +a33z = b3 ※ はじめに,Excelの統計関数では説明変数が多変数になる場合に下図のように一連の範囲で指定する必要があるため,左端に目的変数,続いて説明変数1,説明変数2,・・・と必要に応じて列を追加して行けるようにしておくとよい.(Excel統計関数の引数は予測するyの範囲を先に書き,説明変数x1・・・の範囲を後に書くようになっている.実務上はその方が使いやすくなる.)
b2 = a21x + a22y +a23z b3 = a31x + a32y +a33z (1) 本題に戻って,次の表のように日付順にデータを作成しておく.
Σy=an + bΣx1+cΣx2 ・・・(1) Σyx1=aΣx1 + bΣx12+cΣx1x2 ・・・(2) Σyx2=aΣx2 + bΣx1x2+cΣx22 ・・・(3) の3つの方程式を(この段階では係数a,b,cが未知数)を作るためにあらかじめ,次の和を準備する.
nの欄には =COUNT(B3:B47)などと書く.次のような係数行列ができる.
(4) 右の解説のように行列の積 A-1b を作る. (5) 結果が次のように出る.
したがって,y = -1205.07 + 15.6969x1 + 0.4190x2 が求まる. |
○ 行列の積の簡単な解説は[このページ] ○ 行列の積 =MMULT(左から掛ける行列,右から掛ける行列) が使える.
(1) まずF1のセルに次のように記入する.(直接書き込むまたはメニューから挿入→関数→数学/三角で選択する) =MMULT(A1:B2,D1:D2) これによりF1に1つの成分だけが書き込まれる. (2) 答をExcelでいう配列の形(数学でいう行列の形)にするには,(1)の結果が書き込まれた後,積の結果の形2×1型に合わせてF1からF2までをドラッグで選択して(マウス形状十字のときに引っ張るのではない)反転表示にしてから,次のように「数式バー」と呼ばれる画面上のfxと書かれた欄にマウスをあてて,Ctrl キーと Shiftキーの両方を押しながらEnterキーを押す. ○ 逆行列の簡単な説明は[このページ] ○ 正方行列の逆行列をExcelで求めるには =MINVERSE(元の行列の範囲) が使える. 逆行列を求める計算
(1) E1に =MINVERSE(A1:C3) と記入する.(直接入力またはメニューから「挿入」→「関数」→「数学/三角」で選択し,入力範囲としてA1〜C3までを指定する.) (2) 以上の操作で,セルE1に(1,1)成分が一つだけ書き込まれるので,次にこれを配列にして3×3の行列にする: そのためには,(1)の結果が書き込まれた後,逆行列3×3型の形に合わせてE1からG3の範囲をドラッグにより反転表示させてから,行列の積のときと同様に,数式バーにマウスを当ててCtrl+Shift+Enterとする. |
右図1において,赤や青で示した点は,実測値とする. これに対して, 誤差としては,理論値の y (図で灰色の○で示したもの)と測定値の y (平面よりも上にあれば青で,下にあれば赤で示した)との「差の二乗」を考え,これらの総和が最小になるようにする. 右図2のようなデータについて,次の操作を行う. (1) B51からD51に定数項 a ,係数 b , c の初期値(仮の値)を準備する. (2) F3に(予測値-測定値)2 の計算式を書き込む. =(B$51+C$51*C3+D$51*D3-B3)^2 (3) F3の式をコピーし,F4〜F47に貼り付ける. (4) F49にこれらの総和の計算式を書き込む. =SUM(F3:F47) 以上で準備ができたので,Excelのソルバーを用いて,最小二乗法で最適解 a ,b , c を求める. (5) メニュー→「ツール」→「ソルバー」→ 目的セル:$F$49 目標値:最小値 変化させるセル:$B$51:$D$51 オプションとしては,次の程度に設定するとスムーズに行くようです. 反復回数:1000 精度:初めは緩く0.0001程度にし,一旦収束してから精度を上げる 反復結果の表示:チェックを入れる(うまくいかないときに何度も「継続」ボタンで漸近していける) (6) 「実行」ボタンを押し,何度か「継続」ボタンを押すと,解が求まる. |
※ Excelのソルバーの使い方は,このページ参照 図1 |
上で求めた重回帰式の係数は,
メニューから「ツール」→「分析ツール」→「回帰分析」としてによって出力される表のうち下端・左端の
※ 次の?部分の値を重回帰式(4)を求めずに,値として直接求めるには (適当なセルを選んで) =TREND(既知のy,既知のx,新しいx,定数) と記入すればよい.(関数TREND()では既知のxに2つ以上の系列を指定して重回帰の予測値を計算できる.引数に指定する範囲は次の表の背景色に対応している.定数は省略または1でよい.)
※ ここで得られる重回帰式は,「当たらずといえども遠からず」「そこそこの予測」となっていますが,日経平均が出てから特定銘柄の株価が求まっても現実にはあまりうれしくない方が多いと考えられるので,説明変数と目的変数の選択にもう一工夫必要(二工夫も三工夫も必要:簡単なはずがない)であることが分ります. |
別添ファイル( toyota.xls )Sheet1に上で扱った株価のファイルがあるので,これを用いて上記の結果を出せ.(株価は,http://quote.yahoo.co.jp/ による) また,Sheet2の電力会社の売上高,従業員数,総資産の概数から電力会社の売上高を従業員数,総資産で表わす重回帰式を作り,電力会社9の売上高を推定せよ. 答え:予想値2707(十億円)・・・本物の公表値は2600(十億円) |