回帰分析をもう少し踏み込んで考えてみよう
Contents
回帰分析とはある変数(目的変数=従属変数)を他の変数(説明変数=独立変数)で説明しようと試みる分析方法です。例えば「売り上げ」という変数にはどのような要因が影響しているのかを確かめたいとき,その要因は「接客態度」かもしれませんし,あるいは「駐車場の広さ」が関係しているかもしれません。はたまた「品揃え」や「商品の価格」が売り上げに影響しているのかもしれません。
しかし,実際にこのようなデータが手元にあったとしてもそれを眺めているだけではどの要因が売り上げに影響しているのか分かりません。そこで回帰分析を行うことによって得られる回帰方程式というものが役立ってくれるのです。
例えば下表は全国で経営されている24店舗それぞれの売り上げを表したものです。売り上げの単位は百万円,駐車場の広さは駐車可能な台数,それ以外は5段階評価したものとでもしておきましょう。
| 店舗ナンバー | 売り上げ(y) | 接客態度(x1) | 駐車場の広さ(x2) | 品揃え(x3) | 商品の価格(x4) |
| No.1 | 897 | 5 | 50 | 2 | 3 |
| No.2 | 778 | 4 | 40 | 2 | 3 |
| No.3 | 823 | 3 | 45 | 3 | 4 |
| ・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
| No.22 | 912 | 2 | 80 | 4 | 5 |
| No.23 | 699 | 3 | 30 | 5 | 3 |
| No.24 | 790 | 2 | 65 | 2 | 2 |
売り上げを目的変数,他の変数を説明変数として回帰方程式で表すと次のようになります(これは上のデータと関係なく,説明するうえで都合の良いように私が勝手に考えたものです)。
![]()
「ハァ,こんなもんいきなり見せられても意味がワカラン」という人のために分かり易く説明しましょう。まず上の式を次のように書き直してみましょう。
![]()
つまり,
ということが分かります。この偏回帰係数は「各要因が売り上げに影響している強さの度合い」と考えれば良いでしょう。そうすると,
といえそうです。ここで問題なのは偏回帰係数が-(マイナス)の値となっている「商品の価格」についての解釈です。他の要因と同じように解釈してみると「商品の価格が安くなるほど売り上げを減少させる」といえますが,通常,価格が安くなるほどお客さんからの評価は良くなり,それが結果として売り上げ増加に貢献するのだと考えるのがスジです。なんだか矛盾しているような結果のように思えますが,この場合は次のように解釈することができます。
どうでしょうか?皆さんもこのように考えて購入を思いとどまったことがあるでしょう。つまり,この場合は「商品の価格が安すぎるとかえって客を不安にさせ,その結果,売り上げの減少につながってしまう」と解釈するのが妥当です。
さて回帰方程式の見方が分かったところで,どのようにしてこの回帰方程式を求めるのかを少し考えてみることにしましょう。
回帰方程式を求めるということは各変数の偏回帰係数を求めるということですが,偏回帰係数を求めるためには最小二乗法と呼ばれる数学のテクニックが用いられます。この手法について解説されている良書はすでにたくさんあるので,ここでは最小二乗法についてではなく分析に用いるデータによってどのように回帰方程式が変わってくるかを説明しましょう。
通常,私たちが使用するデータには原データと標準化されたデータという2種類のデータがあります。ここで原データ(表1)を用いて回帰分析を行った場合と標準化されたデータ(表2)を用いて回帰分析を行った場合とでどのような違いが出るかを確かめてみます。
| 店舗ナンバー | 売り上げ(y1) | 接客態度(x1) | 駐車場の広さ(x2) | 品揃え(x3) | 商品の価格(x4) |
| No.1 | 897 | 5 | 50 | 2 | 3 |
| No.2 | 778 | 4 | 40 | 2 | 3 |
| No.3 | 823 | 3 | 45 | 3 | 4 |
| No.4 | 912 | 2 | 80 | 4 | 5 |
| No.5 | 699 | 3 | 30 | 5 | 3 |
| No.6 | 790 | 2 | 65 | 2 | 2 |
| 店舗ナンバー | 売り上げ(y2) | 接客態度(x1) | 駐車場の広さ(x2) | 品揃え(x3) | 商品の価格(x4) |
| No.1 | 1.01206233 | 1.5682314 | -0.09221389 | -0.7905694 | -0.3227486 |
| No.2 | -0.48402981 | 0.7128324 | -0.64549722 | -0.7905694 | -0.3227486 |
| No.3 | 0.08171932 | -0.1425665 | -0.36885556 | 0 | 0.6454972 |
| No.4 | 1.20064537 | -0.9979654 | 1.56763612 | 0.7905694 | 1.6137431 |
| No.5 | -1.47723383 | -0.1425665 | -1.19878056 | 1.5811388 | -0.3227486 |
| No.6 | -0.33316338 | -0.9979654 | 0.73771111 | -0.7905694 | -1.2909944 |
原データから得た回帰方程式をy1,標準化されたデータから得た回帰方程式をy2として計算してみると次のようになります。
標準化されたデータを使用した場合は定数項が0(正確には限りなく0に近い値)になっていることが分かりますが,それ以外は単位が大きいか小さいかだけで見た目上では特に問題ないようです。
しかし,使用した変量の単位を考えてみると接客態度,品揃え,商品の価格は5段階評価ですが,駐車場の広さは駐車できる車の台数です。このように単位の異なる変数同士を比較しても意味がありません。したがって,使用する変量の単位が異なるときはデータを標準化してから回帰分析を行うということです。
なお,このときの偏回帰係数を標準偏回帰係数といいます。また,標準化されていないデータの場合,偏回帰係数はデータの単位やスケールによって大きく変化してしまうことにも注意する必要があります。
重相関係数とは予測値と実測値の相関係数です(以下を参照)。
> x<-c(2,6,8,7,4)
> y<-c(4,5,6,7,4)
> lm(y~x)
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
2.7328 0.4569
> y.hat<-2.7328+0.4569*x
> y.hat
[1] 3.6466 5.4742 6.3880 5.9311 4.5604
> cor(y,y.hat)
[1] 0.843932
重相関係数を2乗したものです。すなわち重相関係数をRとすると,決定係数R2は0.8439322=0.7122212となります。
決定係数は説明変数の数が増えるとその値が高くなってしまいます。つまり,説明変数が少ないときは決定係数で判断してもさほど問題はありませんが,説明変数の数が多い場合は自由度調整済み決定係数で判断すべきなのです。
なお,決定係数でも自由度調整済み決定係数でも0〜1の値をとり,1に近いほど回帰方程式が資料をよく説明できているといえます。また一応の目安としては0.5〜0.8くらいならある程度よい精度といえ,0.8以上あれば良い精度であるといえます。
回帰分析には多重共線性と呼ばれる問題があります。これは似たような変量を説明変数として扱うと分析結果に悪影響を及ぼしてしまうことで,例えば目的変数を「売り上げ」としたときに説明変数を「建物の大きさ」と「立地条件」などといった互いの相関が高いと思われる変量を選んでしまうと起きてしまいます。つまり,回帰分析を行う前に変量間の相関係数を調べておき,相関の高い変量は(同時に)分析にかけないほうがよろしい。
Rを使えば(例えば)表1あるいは表2のデータ(どちらのデータでも相関係数は変わりません)の変量間の相関係数と散布図を一気に出力することができます。
> gen.data
[,1] [,2] [,3] [,4] [,5]
[1,] 897 5 50 2 3
[2,] 778 4 40 2 3
[3,] 823 3 45 3 4
[4,] 912 2 80 4 5
[5,] 699 3 30 5 3
[6,] 790 2 65 2 2
> cor(gen.data)
[,1] [,2] [,3] [,4] [,5]
[1,] 1.0000000 0.1150705 0.7192494 -0.3081152 0.5453496
[2,] 0.1150705 1.0000000 -0.5363817 -0.4057513 -0.2208631
[3,] 0.7192494 -0.5363817 1.0000000 -0.1312227 0.3928571
[4,] -0.3081152 -0.4057513 -0.1312227 1.0000000 0.4592793
[5,] 0.5453496 -0.2208631 0.3928571 0.4592793 1.0000000
> pairs(gen.data)

分析によって得られた回帰方程式について
という2点について検討する必要があります。前者については次の帰無仮説に基づいて分散分析を行います。
H0:分析に使用した説明変数は目的変数を説明できていない
また後者についてはRのsummary()が出力するt値やp値で判断しますが,分散分析表を作るにせよsummary()を使って回帰分析の要約を出力するにしてもこちらのページでそれぞれの方法と表の見方を説明しているので詳しくはそちらを参考にしてください。
なお,後者については以下の帰無仮説を基に検定を行います。
H0:偏回帰係数は0である
この帰無仮説が棄却されれば,求めた偏回帰係数は説明変数が目的変数をうまく説明しているといえるのです。
要するに分散分析で帰無仮説が棄却されれば「全体として回帰方程式は統計学的に正しいと認められる」といえるわけです。そして各偏回帰係数についての検定ではt値またはp値をみて結果が有意であれば「その偏回帰係数は役に立つ数値である」ということがいえるわけです。逆に有意でなければその偏回帰係数は役に立たないということです。