Rとは
統計解析に特化したプログラミング言語です
https://cran.ism.ac.jp/index.html
lavaanとは
多変量解析、構造方程式モデリングを扱うためのRのパッケージ
http://lavaan.ugent.be/index.html
インストール
環境
Rパッケージ
lavaan
Rを立ち上げてpackageをインストールします。
$ R
> install.packages("lavaan", dependencies=TRUE)
libraryを実行してバージョンが確認できれば完了です。
> library(lavaan)
This is lavaan 0.6-1
lavaan is BETA software! Please report any bugs.
semPlot
パス図を書くために必要なので、こちらもインストール。
$ R
> install.packages("semPlot")
実行
以下をRで実行して、挙動を確認してみます。
library(semPlot)
# 適当なデータセット
X <- rnorm(100)
Y <- rnorm(100)
Z <- rnorm(100)
F1 <- rnorm(1) * X + rnorm(1) * Y + rnorm(1) * X * Y
F2 <- rnorm(1) * Y + rnorm(1) * Z
DF <- data.frame(X, Y, Z, F1, F2)
# 回帰
res1 <- lm(F1 ~ X * Y, data = DF)
res2 <- lm(F2 ~ Y * Z, data = DF)
# パス図を描画
semPaths(res1 + res2, "model", "est", intercepts = FALSE)
良い感じにパス図が出てきました。
http://lavaan.ugent.be/tutorial/sem.html を参考に
SEM(構造方程式モデリング)を実行してみます。
library(lavaan)
library(semPlot)
model <- '
# 測定モデル
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
# 回帰
dem60 ~ ind60
dem65 ~ ind60 + dem60
# 因子相関
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8
'
fit <- sem(model, data=PoliticalDemocracy)
semPaths(fit, "model", "est", intercepts = FALSE)
それっぽい図ができあがりましたね。
semPlotのインストール時に依存しているglasso
, OpenMx
がビルドできない...
エラーを見てみるとgfortran
の実行で失敗していたので、以下で解決。
$ brew cask install gfortran
まとめ
- Rは統計解析用の便利な言語だよ
- lavaanはSEMに使うよ
- semPlotはSEMを良い感じに描画してくれるよ
SEMは大学以来?なので構造方程式モデリングについてはもっと深めたいと思います。
参考記事