2013年1月14日月曜日

共分散構造分析[R編]ってないの?[第3章7]その2

しばらく放置していましたが、約3ヶ月ぶりに再開です。

「共分散構造分析[Amos編]-構造方程式モデリング-」の65頁、図3.22の確認的因子分析です。
因子からのパスを1、誤差分散を0に制約する方法という前者の方法です。
test2.mdl <- specifyModel()
英語学力 -> 英語, NA, 1
学力 -> 国語, p5, NA
学力 -> 地理, p4, NA
学力 -> 数学, p3, NA
学力 -> 化学, p2, NA
学力 -> 物理, p1, NA
学力 <-> 学力, NA, 1
英語学力 <-> 英語学力, NA, 1
英語学力 <-> 学力, c1, NA
国語 <-> 国語, e1, NA
地理 <-> 地理, e2, NA
英語 <-> 英語, NA, 0
数学 <-> 数学, e4, NA
化学 <-> 化学, e5, NA
物理 <-> 物理, e6, NA

summary( test2.sem <- sem( test2.mdl, S = cor( test ), N = nrow( test )))

チラと適合度指標を表示すると
Model Chisquare = 26.604 Df = 10 Pr(>Chisq) = 0.003
GFI = 0.912
AGFI = 0.816
RMSEA = 0.130 90% CI: (0.071, 0.190)
CFI = 0.681
SEMではAGFIを0.9以上とか、RMSEAを0.05以下という基準が受け入れられているようですが、この因子分析は、少し当てはまりが良くないようにみえます。
以前あるセミナーで、因子分析も適合度を確認するので、学生さんが論文を書けなくて大変なんだということを聞きました。実際、アンケートで集めたデータで因子分析してみると、まずいなって思うことがあります。ていうか、ほとんどいつも悲惨。コストかけて、質の悪いデータを集めたと告白すべきでしょうか。

さて、信頼度係数ρ=0.81ということにして、sqrt(ρ)*Sx=9.981をパス、(1-ρ)*Sx^2=23.37を誤差分散として用いて計算してみます。図3.23のパス係数を出すためには、sem()のSオプションには共分散を用いる必要があるようです。(または、data=testとする。)
反対に図3.22の場合は、Sオプションに共分散行列(cov(test))や生データを与えると、 標準化解は図3.22と一致しません。なぜだかはわかりません。教えてください。
test3.mdl <- specifyModel()
英語学力 -> 英語, NA, 9.981
学力 -> 国語, p5, NA
学力 -> 地理, p4, NA
学力 -> 数学, p3, NA
学力 -> 化学, p2, NA
学力 -> 物理, p1, NA
学力 <-> 学力, NA, 1
英語学力 <-> 英語学力, NA, 1
英語学力 <-> 学力, c1, NA
国語 <-> 国語, e1, NA
地理 <-> 地理, e2, NA
英語 <-> 英語, NA, 23.37
数学 <-> 数学, e4, NA
化学 <-> 化学, e5, NA
物理 <-> 物理, e6, NA
 
summary( test2.sem <- sem( test2.mdl, S = cov( test ), N = nrow( test )))
stdCoef( test3.sem )

0 件のコメント:

コメントを投稿