検証的(確証的/確認的)因子分析:confirmatory factor analysis(CFA)
Stata 13.1での検証的(確証的/確認的)因子分析について,共分散構造分析
を用いた分析の仕方をまとめます。主には
のコマンドで参照されるマニュアルの記述を参考にしています。
データは,現実に扱うデータのタイプによく合致していた
Rのパッケージpsychのbfiデータを使います。
RのデータセットをStataデータセットに変換するには↓参照
EZRでパッケージ中のRデータセットをStataデータセットに変換する
■bfiデータの説明
まず,Rにpsychパッケージが入っていることが前提ですが,
Rの方で
library(psych)
help(bfi)
と書いて実行すると説明が読めます。
とあり,
国際パーソナリティ項目プールからの2800名分のデータ。
それぞれの因子に対応した質問項目A1からA5,C1からC5,E1からE5,N1からN5,O1からO5
の変数に加え,性,教育歴,年齢の変数もあり
といった内容になっています。
想定される因子は,5項目ずつにあり
となっていて,因子名の頭文字が変数名と対応しています。
■解析手順
ここからはStataでのコマンドです。
まず,Stataデータセットに変換したbfiデータを開きます。
次に,記述統計を確認します。
とハイフンを使えば簡単に全項目の記述統計が見られます。
途中まで示してみると,
という感じです。
Obsがばらばらなので,適度に欠損値がみられるデータということになります。
欠損のパターンをみたい場合は,↓参照
データの欠損を数える
さて,いよいよCFAの分析に入ります。
SEM Builderを使ってお絵描き風にやってもよいのですが,
コマンドで書いた方がはるかに楽なので,次のようにします。
途中で改行してるので,do-file エディタに以下のように書きます。
エディタはメニューのアイコン押すか,doeditというコマンドで開きます
簡単に解説すると,(A1-A5 <-Agree)というのは,A1-A5の項目にAgreeという
潜在変数(因子)が対応しているという意味で,それが5因子分繰り返されています。
通常は,潜在変数の頭文字が大文字,観測変数の頭文字が小文字であることを
想定しているので,変数の頭文字が大文字だったりする場合,nocapslatent
オプションとlatentオプションをつけるみたいです。latent( )の中に因子名が
並んでいますが,ここで潜在変数を明示しています。
結果は長いので省きますが,係数の一覧等が出てくるはずです。
標準化係数を出すには,次のコマンドを実行します。
sem, standardized
次に,適合度指標一覧を算出します。
一般的には,カイ二乗値,CFI, TLI, RMSEAとその90%信頼区間,SRMRなどが分かれば
よいので,これで論文に記載する情報がとりあえずそろいます。
因子間相関については
を用いた分析の仕方をまとめます。主には
help two-factor measurement model
のコマンドで参照されるマニュアルの記述を参考にしています。
データは,現実に扱うデータのタイプによく合致していた
Rのパッケージpsychのbfiデータを使います。
RのデータセットをStataデータセットに変換するには↓参照
EZRでパッケージ中のRデータセットをStataデータセットに変換する
■bfiデータの説明
まず,Rにpsychパッケージが入っていることが前提ですが,
Rの方で
library(psych)
help(bfi)
と書いて実行すると説明が読めます。
25 Personality items representing 5 factors
5因子を表すパーソナリティに関する25項目
とあり,
国際パーソナリティ項目プールからの2800名分のデータ。
それぞれの因子に対応した質問項目A1からA5,C1からC5,E1からE5,N1からN5,O1からO5
の変数に加え,性,教育歴,年齢の変数もあり
といった内容になっています。
想定される因子は,5項目ずつにあり
Agree →A1からA5
Conscientious →C1からC5
Extraversion →E1からE5
Neuroticism →N1からN5
Openness →O1からO5
Conscientious →C1からC5
Extraversion →E1からE5
Neuroticism →N1からN5
Openness →O1からO5
となっていて,因子名の頭文字が変数名と対応しています。
■解析手順
ここからはStataでのコマンドです。
まず,Stataデータセットに変換したbfiデータを開きます。
次に,記述統計を確認します。
sum A1-O5
とハイフンを使えば簡単に全項目の記述統計が見られます。
途中まで示してみると,
Variable | Obs Mean Std. Dev. Min Max
--------------+------------------------------------------------------------------------
A1 | 2784 2.413434 1.407737 1 6
A2 | 2773 4.80238 1.17202 1 6
A3 | 2774 4.603821 1.301834 1 6
A4 | 2781 4.699748 1.479633 1 6
A5 | 2784 4.560345 1.258512 1 6
-------------+--------------------------------------------------------
C1 | 2779 4.502339 1.241347 1 6
C2 | 2776 4.369957 1.318347 1 6
C3 | 2780 4.303957 1.288552 1 6
C4 | 2774 2.553353 1.375118 1 6
C5 | 2784 3.296695 1.628542 1 6
-------------+-------------------------------------------------------------------------
という感じです。
Obsがばらばらなので,適度に欠損値がみられるデータということになります。
欠損のパターンをみたい場合は,↓参照
データの欠損を数える
さて,いよいよCFAの分析に入ります。
SEM Builderを使ってお絵描き風にやってもよいのですが,
コマンドで書いた方がはるかに楽なので,次のようにします。
途中で改行してるので,do-file エディタに以下のように書きます。
エディタはメニューのアイコン押すか,doeditというコマンドで開きます
sem (A1-A5 <- Agree)(C1-C5 <- Conscientious)(E1-E5 <- Extraversion) ///
(N1-N5 <- Neuroticism)(O1-O5 <- Openness), nocapslatent ///
latent(Agree Conscientious Extraversion Neuroticism Openness)
(N1-N5 <- Neuroticism)(O1-O5 <- Openness), nocapslatent ///
latent(Agree Conscientious Extraversion Neuroticism Openness)
簡単に解説すると,(A1-A5 <-Agree)というのは,A1-A5の項目にAgreeという
潜在変数(因子)が対応しているという意味で,それが5因子分繰り返されています。
通常は,潜在変数の頭文字が大文字,観測変数の頭文字が小文字であることを
想定しているので,変数の頭文字が大文字だったりする場合,nocapslatent
オプションとlatentオプションをつけるみたいです。latent( )の中に因子名が
並んでいますが,ここで潜在変数を明示しています。
結果は長いので省きますが,係数の一覧等が出てくるはずです。
標準化係数を出すには,次のコマンドを実行します。
sem, standardized
次に,適合度指標一覧を算出します。
estat gof, stats(all)
----------------------------------------------------------------------------
Fit statistic | Value Description
-------------------------------+------------------------------------------------------
Likelihood ratio |
chi2_ms(265) | 4165.467 model vs. saturated
p > chi2 | 0.000
chi2_bs(300) | 18222.116 baseline vs. saturated
p > chi2 | 0.000
-------------------------------+------------------------------------------------------
Population error |
RMSEA | 0.078 Root mean squared error of approximation
90% CI, lower bound | 0.076
upper bound | 0.080
pclose | 0.000 Probability RMSEA <= 0.05
-------------------------------+------------------------------------------------------
Information criteria |
AIC | 199850.476 Akaike's information criterion
BIC | 200343.316 Bayesian information criterion
-------------------------------+------------------------------------------------------
Baseline comparison |
CFI | 0.782 Comparative fit index
TLI | 0.754 Tucker-Lewis index
-------------------------------+------------------------------------------------------
Size of residuals |
SRMR | 0.073 Standardized root mean squared residual
CD | 0.999 Coefficient of determination
-----------------------------------------------------------------------------------------
一般的には,カイ二乗値,CFI, TLI, RMSEAとその90%信頼区間,SRMRなどが分かれば
よいので,これで論文に記載する情報がとりあえずそろいます。
因子間相関については
検証的(確証的/確認的)因子分析 (2)因子間相関