共分散構造分析(SEM)の概要
概要
- 昔からある分析手法の一つ
- pythonで実行できるライブラリとして
semopy
がある - 複雑な変数同士の有方向グラフでの相関を見ることができる
- Marketing Mix Modelingの使い方に少し近い
- 測定モデル
- 複数の特徴量を束ねて一つの潜在変数を表す
- 構造モデル
- 潜在変数間の因果関係を示す
- 作成したモデルは当てはまりの良さを評価することができる
- χ2, RMSEA, CFI, TLI, NFI, GFIなどの指標がある
測定モデルの式
"""
LatentVar1 =~ ObsVar1 + ObsVar2 + ObsVar3
LatentVar2 =~ ObsVar4 + ObsVar5 + ObsVar6
"""
ObsVar
; 特徴量LatentVar
; 潜在変数
構造モデル
"""
LatentVar3 ~ LatentVar1 + LatentVar2
"""
Var1
とVar2
がVar3
の因果になっているというモデル
pythonライブラリ, semopyインストール
$ python3 -m pip install somopy
semopyの使い方
- データをpandasのデータフレームで用意する
- カラム名を変数名としてネットワークを定義する
- ネットワークに対してフィットして結果を確認
具体例
import semopy
data = semopy.examples.political_democracy.get_data()
desc = semopy.examples.political_democracy.get_model()
model = semopy.Model(desc)
res = model.fit(data)
# 非標準化係数のパス図可視化
g = semopy.semplot(model, "tmp.png", plot_covs=False)
display(g)
# 標準化係数のパス図可視化
g = semopy.semplot(model, "tmp.png", plot_covs=False, std_ests=True)
display(g)
# モデルの当てはまりを評価
stats = semopy.calc_stats(model)
display(stats)
# モデルの係数・標準誤差・p値を確認
display(model.inspect())
# 標準化係数の係数・標準誤差・p値を確認
display(model.inspect(std_ests=True))