第156回: 「統計の実務」16 回帰分析《その2:重回帰分析 前編》
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「回帰分析《その1:単回帰分析》」について書きました。
内容としては、「2つの変数の因果関係が直線で表せるときに、その回帰線の傾きとY軸の切片をRコマンダーで計算しよう」という話でした。
今回は「重回帰分析 前編」です。
単(単数)があれば、重(複数)があるということで、何が1つで何が複数なのか、そのあたりから解きほぐしたいと思います。
なお「重回帰分析」は、「単回帰分析」と同じ「回帰分析」の一種ですから、まずは、計画を立てるときの見積もりに使います。たとえば、過去案件の実績値をベースラインとして保存しておき、そのデータから「開発規模と成員数の2つの変数を使用してバグ数を見積もる」ということをします。
また、「重回帰分析」のもう一つの役割は、どの要因が結果に効いているかを統計的に示すことです。たとえば、ラーメン屋さんの売上高に寄与する要因として、「品揃え」、「接客」、「価格」、「営業時間」、「味」の5つの要素があるとして、どの要素の改善を行うと最も効果があるのか、といったことが分かります。
効果が期待できる箇所に集中して改善投資したいですよね。
今回のnoteでは、前者の見積もりに使う方法を説明します。後者のどの要因の寄与が大きいか?については次回説明します。
≡ 目的変数と説明変数
推測統計をするうえで、「目的変数」と「説明変数」の理解は必須です。実は、前回、この用語は説明もなしに何度も現れています。
一般的な言葉に直せば、開発規模が説明変数、バグ数が目的変数です。
回帰分析は、相関が高い変数間の関係式を作り、説明変数から目的変数を予測する方法です。
目的変数(Y軸)に「花びら幅」、説明変数(X軸)に「花びら」を選びOKボタンを押します。
目的・説明・変数ともよく知っている単語ですから、目的変数と説明変数について専門用語とは感じなかった人がいたかもしれません。
それで良いのですが、「目的変数」と「説明変数」は、人によって言い方が違うので、同義語を知っておく必要があります。
目的変数(response variable)の同義語には、従属変数(dependent variable)があり、説明変数(explanatory variable)の同義語には、独立変数(independent variable)があります。
同義語といっても、必ず「目的変数(Y軸) ー 説明変数(X軸)」、「従属変数(Y軸) ー 独立変数(X軸)」の対で使われます。
「目的変数 ー 独立変数」のペアでは使われません。(たまに使う人がいらっしゃいますが、意味的に対応していません)
この辺の様子は、組み合わせテストの
・ 因子、パラメータ、P、クラシフィケーション
・ 水準、バリュー、V、クラス
と似ていますね。
ほかにも、目的変数は、「応答変数(response variable)」、「反応変数(response variable)」、「結果変数(outcome variable)」、「基準変数(criterion variable)」、「Y」と呼ばれることもあります。
説明変数についても、「予測変数(predictor variable)」、「X」と呼ばれることもあります。
たくさんあって嫌になりますが、他の人の発表を理解するためには知っておく必要があります。
おすすめのセット(対)は、「目的変数」と「説明変数」です。
ダイエットの回帰式を作るのなら「体重が目的変数」で、「“摂取カロリー”や“運動量”が説明変数」です。ダイエットの目的である体重(結果)の変化を説明できる摂取カロリーや運動量(どちらも要因)というイメージが用語から湧きやすいからです。
なれてくると「Y ー X」もシンプルでグラフのイメージも沸き、わかりやすいので良いと思います。
私は「このYを制御できるXを見つけよう!」といった言いまわしが好きです。
≡ 重回帰分析
重回帰分析そのものについては、書くことがほとんどありません。1つの目的変数に対して複数の説明変数があるときに使うというだけです。
Rコマンダーの操作も、結果の見方も単回帰分析と変わりません。(次回はもう一手間かかりますが)
※ 誤差の分布(正規分布か否か)を考えるとか、「一般化線形モデル」を使うことも重回帰分析と呼んでいる人もいらっしゃいます。
それはそれで、面白い数学(統計学?)と思うのですが、しばらくは知らなくても大丈夫そうです。(それよりも良いデータを増やそう!)
それから単回帰分析は低級で、重回帰分析が高級なものと思っている人もいらっしゃいます。計算が大変だった昔の名残かなあ?
複雑なものをありがたがる傾向がありそう😅
では、例を示します。
例は、前回と全く同じ流れにしたいので、同じファイルを使います。(以下はほとんど前回のコピペです)
まずは、Rコマンダーを立ち上げて「散布図行列」の回で使った「フィッシャーのあやめ」ファイルを読み込みます。
「散布図行列」の回で「“花びら”と“花びら幅”の相関係数は、0.9629」と最も相関が高いことが分かっています。次に“花びら幅”との相関係数が大きいのは、“がく片”の0.8179です。Rコマンダーで求めた相関行列の結果を載せておきます。
Pearson correlations:
がく片 がく片幅 花びら 花びら幅
がく片 1.0000 -0.1176 0.8718 0.8179
がく片幅 -0.1176 1.0000 -0.4284 -0.3661
花びら 0.8718 -0.4284 1.0000 0.9629
花びら幅 0.8179 -0.3661 0.9629 1.0000そこで、目的変数を“花びら幅”、説明変数を“花びら”と、“がく片”の2つで多重回帰式を作ってみます。まずは、メニューから、
[統計量]>[モデルへの適合]>[線形回帰]
を選択します。(前回と同じメニューです)

すると以下のウィンドウが開きますので、以下のように選びます。

前回との違いは、説明変数(X軸)に「がく片」も選んでいる点だけです。
選び終わったらOKボタンを押します。以下の出力が現れます。
(略)
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.008996 0.182097 -0.049 0.9607
がく片 -0.082218 0.041283 -1.992 0.0483 *
花びら 0.449376 0.019365 23.205 <2e-16 ***
(略)前回の結果と比べてみましょう。以下は前回です。
(略)
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.363076 0.039762 -9.131 4.7e-16 ***
花びら 0.415755 0.009582 43.387 < 2e-16 ***
(略)今回の上の方を見ると、「がく片」の行が増えています。(増やしたから当たり前です)
いま、Y軸に「花びら幅」、X軸に「花びら」と「がく片」を選びましたので、「Y=aX₁+bX₂+c」の式は、「(花びら幅) = a(花びら) + b(がく片) + c」という式です。
このaとbとcを上の出力の対応する「がく片 -0.082218」と「花びら 0.449376」と「(Intercept) -0.008996」に置き換えるだけです。
(花びら幅) = 0.449376(花びら) - 0.082218(がく片) - 0.008996
という回帰式が得られました。前回の単回帰式の
(花びら幅) = 0.415755(花びら) - 0.363076
と比べてがく片で微調整した感じです。
それぞれの行の最後にあるp値についてもチェックしてください。0.05未満なら信じて良いです。
今回は「がく片」についても0.05未満ですので多重回帰式でも良いですが、p値が大きくても多重回帰式に入れている人をよくみます。そんなことをしても手間が増えるだけで、意味がないと思います。
単回帰分析と同様にInterceptのp値は0.05以上でも気にしなくてよいです。(今回Interceptのp値は、0.9607ですが気にしなくて大丈夫です。)
有効桁については前回同様2桁にしておきましょう。(有効桁については最終報告時にすれば良くて、途中では丸めません)
ここで一つ、みなさんに謝らないといけないことがあります。
それは、今回説明変数とした、「花びら」と「がく片」の間の相関係数についてです。「花びら」と「がく片」の間の相関係数は、相関行列の出力結果を見ると、0.8718もあります。重回帰式を求めるときに説明変数間に相関関係があると結果が正しく求まりません。
ですから、「花びら」と「がく片」を同時に説明変数にしてはいけません。
詳しくは「マルチコ」(multicollinearity)でググってみてください。マルチコは日本語で”多重共線性”といいますが、みんなマルチコと言います。
こちらは、全体のp値も下がりますのでとてもやりがちなミスです。
本当は、説明変数のX₁、X₂、、、は互いに独立しているもの(相関係数が0.2未満のもの)を使用したいのですが、そういったデータで公開できるものを持ち合わせていません。
次回も本当なら「ラーメン屋の売上データ、要因付き」を使うと良いとは思うのですが、たぶん見つからないので、今回のように手順を示すところまでとなりそうです。
≡ おわりに
今回は、回帰分析の2回目として「重回帰分析 前編」の話をしました。目的変数と説明変数の紹介のほうが長かったですが。
「マルチコ」には注意してください。しつこいですが大切なことなので。
次回は、「重回帰分析 後編」として、どの説明変数が効いているのかを調べる方法について書きます。マーケットリサーチなどで大活躍しているやつです。
次々回で「回帰分析」は終わる予定です。残りは「クロス集計とカイ二乗検定」→「管理図とEVM」→「確率分布」となります。
