年齢 男性ダミー 英語話者ダミー 年齢 1 0.013

例題
car パッケージの SLID データを使い、年齢、性別、言語を外生変数1、賃金と学歴を内生変数として
完全モデル2のパス解析をせよ
年齢と言語が、学歴を媒介して賃金に及ぼす効果を推定せよ
回答例
学歴と賃金の間には、学歴が賃金に影響を及ぼすという因果関係が想定できるから、年齢、性別、言語
を外生変数とすると、これらの変数の因果関係は図1のようにあらわせる。
e
年齢
-0.097***
0.991
教育年数
0.013
0.354***
-0.023
-0.105***
0.394***
男性
0.220***
0.088***
-0.010
e
0.839
賃金
-0.004
英語
図 1 パス図
*** p < .001
表 1 外生変数間の相関係数
年齢
年齢
1
男性ダミー
0.013
英語話者ダミー
-0.105***
男性ダミー
0.013
1
-0.01
英語話者ダミー
-0.105***
-0.01
1
*** p < .001
外生変数間の相関係数は表 1 のとおりであり、内生変数を被説明変数とした回帰分析の結果(すべて標
準化係数)は表 2 のとおりなので、パス係数は図 1 のようになる。教育年数を媒介した年齢から賃金へ
の間接効果は-0.097×0.354=-0.034 となり、英語から賃金への教育年数を媒介した効果は 0.088×
0.354=0.031 である。年齢の場合、わずかながら直接効果とは反対の向きの間接効果があることがわか
る。英語の場合、直接効果はほとんど0であるが、間接効果はほんの少しあった。
1
外生変数とはパス解析の中で被説明変数になっていない変数のこと。被説明変数になっている変数は
内生変数という。
2 完全モデルとは、すべての変数の間に因果関係または相関が仮定されているモデルのこと。不完全モ
デルとは、いずれかのパスや相関を 0 に固定したモデルのこと。
1
表 2 内生変数の回帰分析の結果
===================================
教育年数
賃金
----------------------------------(Intercept)
0.000
0.000
(0.016) (0.013)
年齢
-0.097*** 0.394***
(0.016) (0.013)
男性ダミー
-0.023
0.220***
(0.016) (0.013)
英語話者ダミー 0.088*** -0.004
(0.016) (0.013)
教育年数
0.354***
(0.013)
----------------------------------adj. R-squared
0.019
0.297
sigma
0.991
0.839
N
3987
3987
===================================
係数はすべて標準化係数
*** p < .001
### 以下は分析のためのスクリプト ###
library(car)
head(SLID)
# すべての変数を Z 得点に変換するため、カテゴリカル変数からダミー変数を作る
male <- SLID$sex=="Male" # Male の時 TRUE 、 それいがいのとき FALSE をとる論理変数ができる
male[1:10] # 新しく作った変数の中身を少しだけ見てみる
english <- SLID$language=="English"
# もともとあった連続変数と新しく作ったダミー変数で新しいデータ・フレームを作る
# 今日の授業で教えたやり方とは違っています
data1 <- data.frame(SLID[,1:3], male, english) # 使う変数だけのデータ・フレームを作る
head(data1)
data1 <- na.omit(data1)
data1 <- scale(data1) # Z 得点に変換する
data1 <- as.data.frame(data1) # scale を使うとデータ・フレーム属性を失うようなので、もう一度デー
タ・フレームに戻す
summary(data1) # すべての変数が平均 0、標準偏差 1 になっていることを確認
sapply(data1, sd)
# 相関係数とその検定
cor.test(~age + male, data = data1)
cor.test(~age + english, data = data1)
cor.test(~english + male, data = data1)
# 回帰分析
lm1 <- lm(education ~ age + male + english, data=data1)
lm2 <- lm(wages ~. , data=data1)
library(memisc)
mtable(lm1, lm2)
# 間接効果の計算
# "年齢->教育のパス係数" × "教育->賃金のパス係数" = "年齢->教育->賃金の間接効果"
coef(lm1) # lm1 の係数だけをベクトルとしてとりだす
coef(lm1)["age"] * coef(lm2)["education"] # 年齢の教育経由の間接効果
coef(lm1)["english"] * coef(lm2)["education"] # 言語の教育経由の間接効果
2