単回帰分析と重回帰分析の係数
単回帰分析・重回帰分析・共分散構造分析
重回帰分析の解釈の問題を考えて、まず、単回帰分析を薦める意見がある。しかし、単回帰分析の解釈も注意が必要である。
単回帰分析の回帰係数と重回帰分析の偏回帰係数が矛盾することがある。この単回帰分析と重回帰分析の係数の矛盾は、共分散構造分析を行うと解決する。このことを示すために仮想データを作成して、分析を行ってみた。
作成した仮想データを図1に示す。

図1
データファイルとプログラムファイルは、圧縮ファイルSampleFiles.zipとして用意したので、自由にダウンロード・利用されたい。
図1のデータは、変数CaseIDはデータの識別用である。2列目からの変数Performance、Ability、Tiredがデータの変数で、Performanceは作業成績、Abilityは能力、Tiredは作業に対する飽きを表す。能力が高いと作業成績は上がるが、作業に対する飽きも強く、飽きは作業成績の低下をもたらすという想定でデータが作られている。
このデータに対して、まず、作業成績を従属変数、能力を独立変数として単回帰分析を行うと、式(1)の結果を得る。
![]()
プログラムとデータは圧縮ファイルSampleFiles.zipにあるが、プログラムの使用法は<岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版>を参照されたい。
作業成績を従属変数、能力と飽きを独立変数として重回帰分析を行うと、式(2)の結果を得る。
![]()
式(1)では能力の係数は「
」で負の値であり、式(2)では能力の係数は「
」で正の値である。式(1)に従えば、能力が上がれば作業成績は落ちることになるが、式(2)に従えば、能力が上がれば作業成績も上がることになる、この矛盾を解くために、能力から飽きへのパスを引き(単回帰モデルの追加)、分析を行う(共分散構造分析)。共分散構造分析については、<岡本安晴「心理学データ分析と測定」勁草書房>第7章で説明している。
リスト1に、共分散構造分析のためのStanスクリプトを示す。
リスト1 共分散構造分析のためのStanスクリプト
data {
    int N;
    real P[N];
    real A[N];
    real T[N];
}
parameters {
    real<lower = 0.0>
sgm_p;
    real<lower = 0.0>
sgm_t;
    real b_p;
    real b_t;
    real a_p;
    real a_t;
    real a_tp;
}
model {
    sgm_p ~ exponential(0.0001);
    sgm_t ~ exponential(0.0001);
    b_p ~ normal(0.0, 10000);
    b_t ~ normal(0.0, 10000);
    a_p ~ normal(0.0, 10000);
    a_t ~ normal(0.0, 10000);
    a_tp ~ normal(0.0, 10000);
    for (i in1:N) {
        T[i]
~ normal(b_t + a_t * A[i], sgm_t);
        P[i]
~ normal(b_p + a_p * A[i] + a_tp * T[i], sgm_p);
    }
}
リスト1のStanスクリプトで分析を行うと、以下の結果を得る。
        mean
se_mean     sd   2.5%    25%    50%    75%  97.5%  n_eff   Rhat
sgm_p  13.75    0.01   1.01   11.9  13.04   13.7   14.4 
15.87   4600    1.0
sgm_t  13.58    0.02   0.98  11.85  12.88  13.52  14.21  15.61   4143    1.0
b_p    74.85    0.07   4.13  66.79  72.08  74.89  77.57  83.12   3902    1.0
b_t    15.27    0.07   3.82   7.68  12.82  15.21  17.77  22.82   2956    1.0
a_p     0.28  1.7e-3    0.1   0.08   0.21   0.28   0.35   0.48   3508    1.0
a_t     0.67  1.4e-3   0.07   0.53   0.62   0.67   0.72   0.81   2876    1.0
a_tp   -0.73  1.8e-3    0.1  -0.93   -0.8  -0.73  -0.66  -0.53   3306    1.0
lp__  -616.2    0.05   1.87 -620.7 -617.2 -615.9 -614.8
-613.5   1699    1.0
スクリプトファイルとデータファイルは、圧縮ファイルSampleFiles.zipにあるが、プログラムの使い方は上の回帰分析のプログラムと同じである。
上の結果を図示すると、図2のようになる。

図2
能力から作業成績、および飽きから作業成績へのパスの係数は重回帰分析の結果と一致している。
能力の値が1増えたときの作業成績への影響は0.28であるが、能力が1増えるとそれに応じて飽きの値は0.67増え、飽きの0.67増加に応じて作業成績は
だけ変化する。したがって、能力が1増えたときの作業成績への影響は、能力から作業成績への直接の効果と、飽きを経由しての効果の和、すなわち
![]()
となる。式(3)の値は、式(1)の単回帰係数の値に一致する。
注 意
上の分析で用いられたデータは、デモンストレーション用にシミュレーションで作成された人工データである。調査法などで収集された実際のデータの場合は、関係する変数が全て含まれているとは限らないこと、共分散構造分析のモデル構成において全ての関係がモデル化されているとは限らないことに注意する必要がある。