• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

共分散構造分析

date: 2023-03-16 excerpt: 共分散構造分析(SEM)の概要

tag: pythonpandaspolarsrust共分散構造分析構造方程式モデリング


共分散構造分析(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))

Google Colab

  • 共分散構造分析-example

参考

  • Fit indices in SEM
  • 【Data analytics】SEMによって、満足度の要因分析にトライ
  • 共分散構造分析(SEM)
  • pythonによる共分散構造分析 ~MMMを添えて~


pythonpandaspolarsrust共分散構造分析構造方程式モデリング Share Tweet