井出草平の研究ノート

lavaanで順序尺度のSEMを行う[R]

相関係数をピアソンではなく、ポリコリック相関係数を使う方法。例として簡単な確証的因子分析を行う。

サンプルデータの作成

library(lavaan)
data.con <- HolzingerSwineford1939[,c("x1","x2","x3")] # visualのデータのみ使用
##  3カテゴリにしてカテゴリカルデータを作成。順序尺度。
data.cat <- as.data.frame( lapply(d1, cut, 3, labels = FALSE) ) 

データの詳細はこちら
連続変数はdata.conに格納、カテゴリカル変数はdata.catに格納。

連続変数で確証的因子分析

model <- 'visual =~ x1 + x2 + x3'
con.fit <- sem(model, data = data.con)
summary(con.fit) 

結果。

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  visual =~                                           
    x1                1.000                           
    x2                0.778    0.141    5.532    0.000
    x3                1.107    0.214    5.173    0.000

カテゴリカル変数(順序尺度)で確証的因子分析

ordered = TRUEを入れればよい。

cat.fit <- sem(model, data = data.cat, ordered = TRUE)
summary(cat.fit) 

結果。

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  visual =~                                           
    x1                1.000                           
    x2                0.598    0.138    4.322    0.000
    x3                0.958    0.229    4.175    0.000