Excelによる回帰分析
例えば,このようなデータを分析してみましょう.これは男女100人の身長,体重のデータ(仮想)です.以下の様にExcelの表の上にデータが並んでいたとします.
※データはこの後にもならんでいます.
![]()
ここでは,女性の身長が,自身の体重と父親の身長とどのような 関係にあるかを重回帰分析してみます.
【手順】
- メニューバーの「ツール」
- 「分析メニュー」
- 「回帰分析」
すると,次のダイアログが現れます.データ範囲,出力範囲を設定し,「OK」ボタンをクリックします.
![]()
図中の「入力Y範囲」には,従属変数(被説明変数),「入力X範囲」には 独立変数(説明変数)を示す範囲を入力します.
残差や正規確率などのオプションを選択し,出力先を指定したら,「OK」 ボタンをクリックして,分析を行ないます.
※注意1
上記の図中に「定数に0を使用」という項目がありますが,これを指定して回帰した場合,相関係数や決定係数が正しく計算されません(MS側のバグらしいです.群馬大学の青木先生のホームページで知りました).もっとも回帰係数は合っているようです. 【追加情報1999/12/30】上記の現象はExcel97での現象でしたが,最新のExcel2000でも同様の現象が確認されています(TSPで確認).なんとかならないものか>MS社様
Excelによる回帰分析(分析結果)
実行すると,Excelは以下の分析結果を出力します.
![]()
モデルの当てはまりの具合をしめす決定係数やそれぞれの変数について推定されたパラメータを見ることができます.
- 「重決定R2」は決定係数(R2)と呼ばれるもので,当てはまりの良さを示しています.R2は0から1の間を取ります.数字を見るとおよそ0.74となっていて,かなり当てはまりがよさそうです.
「補正R2」は「自由度調整済み決定係数」と呼ばれるものです.独立変数を増やすほど,寄与率は1に近付くので,寄与率の上昇が追加された独立変数の効果かどうか不明となるので,重回帰分析の場合はこれを用います.
- それぞれの変数についてはどうでしょう.「係数」はそれぞれの変数が1単位増加した時の身長の増加分を表しています.ここでは,女性の身長は父親の身長(X値2)よりも体重(X値1)に強く関係していることが分かります.
- 係数の欄のt値,p値は推定された係数が0であるという帰無仮説を検定したものです(係数の有意性のチェック).検定結果から帰無仮説が棄却できない,すなわち統計的に0でないとはいえない(0かもしれない)となると,この回帰分析に意味がなくなるので,こうしたチェックが必要になります.判断の仕方は以下の通り.
(1) P(T<=t)<実験者が設定する棄却域の確率 帰無仮説を棄却 (2) t 境界値<「t」の絶対値 帰無仮説を棄却 t境界値はtinv関数を用いて得ることができます.
項目 関数名 t境界値を得る tinv(確率,自由度) 確率には多くの場合,5%(0.05),1%(0.01)といった確率を用います.
自由度には,「n-k-1」の数が入ります.ここで,nはサンプル数,kは回帰式に用いた独立変数の数です.
このtinv関数が返す数値は両側検定のものです.片側検定の値を求める場合は,引数に用いる確率を2倍します.5%片側の数字の場合は,0.1となります.※注意2
「分析ツール」による回帰分析では,説明変数(X範囲)には16個までしか用いることができないことに注意してください.なぜなの?>MS社様 まぁ16変数で構わないけど,17個以上を指定した場合にExcelで表示されるメッセージもおかしい.『〜16以上の変数は使用できません』←Excel2002(XP)ですよ?
「以上」を使うのなら17以上としなくては…
残差
推定された回帰式が適正なものであるかどうかを確認するものとして,決定係数や係数の有意性をチェックしますが,「残差」も確認する必要があります.回帰式(単回帰)は,
y=a+bx ですが,説明変数(x)を上式に代入して求めた被説明変数(y)と実際のデータから読み取れるyには誤差が存在しています.これを残差とよび,残差uは,
u=y−a−bx で求められます.回帰分析(最小2乗法)ではこのuに関して以下の仮定を置いています.
- uの平均は0
- uの分散は一定
- uはxと無相関
- uは互いに無相関
残差を確認するには,これを散布図で視覚化すると良いでしょう.「回帰分析」ツールの中に残差を計算する箇所があるので,この「残差」と「残差グラフの作成」チェックしてみます.実行すると,回帰結果の他に各残差の値,残差のグラフが表示されます.
例では残差はランダムに現れている(すなわち,良好な推定ができた)ように見えます.uがxと共に増加(減少)している,uが規則性を持っているように観察される,などの傾向が観察されるのなら,推定がうまく行っていない,あるいは他に有力な説明変数がある,など回帰式そのものを見直す必要があります.
Excelの関数で算出する回帰分析
上記のように「分析ツール」を使っても良いのですが,算出した統計量をさらに次の分析に移したいときや,マクロを書くときなどには「分析ツール」よりも関数を用いたほうが便利です.関数では単回帰と重回帰で用いる関数が異なります.単回帰では係数,決定係数などはそれぞれ専用の1つの関数で求めます.重回帰では1つの関数で可能ですが,少々操作が難しいと思います.
単回帰の項目 関数 X値の係数 slope(Y範囲,X範囲) 切片 intercept(Y範囲,X範囲) 決定係数 rsq(Y範囲,X範囲) 重回帰 関数 係数,切片など linest(Y範囲,X範囲,定数オプション,補正オプション) 単回帰はその方法は他の関数と操作が同じなので説明は省略します.
【手順】
- 出力範囲をドラッグする.重回帰の場合,上記の例のように説明変数が2つの場合,切片を入れて3つの係数が計算されるので,3列分範囲を選択します.行は1〜5行選択します.
- 範囲は選択したまま,関数を入力する.以下の図のようになっているはずです.
![]()
- 定数オプション,補正オプションにはそれぞれ true,falseのいずれかを入力します.
- 定数オプション「true」→切片を算出
定数オプション「false」→切片を0として計算- 補正オプション「true」→係数の標準誤差を算出
補正オプション「false」→算出しない- 「Ctrl」キー「Shift」キーを押しながら「Enter」キーを押す.普通は「Enter」キーだけですが,この関数では3つのキーを同時に押します.
- 出力結果は以下の図のようになります.
![]()
日本語による説明は阿部がつけたものです.分析ツールによる結果と見比べてください.通常の感覚では左から,切片,X値1,X値2となるでしょうが,linest関数はそれらとは逆になることに注意してください.また,出力範囲選択のところで,行数を4以下にすると,その分だけ(例えば上から4行分だけ)が表示されます.
- 係数の検定のためのt値を得たい場合,定義から,係数÷標準誤差の計算で得ることができます.上の例で変数「X値2」のt値は,おおよそ0.332÷0.079=4.203となります.
※連続処理などで出力の一部のセルのみを出力したい(例えば,各係数の標準誤差だけを出したい)という場合は,linest関数をindex関数で囲って用います.
例 index(linest(YYY,XXX,true,true),行番号,列番号)
行,列番号の定義はlinest関数の出力範囲の左上が1行1列目になります.
トップに戻る