偏相関と重回帰の検定統計量 t 値と p 値は同じ
井口豊(生物科学研究所,長野県岡谷市)
最終更新: 2024 年 1 月 19 日
1. はじめに
タイトル名が紛らわしくなってしまったが,偏相関分析の偏相関係数の検定統計量 t と重回帰分析の偏回帰係数の検定統計量 t は同じ数値であり,それぞれの有意確率 p も同じである,という意味である。当然だが,計算に使われる自由度も等しい。なお,ここでいう相関
は, Pearson 相関
のことである。
意外と知られていないようだが,両者とも,ある変数が別の変数を「調整」している,という意味で同様な手法なので,同じ統計量や有意確率が出ても不思議ではない。
ここでは,統計ソフト R とそのパッケージ ppcor を利用する。
2. 偏相関係数と偏回帰係数の検定の比較
以下のような 5 変数 x1, x2, x3, x4, x5 の仮想的な乱数標本データセットを考える。それぞれ,大きさ n は 20 とする。
その上で,以下のようなモデルを考えて計算する。
- x3, x4, x5 を統制変数として, x1 と x2 の偏相関分析で偏相関係数の t 値と p 値を求める。
- x3, x4, x5 を統制変数として, x1 を従属変数, x2 を独立変数とした重回帰分析で,独立変数 x2 の偏回帰係数の t 値と p 値を求める。
スクリプトは以下のとおりである。
#############
n <- 20
set.seed(1)
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
x4 <- rnorm(n)
x5 <- rnorm(n)
# 偏相関係数 検定統計量 t と 有意確率 p
library(ppcor)
pcor.test(x1, x2, cbind(x3, x4, x5))[2:3]
# 重回帰の偏回帰係数 検定統計量 t と 有意確率 p
summary(lm(x1 ~ x2 + x3 + x4 + x5))$coef[2, 3:4]
################
結果は以下の通りである。
################################################
> summary(lm(x1 ~ x2 + x3 + x4 + x5))$coef[2, 3:4]
t value Pr(>|t|)
-0.2671884 0.7929627
> pcor.test(x1, x2, cbind(x3, x4, x5))[2:3]
p.value statistic
0.7929627 -0.2671884
################################################
両分析で,全く同じ t 値と p 値が得られることが分かる。
実は, pcor.test のこれらの計算法は,以前は違っていた。以前のバージョンは,奥村さんの解説参照。
2. 偏相関係数と偏回帰係数の検定の自由度
どちらの方法で計算しても,同じ t 値と p 値が得られるが,自由度の説明が異なる場合があるので注意が必要だ。
偏相関係数の検定の場合は,自由度 ν が以下のように説明される。
\begin{eqnarray} \nu=n-c-2 \end{eqnarray}ここで n は,各変数のデータ数(欠損が無いとして)であり,上記の計算では, 20 である。 c は統制変数(control variable)の個数であり,上記の計算では, x3, x4, x5 の合計 3 個である。したがって,偏相関係数の検定の自由度は以下のようになる。
\begin{array}{rcl} \nu&=&20-3-2\\ &=&15 \end{array}一方で,重回帰分析の偏回帰係数の検定の場合は,自由度 ν が以下のように説明される。
\begin{eqnarray} \nu=n-p-1 \end{eqnarray}ここで n は,偏相関係数の検定と同じく,各変数のデータ数(欠損が無いとして)であり,上記の計算では, 20 である。 p は偏回帰係数(パラメータ parameter とも呼ばれる)の個数であり,上記の計算では, x2, x3, x4, x5 の合計 4 個である。したがって,偏回帰係数の検定の自由度は以下のようになる。
\begin{array}{rcl} \nu&=&20-4-1\\ &=&15 \end{array}つまり,どちらの方法でも,同じ自由度になるのである。 R を使って,上記の結果で t 値から p を求めるには以下のようにする
#############
2 * pt(0.2671884, df = 15, lower.tail = FALSE)
#############
p 値が,上記の結果と一致することが確認できる。
################################################
> 2 * pt(0.2671884, df = 15, lower.tail = FALSE)
[1] 0.7929627
################################################
なお,単回帰式における標準回帰係数は,相関係数(Pearson 相関係数)に等しくなる,ということも,知っておくべきである。