lavaanパッケージのチュートリアルで参考になった部分

構造方程式モデリングを行うためのRパッケージにlavaanがあります。最近使った際に、色々引っかかった際に参考にした情報↓

[lavaanチュートリアル](http://www.ec.kansai-u.ac.jp/user/arakit/documents/lavaanTutorial%20June%2013,%202014.pdf)

[The lavaan tutorial](http://faculty.washington.edu/matsueda/courses/529/Readings/Lavaan%20tutorial.pdf)を関西大学荒木先生が訳してくれたもの。

個人的にとても役に立った部分を紹介します。
引用なので適宜解説を入れつつ。

#1.関係式の表現
「意味」を入れてくれているので間違わなくなった。
特に=~と~の区別がつかなくなることがあるので。

>４ページ目最後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/18d43245-41b4-b670-d916-8963c5ddf09b.png)


#2.因子負荷量について

>１３ページ目中段
デフォルトで、lavaanは第１指標の因子負荷量を常に1に設定する。

因子負荷量を表示させると確かに第１指標の因子負荷量が１になっている。そうしないとモデルを特定できないそうで。ちなみに引数std.lv=TRUEを指定すれば第１指標の因子負荷量が１に固定されないそうです。

#3.指標の修飾子は別々に設定可能。
例で挙げられているのは

>16ページ目中段
同じパラメータに複数の修飾子を利用したい場合，同じ式の中で複数回項をリ
ストする必要がある．例えば次のようにする．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/97c89862-2516-35af-4993-7bee797997ad.png)

y3がmyLabelという係数と、start()=初期値を自分で設定する特殊な修飾子の２つで指定されているパターンです。


#4.制約条件の設定

>17ページ目中段
一般的な非線形の等式・不等式制約の機能がはじめて（実験的に）追加された．

とのことで、制約条件を設定できるようになった。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/ccf12528-8d04-68c4-60e4-867c93b0e7e2.png)


#5.多母集団の解析
data中のgrouping対象の列を指定するだけでOK。group="～～"の部分。らくちん。

>20ページ目中段
多母集団の解析を行うには，データセット内のグループ変数の名前を適合関数の引数 group として与える必要がある．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/b91a26ff-210b-c895-cecc-9266d27b9ae0.png)



#6.カテゴリカル変数の利用
カテゴリカル変数を扱う際の使い方と注意点。特に内生変数を複数カテゴリに設定できるのがうれしい（意識高／普通／低など）
>33ページ
>外生カテゴリカル変数 
2値の外生共変量（例えば，性別）があるときは，それをダミー変数に再コード化（0/1）するだけでよい．古典的な回帰モデルで行うのと同じことである．
>内生カテゴリカル変数
内生カテゴリカル変数 lavaanのバージョン 0.5 シリーズは，2値または順序尺度（名目ではない）の内生変数を取り扱うことができる．現在，3 段階 WLS 法のみが可能である・・・2値または順序尺度データに対しては，2つの方法を選択できる．・・・

#7.入力として共分散行列を利用する場合
たびたびお世話になっています。

>35ページ上段
共分散行列の下半分の要素しか持たないとき（おそらく，教科書や論文からのデータの場合），関数getCov() を用いると，（変数名を含む）完全な共分散行列を簡単に作ることができる．


#8.欠測値
共分散行列でなくデータを入れる際には必ず悩まされる欠損値の処理も考えてくれているのがうれしい。

>38ページ上段
　データに欠測値があるとき，デフォルトでの処理はリスト単位での削除となる．欠測のメカニズムが MCAR（無作為に完全に欠測する）または MAR（無作為に欠測する）のとき，lavaanパッケージはケース単位（または ‘完全情報’）最尤推定を行う．モデル当てはめの関数の呼び出しにおいて，引数missing="ML"を用いて，この特性をオンにすることができる．制約のない（h1）モデルが自動的に推定され，全ての一般の当てはめの尺度が利用可能である．

#9.ブートストラッピング
モデルが頑健になるんでしょうか？これは要検討。

>38ページ目上段
lavaanでブートストラップを利用する方法は 2 つある．モデルを当てはめるとき，se="bootstrap"または test="bootstrap"を指定するか（この場合，ブートストラップ標準誤差またはブートストラップに基づく p 値を得る），bootstrapLavaan() 関数を用いるかである．

#10.修正インデックス
これが今回一番参考になったもの。モデル作成後の出力で、Semplotを使えばなんとなくパス図が出力されるが、微妙な出力になることが多い（特に変数が日本語の時）。
そこで、graphvizなどできれいに図を作ろうと思うが、普通の出力ではテキストファイルなので扱いづらい。
data.frameで返してくれるので加工しやすい！

>39ページ目
>修正インデックスは，summary() の呼び出しにおいて modindices=TRUE 引数を加えるか，直接modindices() 関数を利用することによって要求することができる．関数 modindices() は，データフレームを返すので，それをソートしたり，必要な情報を抽出したりすることができる．例えば，因子負荷量に関する修正インデックスだけを参照するには，次のようにすればよい：
>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/1dbe9aba-ef8a-0fe2-0d45-20735fc32263.png)



#11.parameterEstimates関数：モデルからの指標抽出。
これもモデルの出力結果をデータフレームとして返してくれる。
特定の部分を抜き出したい場合に使える。

>40ページ目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/99a9e837-bee0-2d4f-ffec-e2bddd0b3a3e.png)



#12.fitMeasures関数
モデル作成後の欲しい指標のみ出力してくれる。

>43ページ目
　関数 fitMeasures() は，lavaanにより計算された適合の測度すべてを名前付き数値ベクトルとして返す．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/fad9f786-e217-781d-cc62-5c253812783c.png)




以上参考になった内容の抜粋。


lavaanでは[latent Change Score Modeling](https://quantdev.ssri.psu.edu/sites/qdev/files/Chap_16_Latent_Change_Score.html)という時系列の分析？ができるようなのでこちらも身につけたいと思います。