例題 図 1 を見ると、言語の成績が高いほど、そして親 # MASS パッケージの nlschools データを使い、 の SES が高いほど子供の IQ は高い傾向がみられ どのような特性を持った子供の IQ が高いか、回 る。さらに重回帰分析でこれらの要因の効果を推 帰分析を使って明らかにしなさい。ただしカテゴ 定したのが、表 1 のモデル 2 である。モデル 2 を リカルな変数は使わなくてよい。 見ると、親の SES と言語の成績は 0.1%水準で正 また親の SES の IQ に対する総効果を、直接効果、 の有意な効果がみられる。すなわち、両者の効果 国語の試験を媒介にした間接効果、 はモデル中のその他変数の効果をコントロール クラスのサイズを媒介にした間接効果、の 3 つに しても有意であることがわかる。 次に、親の SES の総効果を、直接効果と間接効 分割しなさい。 果に分割した。その結果が表 2 である。表 2 を見 ると、親の SES の総効果は 0.060 であるが、その 例題の解答例 うち 64%は言語の成績を媒介としているが、36% 子供の IQ に及ぼす親の社会経済的地位の効果 は直接的なもので、言語の成績とは関係ないこと 太郎丸 博 がわかる。 親の社会経済的地位が子供の IQ と相関してい car パッケージの nlschools には、子供の IQ ることは広く知られているが、言語の成績以外に のほかにいくつかの諸変数が含まれており、この も、別の科目の成績や一般的な常識などを媒介と うち課題にあるカテゴリカルな変数を除くと、親 している部分もあるだろうし、もしかしたら、階 の社会経済的地位 (Socio-Economic Status, 以 級文化のようなものが IQ を高めているのかもし 下では SES と省略)(SES)、子供の言語の試験の れない。 成績(lang)、クラスの人数 (GS) の三つがある。 20 30 40 nlschools$lang 50 18 14 12 10 6 4 4 10 8 jitter(nlschools$IQ) 16 18 16 14 12 10 6 8 jitter(nlschools$IQ) 14 12 10 8 4 6 jitter(nlschools$IQ) 16 18 これらと子供の IQ の散布図が図 1 である。 10 15 20 25 30 35 40 nlschools$GS 10 20 30 nlschools$SES 図 1 子供の IQ と、言語の試験、クラスの人数、親の SES の散布図 表 1 回帰分析の結果 =========================================================== 1 40 50 モデル 1 モデル 2 モデル 3 モデル 4 ----------------------------------------------------------目的変数 IQ IQ 言語の成績 クラスの人数 ----------------------------------------------------------(Intercept) 10.163*** 5.791*** 32.778*** 25.006*** (0.112) (0.222) (0.482) (0.326) SES 0.060*** 0.022*** 0.293*** 0.054*** (0.004) (0.003) (0.016) (0.011) 言語の成績 0.131*** (0.004) クラスの人数 0.003 (0.006) ----------------------------------------------------------R-squared 0.100 0.383 0.126 0.011 N 2287 2287 2287 2287 =========================================================== 表 2 親の SES が子供の IQ におよぼす効果の分割 総効果 直接効果 言語の成績を媒 介した間接効果 クラス人数を媒 介した間接効果 係数 0.060 0.022 0.038 0.000 割合(%) 100% 36% 64% 0% 0.2933 * 0.130811, # lang を媒介にした間接効果 0.05421 * 0.003368) # GS を媒介にした間接効果 round(x, 3) sum(x) # 計算が合っているか検算 # 効果の割合の計算 round(x/sum(x), 2) 問題と計算のためのスクリプト # MASS パッケージを読み込む library(MASS) head(nlschools) #散布図を作る par(mfrow=c(1,3)) # 図を 1 行 3 列にならべてプロ ットできるよう描画領域を分割 plot(nlschools$lang, jitter(nlschools$IQ)) # jitter(ベ クトル)は、点が重ならないようにずらすのに使う plot(nlschools$GS, jitter(nlschools$IQ)) plot(nlschools$SES, jitter(nlschools$IQ)) library(memisc) mtable(lm1, lm2, lm3, lm4) # state.x77 のデータを使い、どのような特性を持 った州で殺人発生率が高いのか、重回帰分析しな # 単回帰 lm1 <- lm(IQ ~ SES, data=nlschools) summary(lm1) # 重回帰 lm2 <- lm(IQ ~ SES + lang + GS, data=nlschools) summary(lm2) さい。また、その分析結果から、高校卒業率が殺 ### SES の直接効果と間接効果の計算 ### # まず SES に、lang と GS を回帰させる lm3 <- lm(lang ~ SES, data=nlschools) lm4 <- lm(GS ~ SES, data=nlschools) lm3 lm4 # 整理すると 0.6008 # 総効果 x <- c(0.021535, # 直接効果 # state.x77 はデータフレームではなく行列なのでデ ータフレームに変換して d0 と名付ける d0 <- as.data.frame(state.x77) head(d0) # 変数名の途中にスペースが入っていると使いにくい ので 4 番目と 6 番目の変数名をつけかえる names(d0)[c(4, 6)] <- c("LifeExp", "HsGrad") 人の発生率に及ぼす総効果を、収入、文盲率、平 均余命を媒介した効果と直接効果に分割して検 討しなさい。 2
© Copyright 2024 ExpyDoc