階層的重回帰分析は、ステップ1からステップ2へとステップごとに関心のある変数を投入していき、分散説明率が統計的に有意に増加することを検定することで、その変数の重要性を分析する手法である。
たとえば、大事な人に会うときや人前で話をするとき、誰しも不安を感じやすい(状態不安という)。そのときの不安の程度は、協調性や誠実さといったパーソナリティ特性によることが考えられるが、研究として関心があるのはこれらの交互作用効果だとする(“誠実さが高く協調性が高い人は周囲に合わせようとするため、不安を感じやすい”とか)。その場合は、ステップ1では説明変数として“協調性”と“誠実さ”を入れ、ステップ2ではさらに“協調性”と“誠実さ”の交互作用項を入れて分析する。ただし、各変数と交互作用項の相関による多重共線性の問題が考えられるので中心化処理(平均値を引く)を忘れずに行う。
分析
Rで分析する場合には以下のコードを用いる。
data <- XXX #分析したいデータを入れる
y <- data$v1 #応答変数: 状態不安
x1 <- data$v2 - mean(data$v2) #説明変数(中心化): 協調性
x2 <- data$v3 - mean(data$v3) #説明変数(中心化): 誠実さ
c1 <- data$v4 - mean(data$v4) #共変量(中心化): 神経症傾向
#第1ステップ
step1 <- lm(y ~ x1 + x2 + c1)
summary(step1)
#第2ステップ
step2 <- lm(y ~ x1 + x2 + x1:x2 + c1)
summary(step2)
#平方和の変化量の検定
anova(step1, step2)
今回は、データセットとしてpsychパッケージに入っている“epi.bfi”を使用する。このデータセットにはアイゼンク性格検査(EPI)とBig 5尺度、ベック抑うつ性尺度、特性‐状態不安の得点が231人分入っている。
実際に分析を行う際には、説明変数の数や共変量の有無は適宜調整する。
library(psych)
data <- epi.bfi #分析したいデータを入れる
y <- data$stateanx #応答変数: 状態不安
x1 <- data$bfcon - mean(data$bfcon) #説明変数(中心化): 協調性
x2 <- data$bfagree - mean(data$bfagree) #説明変数(中心化): 誠実さ
c1 <- data$bfneur - mean(data$bfneur) #共変量(中心化): 神経症傾向
- 第1ステップ
step1 <- lm(y ~ x1 + x2 + c1)
summary(step1)
##
## Call:
## lm(formula = y ~ x1 + x2 + c1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.622 -6.996 -1.325 5.394 28.091
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 39.84848 0.64525 61.757 < 2e-16 ***
## x1 -0.05379 0.03318 -1.621 0.1064
## x2 -0.08006 0.04001 -2.001 0.0466 *
## c1 0.24162 0.02781 8.688 7.4e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.807 on 227 degrees of freedom
## Multiple R-squared: 0.2803, Adjusted R-squared: 0.2708
## F-statistic: 29.47 on 3 and 227 DF, p-value: 3.963e-16
- 第2ステップ
step2 <- lm(y ~ x1 + x2 + x1:x2 + c1)
summary(step2)
##
## Call:
## lm(formula = y ~ x1 + x2 + x1:x2 + c1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.660 -6.979 -1.415 5.140 28.356
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 39.330808 0.690941 56.924 < 2e-16 ***
## x1 -0.056617 0.032994 -1.716 0.0875 .
## x2 -0.083492 0.039784 -2.099 0.0370 *
## c1 0.234168 0.027875 8.401 4.94e-15 ***
## x1:x2 0.002911 0.001451 2.007 0.0460 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.742 on 226 degrees of freedom
## Multiple R-squared: 0.2929, Adjusted R-squared: 0.2804
## F-statistic: 23.4 on 4 and 226 DF, p-value: 3.352e-16
- 平方和の変化量の検定
anova(step1, step2)
## Analysis of Variance Table
##
## Model 1: y ~ x1 + x2 + c1
## Model 2: y ~ x1 + x2 + x1:x2 + c1
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 227 21832
## 2 226 21450 1 382.26 4.0277 0.04595 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
結果の書き方の例
状態不安得点を応答変数とした階層的重回帰分析を行った。その結果、ステップ1(R2adj = .27, F (3,227) = 29.47, p < .05)から交互作用項を含んだステップ2(R2adj = .28, F (4,226) = 23.40, p < .05)で分散説明率の有意な増加が見られた(ΔR2 = .07, ΔF (1,226) = 4.03, p < .05)。誠実さ得点と協調性得点の交互作用効果が有意であった(b* = 0.002, t (226) = 2.01, p < .05)。誠実さ得点の主効果(b* = -0.06, t (226) = 1.72, ns.)は有意ではなかった。協調性得点の主効果が有意であった(b* = -0.08, t (226) = 2.10, p < .05)。共変量の神経症傾向得点の主効果が有意であった(b* = 0.23, t (226) = 8.40, p < .05)。
単純傾斜分析
交互作用効果が有意であった場合、下位検定として単純傾斜分析を行う。
コードは以下の通り。
#下位検定
## x1が+1SDの場合のx2の効果を分析
x1high <- data$v2 - (mean(data$v2) + sd(data$v2))
simpleslope1 <- lm(y ~ x1high + x2 + x1high:x2 + c1)
summary(simpleslope1)
## x1が-1SDの場合のx2の効果を分析
x1low <- data$v2 - (mean(data$v2) - sd(data$v2))
simpleslope2 <- lm(y ~ x1low + x2 + x1low:x2 + c1)
summary(simpleslope2)
- x1が+1SDの場合のx2の効果を分析
x1high <- data$bfcon - (mean(data$bfcon) + sd(data$bfcon))
simpleslope1 <- lm(y ~ x1high + x2 + x1high:x2 + c1)
summary(simpleslope1)
##
## Call:
## lm(formula = y ~ x1high + x2 + x1high:x2 + c1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.660 -6.979 -1.415 5.140 28.356
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 38.092154 1.007153 37.822 < 2e-16 ***
## x1high -0.056617 0.032994 -1.716 0.0875 .
## x2 -0.019799 0.049815 -0.397 0.6914
## c1 0.234168 0.027875 8.401 4.94e-15 ***
## x1high:x2 0.002911 0.001451 2.007 0.0460 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.742 on 226 degrees of freedom
## Multiple R-squared: 0.2929, Adjusted R-squared: 0.2804
## F-statistic: 23.4 on 4 and 226 DF, p-value: 3.352e-16
- x1が-1SDの場合のx2の効果を分析
x1low <- data$bfcon - (mean(data$bfcon) - sd(data$bfcon))
simpleslope2 <- lm(y ~ x1low + x2 + x1low:x2 + c1)
summary(simpleslope2)
##
## Call:
## lm(formula = y ~ x1low + x2 + x1low:x2 + c1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.660 -6.979 -1.415 5.140 28.356
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 40.569461 0.991228 40.929 < 2e-16 ***
## x1low -0.056617 0.032994 -1.716 0.08754 .
## x2 -0.147186 0.051948 -2.833 0.00502 **
## c1 0.234168 0.027875 8.401 4.94e-15 ***
## x1low:x2 0.002911 0.001451 2.007 0.04595 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.742 on 226 degrees of freedom
## Multiple R-squared: 0.2929, Adjusted R-squared: 0.2804
## F-statistic: 23.4 on 4 and 226 DF, p-value: 3.352e-16
結果の書き方の例
誠実さ得点と協調性得点の交互作用効果が有意であったため、下位検定として単純傾斜分析を行った。その結果、誠実さ得点を-1SDとした場合、協調性得点の負の効果が確認された(b* = -0.15, t (226) = 2.833, p < .05)。誠実さ得点を+1SDとした場合、協調性得点の有意な効果は認められなかった(b* = -0.02, t (226) = 0.40, ns.)。
あらら、なんだか変な結果に・・・