---
title: "共分散構造分析（SEM）とは？適合度の基準とモデルが合わないときの対処を実例で解説"
url: "https://www.issoh.co.jp/column/details/5733/"
published: 2025-03-10
updated: 2026-10-16
categories: ["データ分析・GA4"]
publisher: "株式会社一創"
---

# 共分散構造分析（SEM）とは？適合度の基準とモデルが合わないときの対処を実例で解説

共分散構造分析は、「満足度」「ロイヤルティ」のように直接は測れない概念（潜在変数）どうしの因果関係を、アンケートなどの観測データから推定する統計手法です。SEM（Structural Equation Modeling＝構造方程式モデリング）と同じものを指します。この記事では定義と他手法との違いを押さえたうえで、実務でつまずきやすい「適合度が基準に届かない」「モデルが合わない」場面を、公開データでの実際の計算結果を使って説明します。基本モデルの適合度と標準化パス係数は Python の semopy 2.3.11 で計算し、R の lavaan 公式チュートリアルが公表している値と一致することを確かめています。

## まとめ：共分散構造分析の要点

- 共分散構造分析＝SEM＝構造方程式モデリング。観測変数で潜在変数を測る「測定モデル」と、潜在変数どうしの因果を表す「構造モデル」を同時に推定する。
- 適合度の目安は Hu & Bentler（1999）の CFI・TLI 0.95付近、RMSEA 0.06付近、SRMR 0.08付近。原論文の推奨は SRMR に別の指標を1つ組み合わせて判断する二指標戦略。
- 適合度が低いときは、まず確認的因子分析で測定モデル単体を確かめる。修正指標（MI）は改善量の見込みを示すだけで、どの修正が正しいかは教えない。実例では2つの修正候補がほぼ同じ改善幅になった。
- 必要なサンプルサイズはモデル次第で、シミュレーション研究では30〜460件と幅がある。「200人あれば十分」といった一律の目安はあてにならない。
- SPSS Statistics だけでは共分散構造分析はできず、Windows専用の IBM SPSS Amos が要る。無料なら R の lavaan、Python の semopy、GUIの JASP。

## 共分散構造分析とは：SEM・構造方程式モデリングの定義

### 観測変数・潜在変数と、測定モデル・構造モデル

共分散構造分析は、データの分散・共分散の構造が、分析者があらかじめ立てた仮説モデルでどこまで説明できるかを検証する手法です。扱う変数は2種類です。アンケートの各設問や売上のように直接測れる値が「観測変数」、満足度やブランド評価のように直接は測れず、複数の観測変数の背後に想定する概念が「潜在変数」です。

モデルは2つの部分からなります。潜在変数を観測変数で測る部分が「測定モデル」、潜在変数どうしの因果を表す部分が「構造モデル」です。共分散構造分析はこの2つを1組の連立方程式として同時に推定するため、「満足度がロイヤルティを高める」といった仮説を、設問ごとの測定誤差を切り離したうえで数値にできます。

### 呼び名の違いと「統計のSEM」

共分散構造分析・構造方程式モデリング・SEM は同じ枠組みの呼び名で、心理学や統計学の文献では「構造方程式モデリング」、マーケティングリサーチの現場では「共分散構造分析」が多く使われます。なお、統計の文脈でも SEM が平均値の標準誤差（standard error of the mean）の略として使われることがあり、Webマーケティングでは検索エンジンマーケティングを指します。論文や報告書で SEM を見かけたら、潜在変数やパス図が出てくるかどうかで、どちらの意味かを判断できます。

## 重回帰分析・因子分析・パス解析との違い

3つの手法はいずれも共分散構造分析の一部、または特殊なケースとして表現できます。違いは「潜在変数を扱うか」「因果の矢印を何本の式で同時に推定するか」です。

| 手法      | 潜在変数      | 式の数         | 測定誤差      |
| ------- | --------- | ----------- | --------- |
| 重回帰分析   | 扱わない      | 1本（目的変数1つ）  | 無いものとして計算 |
| 因子分析    | 扱う（測定のみ）  | 因子間の因果は置かない | 独自因子として分離 |
| パス解析    | 扱わない      | 複数を同時に推定    | 無いものとして計算 |
| 共分散構造分析 | 扱う（測定＋因果） | 複数を同時に推定    | 分離して推定    |

### 重回帰分析との違い

重回帰分析は、複数の説明変数から1つの目的変数を予測する1本の式です。「広告接触が購入意向を高め、購入意向が購入を高める」のような媒介の連鎖は、式を分けて別々に推定するしかありません。共分散構造分析では連鎖全体を1つのモデルで推定し、直接効果と間接効果を分けて読めます。重回帰の式の立て方は[重回帰分析とは？単回帰との違い・式の立て方と結果の見方を実例で解説](/column/details/6073/)で扱っています。

### 因子分析との違い

共分散構造分析の測定モデルは、確認的因子分析とほぼ同じ形です。違いは、因子分析が「設問をどう束ねるか」で止まるのに対し、共分散構造分析は束ねた潜在変数どうしに因果の矢印を引いて検証する点にあります。後述の Holzinger データの例も、構造パスを持たない確認的因子分析です。設問の束ね方を探る段階の手順は[因子分析とは？やり方・結果の見方を具体例でわかりやすく解説](/column/details/5496/)を参照してください。

### パス解析との違い

パス解析は、観測変数だけを矢印でつないだモデルです。共分散構造分析は観測変数の背後に潜在変数を置き、測定誤差を分けて推定します。アンケートの1問1問には回答のぶれが乗るため、測定誤差を無視したパス解析では、モデルや誤差の入り方によって、係数が過小にも過大にも推定されます。逆に、売上高や在庫数のように測定誤差をほぼ無視できる実測値だけで組むなら、パス解析で足ります。

## パス図とパス係数の読み方

### パス図の記法

モデルはパス図で描きます。長方形が観測変数、楕円が潜在変数です。片方向の矢印は因果（または潜在変数から観測変数への影響）、両端に矢じりのある曲線は因果を仮定しない相関（誤差どうしの相関を含む）を表します。楕円から長方形へ矢印が伸びる部分が測定モデル、楕円どうしをつなぐ矢印が構造モデルです。

### パス係数（標準化推定値）の読み方：Bollen の政治民主主義データ

矢印に付く数値がパス係数です。単位の違う変数どうしを比べるため、実務では標準化推定値で読みます。lavaan のチュートリアルでも使われている Bollen（1989）の政治民主主義データ（75か国）で、工業化（ind60）・1960年の民主化（dem60）・1965年の民主化（dem65）の構造モデルを推定すると、次の値になりました（semopy の実測。[lavaan 公式チュートリアル](https://lavaan.ugent.be/tutorial/sem.html)の Std.all と一致）。

| パス            | 非標準化  | 標準化   | p値     |
| ------------- | ----- | ----- | ------ |
| ind60 → dem60 | 1.482 | 0.447 | <0.001 |
| ind60 → dem65 | 0.572 | 0.182 | 0.010  |
| dem60 → dem65 | 0.838 | 0.885 | <0.001 |

読み方は3段階です。まず符号で向きを見ます（3本とも正）。次に標準化係数の大きさを比べます。1965年の民主化を最も強く説明しているのは5年前の民主化（0.885）で、工業化からの直接の矢印は0.182と小さい値です。最後にp値で有意かを確かめます。工業化は dem60 を経由した間接効果（0.447×0.885≒0.40）のほうが直接効果より大きい、という読み取りになります。間接効果そのものは観測変数の回帰式を組み合わせても求められますが、この例では3つの潜在変数を測定モデルごと推定しているため、指標ごとの測定誤差を切り離した係数で比べられます。

## 適合度指標の基準値：CFI・TLI・RMSEA・SRMR

### Hu & Bentler（1999）の目安と二指標戦略

推定したモデルがデータにどれだけ当てはまるかは、適合度指標で判断します。広く引用される目安は [Hu & Bentler（1999）](https://doi.org/10.1080/10705519909540118)です。要旨では、最尤法（ML）の場合に TLI・CFI などは0.95付近、SRMR は0.08付近、RMSEA は0.06付近の値が、良い当てはまりと結論する前に必要だとしています。

| 指標      | 目安       | 何を見ているか            |
| ------- | -------- | ------------------ |
| CFI・TLI | 0.95付近以上 | 変数間に関係が無いモデルからの改善度 |
| RMSEA   | 0.06付近以下 | 自由度あたりのずれ          |
| SRMR    | 0.08付近以下 | 標準化残差の二乗平均平方根      |
| χ²検定    | p＞0.05   | 完全な当てはまりの検定        |

同じ論文が提案したのが二指標戦略で、ML に基づく SRMR を軸に、TLI・CFI・RMSEA などのうち1つを組み合わせて判断します。SRMR だけ、CFI だけといった単独の指標では、誤ったモデルを見逃す割合が大きくなるためです。要旨は、小標本では ML の TLI・RMSEA が正しいモデルまで棄却しやすい点にも触れています。基準値は合否ラインではなく、他の指標や理論とあわせて読む目安です。

### χ²検定と小標本での指標のぶれ

χ²検定は「モデルがデータに完全に当てはまる」ことを帰無仮説とする検定で、モデルにわずかなずれがあっても、標本が大きくなるほどそのずれを検出しやすくなります。そのため単独では判断に使わず、上の指標と並べて報告します。

逆に標本が小さいと、指標そのものが大きくぶれます。次章で使う Holzinger データ（301人）の3因子モデルは、全員で推定すると CFI 0.931・RMSEA 0.092 で、どちらも目安に届きません。同じ301人から非復元抽出で100人を選び、NumPyの乱数生成器のシードを42として推定を200回繰り返したところ、RMSEA は5〜95パーセンタイルで0.056〜0.126の幅に散らばり、CFI が0.95以上になった回が27％ありました。100人規模の調査で「適合度は基準を満たした」と出ても、全体では当てはまっていないモデルである可能性があります。

## 適合度が低い・モデルが合わないときの対処

### 確認的因子分析による測定モデルの適合確認

適合度が基準に届かないとき、構造パスを足したり消したりする前に、問題が測定モデルと構造モデルのどちらにあるかを切り分けます。構造パスを外し、潜在変数どうしをすべて相関でつないだ確認的因子分析を回します。これで適合しなければ、原因は設問と潜在変数の対応づけ（ある設問が別の因子にも効いている、想定した因子にほとんど載っていない等）にあります。測定モデルが適合しているのに全体が合わないなら、構造パスの置き方を見直します。

### 修正指標（MI）の読み方：2つの修正候補がほぼ同点だった例

修正指標は、いま固定している1つのパラメータを自由に推定させたときにχ²がどれだけ下がるかの見込みで、lavaan のリファレンスは「自由度1のスコア検定」と説明しています。自由度1のχ²分布の5％点が3.84なので、それを超える項目が改善候補になります。

Holzinger & Swineford（1939）のデータ（2校の7・8年生301人、知能検査9科目）で、視覚（x1〜x3）・言語（x4〜x6）・速度（x7〜x9）の3因子モデルを推定すると、適合度は目安を下回ります。[lavaan 公式チュートリアル](https://lavaan.ugent.be/tutorial/modindices.html)の修正指標の上位2つを、それぞれ1つずつ加えて再推定した結果が次の表です（semopy で実測。SRMR は自前で計算）。

| モデル         | MI    | χ²（自由度）   | CFI   | TLI   | RMSEA | SRMR  |
| ----------- | ----- | --------- | ----- | ----- | ----- | ----- |
| 当初の3因子      | －     | 85.31（24） | 0.931 | 0.896 | 0.092 | 0.065 |
| ＋視覚因子→x9    | 36.41 | 52.38（23） | 0.967 | 0.948 | 0.065 | 0.045 |
| ＋x7とx8の誤差相関 | 34.15 | 53.27（23） | 0.966 | 0.946 | 0.066 | 0.047 |

この結果から分かることは3つあります。1つ目に、MI はあくまで見込みで、実際のχ²の減少は MI より小さい値（36.41に対して32.92、34.15に対して32.03）でした。2つ目に、2つの修正はほぼ同じだけ当てはまりを改善しており、統計の数字ではどちらが正しいか決められません。3つ目に、どちらを選ぶかは理論で決めるしかありません。x9 は「直線と曲線の大文字を速く見分ける」課題なので、視覚の能力が効くと説明できます。x7（速い足し算）と x8（点を速く数える）の誤差相関は、2つの課題に共通する「数える」要素として説明できます。どちらの理由も報告書に書けないなら、その修正は加えるべきではありません。

### 修正を加えてはいけない場面

MI の大きい順に修正を繰り返すと、手元のデータにだけ当てはまるモデルができあがります。次のどれかに当てはまる修正は見送ります。

- 意味の違う設問どうしの誤差相関で、内容から理由を説明できない。
- 理論的な根拠がなく、適合度の基準を満たすことだけを目的として修正を追加する。
- 修正後のモデルを、同じデータで「検証できた」と報告しようとしている。修正は探索なので、確証するには別のサンプル（データを半分に分けた残りの半分など）で同じモデルを当て直す必要があります。

### サンプルサイズ・分布・識別性の確認

そもそもの前提が崩れていると、修正しても適合度は安定しません。サンプルサイズには「最低100人か200人」「推定するパラメータ1つにつき5〜10人」「変数1つにつき10人」といった経験則がありますが、[Wolf ほか（2013）](https://pmc.ncbi.nlm.nih.gov/articles/PMC4334479/)のシミュレーションでは、必要なサンプルサイズは条件によって30件（研究で検討された条件の最小値）から460件（2因子・各3指標・因子負荷0.50）まで開き、経験則はモデルごとの違いを反映しないため問題があると結論しています。因子負荷が低い設問が多いほど必要数は増えるので、予備調査の因子負荷を参考に、想定する効果の大きさや欠測率も含めたシミュレーションで本調査の人数を検討します。

最尤法は観測変数の多変量正規性を前提とします。5件法のアンケートで回答が片側に偏っている場合は、頑健な最尤法やカテゴリカルデータ向けの推定法に切り替えます。推定が収束しない、分散が負になる（不適解）といったときは、潜在変数の尺度を固定しているか、推定するパラメータがデータの情報量に対して多すぎないか（識別性）を確認します。

## SPSS・Amos・R・Pythonでの実装

### IBM SPSS Amosの対応OSと提供形態

SPSS Statistics の分析メニューだけでは共分散構造分析はできず、パス図を描いて推定する IBM SPSS Amos を使います。[IBM の製品ページ](https://www.ibm.com/products/structural-equation-modeling-sem)によると、Amos は Windows 専用で、SPSS Statistics の Premium エディションに含まれ、Base・Standard・Professional では追加購入、または単体で購入する形です。Mac で分析する場合や、ライセンスを用意できない場合は、次の無料ツールが選択肢になります。

| ツール           | 操作              | 費用 | 確認した版               |
| ------------- | --------------- | -- | ------------------- |
| IBM SPSS Amos | GUI（パス図）        | 有償 | Windowsのみ           |
| R lavaan      | コード             | 無料 | 0.7-3（2026年10月8日）   |
| Python semopy | コード             | 無料 | 2.3.11（2024年1月4日）   |
| JASP          | GUI（中身は lavaan） | 無料 | 0.98.8（2026年10月11日） |

版は [CRAN](https://cran.r-project.org/web/packages/lavaan/index.html)・[PyPI](https://pypi.org/project/semopy/)・[JASP のリリースノート](https://jasp-stats.org/release-notes/)で2026年10月16日に確認したものです。semopy は PyPI 上の最終公開から約2年9か月が経過しています。長く使う分析基盤として継続的な更新を選定条件にするなら、lavaan（R）や、それを内部で使う JASP が候補になります。

### R lavaan のコード

lavaan では、測定モデルを `=~`、構造（回帰）を `~`、分散・共分散を `~~` で書きます。次は公式チュートリアルの Holzinger データの例で、適合度と修正指標の上位5件まで出力します。

```
library(lavaan)

HS.model <- '
  visual  =~ x1 + x2 + x3
  textual =~ x4 + x5 + x6
  speed   =~ x7 + x8 + x9
'
fit <- cfa(HS.model, data = HolzingerSwineford1939)
summary(fit, fit.measures = TRUE, standardized = TRUE)
fitMeasures(fit, c("cfi", "tli", "rmsea", "srmr"))
modindices(fit, sort = TRUE, maximum_number = 5)
```

構造パスを含むモデルは `cfa()` の代わりに `sem()` で推定します。書き方は同じで、政治民主主義データの例では、ind60・dem60・dem65の測定モデルを定義し、対応するデータを指定したうえで `dem65 ~ ind60 + dem60` などの構造パスを記述します。

### Python semopy のコードと SRMR の計算

semopy もほぼ同じ記法です。注意点として、`calc_stats()` が返すのは CFI・GFI・AGFI・NFI・TLI・RMSEA・AIC・BIC などで、二指標戦略の軸になる SRMR は含まれません。次のコードは SRMR を自前で計算する部分まで含めて実行を確認したものです。

```
import numpy as np
import semopy
from semopy.examples import holzinger39

df = holzinger39.get_data()  # 301人・9変数
desc = '''
visual  =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed   =~ x7 + x8 + x9
'''
model = semopy.Model(desc)
model.fit(df)
stats = semopy.calc_stats(model).T
print(stats.loc[['DoF', 'chi2', 'CFI', 'TLI', 'RMSEA']])

# calc_stats は SRMR を返さないので自前で計算する
obs = model.vars['observed']
S = np.cov(df[obs].values, rowvar=False, bias=True)
sigma = model.calc_sigma()[0]
d = np.sqrt(np.diag(S))
resid = (S - sigma) / np.outer(d, d)
print('SRMR', round(float(np.sqrt(np.mean(resid[np.tril_indices(len(obs))] ** 2))), 3))
```

```
           Value
DoF    24.000000
chi2   85.305728
CFI     0.930559
TLI     0.895839
RMSEA   0.092275
SRMR 0.065
```

出力の χ²85.306（自由度24）・CFI 0.931・TLI 0.896・RMSEA 0.092・SRMR 0.065 は、lavaan 公式チュートリアルの値と小数第3位まで一致しました。ただし一致を確かめたのはこの例のこれらの指標だけで、他のデータや推定設定でも同じ値になるとは限りません。

### JASPのGUI操作とモデル構文の入力

JASP の SEM モジュールは lavaan を内部で使っています（[jaspSem](https://github.com/jasp-stats/jaspSem)）。モデルは lavaan と同じ記法で入力し、結果は表で返ります。Mac でも動き、Amos のライセンスが無い環境で GUI を使いたいときの第一候補です。

## 共分散構造分析の進め方

1. 仮説モデルを描く：先行研究や業務知識から、潜在変数と因果の矢印をパス図にする。データを見てから矢印を決めない。
2. 設問を用意する：1つの潜在変数を複数の設問で測る（設計の目安は3問以上。識別できるかはモデル全体の制約にもよる）。予備調査で因子負荷を確かめ、必要な人数を見積もる。
3. データを点検する：欠損・外れ値・回答の偏りを確認し、推定法（最尤法か、頑健な推定か）を決める。
4. 測定モデルを確かめる：確認的因子分析で、設問と潜在変数の対応が適合するかを見る。
5. 構造モデルを推定する：構造パスを入れて推定し、SRMR と CFI または RMSEA を組み合わせて適合度を判断する。
6. 修正と報告：修正は理論で説明できるものだけにし、何を何の根拠で修正したかを報告に残す。可能なら別サンプルで当て直す。

因果の向きそのものはデータからは決まらず、分析者が仮説として与えます。相関と因果の区別は[因果分析とは？相関関係との違い・手法の使い分けと落とし穴を解説](/column/details/5497/)で整理しています。

## マーケティングリサーチでの活用例

共分散構造分析のマーケティング分野での用途には、顧客満足度の分析があります。「品質評価」「価格評価」などの潜在変数が「総合満足度」を形成し、それが「再購入意向」「推奨意向」につながるモデルを1つにまとめて推定し、どの要素が満足度を強く押し上げているかを標準化係数で比べます。CSATが満足度を、NPSが推奨意向に基づく顧客ロイヤルティを捉えるのに対し、共分散構造分析は「何が満足を生んでいるか」を示す点が役割の違いです（指標の計算方法は[CSAT（顧客満足度スコア）とは？意味・読み方・計算方法とNPS・CESとの違い](/column/details/10541/)を参照）。

既存顧客と新規顧客、年代別など複数の群で同じモデルを推定し、係数の違いを検定する多母集団同時分析も使えます。比較前に、群間で同じ概念を測れているかを測定不変性の検討で確かめます。どちらも潜在変数を複数の設問で測る設計が出発点になるため、分析を前提にした調査票と回答データの管理を最初から組んでおくと、後から設問を足して取り直す手間を避けられます。調査の配信から集計までを自社の仕組みで回したい場合は、[アンケート管理システムの開発支援](/service/system/enquetesystem/)も行っています。

## よくある質問

### 共分散構造分析とパス解析の違いは何ですか？

パス解析は観測変数だけを矢印でつなぐ分析で、測定誤差は無いものとして扱います。共分散構造分析は潜在変数を置き、測定誤差を分けて推定します。アンケートのように測定誤差を含むデータでは、適切な測定モデルを組むことで、誤差を無視した場合に生じる係数の偏りを扱えます。

### 統計で使われる「SEM」とは何ですか？

多くの場合は構造方程式モデリング（Structural Equation Modeling）、つまり共分散構造分析を指します。ただし平均値の標準誤差（standard error of the mean）の略として使われることもあるため、潜在変数やパス図が出てくるかで見分けます。

### サンプルサイズは何人必要ですか？

モデルによって大きく変わります。シミュレーション研究では、条件によって必要数が30件から460件（因子負荷0.50程度の2因子モデル）まで開きました。予備調査の因子負荷に加え、想定する効果の大きさや欠測率を設定したシミュレーションで必要人数を見積もります。

### SPSSだけで共分散構造分析はできますか？

できません。IBM SPSS Amos が必要です。Amos は Windows 専用で、SPSS Statistics の Premium エディションに含まれ、ほかのエディションでは追加購入になります。Mac や無料の環境では JASP や R の lavaan を使います。

### モデルの適合度が低いときはどうすればよいですか？

まず確認的因子分析で測定モデルだけを確かめ、問題が設問側か構造パス側かを切り分けます。修正指標は改善量の見込みを示すだけなので、理論で説明できる修正だけを1つずつ加えます。修正後のモデルは、できれば別のサンプルで当て直して確かめます。

## 関連記事

- [因子分析とは？やり方・結果の見方を具体例でわかりやすく解説](/column/details/5496/)
- [重回帰分析とは？単回帰との違い・式の立て方と結果の見方を実例で解説](/column/details/6073/)
- [回帰分析とは？種類・回帰式・決定係数と実務での進め方を解説](/column/details/5659/)
- [因果分析とは？相関関係との違い・手法の使い分けと落とし穴を解説](/column/details/5497/)
- [多変量解析とは？予測と要約で選ぶ手法一覧とビジネスでの使いどころ](/column/details/6163/)

---

出典: [共分散構造分析（SEM）とは？適合度の基準とモデルが合わないときの対処を実例で解説](<https://www.issoh.co.jp/column/details/5733/>)（株式会社一創）
