図の読み方と分析手法
まず矢印の向きと係数を読み、次に不確実性、最後にモデル全体の当てはまりを確認します。
SEMとは:複数の関係を一緒に調べる
構造方程式モデリング(Structural Equation Modeling/SEM)は、変数どうしの関係を複数の式で表し、データにどの程度合うかを調べる方法です。「豊かさと医療供給量が関係し、その両方が寿命と関係する」といった構造をまとめて扱えます。
所得や寿命のように測れる値が観測変数です。「経済的豊かさ」のように直接は測れず、複数の指標で表す概念が潜在変数です。潜在変数と指標の関係が「測定モデル」、説明したい変数間の関係が「構造モデル」です。
パス解析は、観測変数だけで関係を表すSEMの一種です。本サイトの市区町村分析はこちらです。矢印は仮定した関係を表し、図を推定できたことだけで因果関係が証明されるわけではありません。
関連・相関・因果の違い
関連は、ある変数の値によって別の変数の値や分布が異なる関係を広く指します。相関は数値変数どうしの関係を捉えるもので、よく使うピアソンの相関係数は直線的な関係の向きと強さを−1〜+1で表します。例えば、気温が低い日にも高い日にも電力使用量が増えるU字形の関連は、直線的な相関では捉えきれません。
因果関係は、一方を変えることで他方が変わる関係です。相関も関連も、それだけで因果関係を意味しません。今回のモデルには因果関係についての仮説を反映していますが、データとの当てはまりだけで、その仮説や関係の方向を確定することはできません。
SEMのパス係数は偏相関係数ではない
偏相関係数は、他の変数への線形回帰で両方の変数から説明される部分を取り除き、残差どうしの相関を求めたものです。一方、今回の線形SEMの回帰パス係数は、その式の他の説明変数を一定としたとき、説明側が1単位高いと結果側が何単位高いかを表します。
標準化しても両者は一般に一致しません。偏相関係数は−1〜+1の範囲ですが、標準化回帰パス係数はその範囲を超える場合があります。本サイトで「関連」と呼ぶのは、パス係数が相関係数そのものではなく、因果効果とも断定できないためです。SEMには因子負荷量や共分散なども含まれるので、すべての係数を同じ意味で読むことはできません。
パス図の凡例
| 図の要素 | このサイトでの意味 |
|---|---|
| 楕円 | 潜在変数。複数の指標から表す概念。 |
| 四角 | 観測変数。統計データから得た指標。 |
| 片方向の矢印 → | 説明側から結果側への、モデルで仮定した関係。 |
| 双方向の矢印 ↔ | 相関・共分散。どちらが原因かは指定しない。「残差相関」はモデルで説明した後にも残る関係。 |
| 青/赤の構造パス | 正/負の係数で、漸近的なp値が有意水準を下回る関係。青は良い、赤は悪い、という評価ではない。 |
| 灰色の破線の構造パス | 通常はp≥.05の関係。効果がゼロと証明されたわけではない。双方向線の破線は図ごとの凡例も確認。 |
| 細い灰色の矢印 | 因子負荷量。灰色でも非有意とは限らない。星印または†を読む。 |
線の太さや色だけで効果量を比べず、係数と区間を確認してください。
矢印の数字・星印・区間を読む
標準化係数は、単位を標準偏差にそろえた係数です。例えば仮の係数+0.5は、同じ式の他の説明変数を一定としたとき、説明側が1標準偏差高いと結果側が0.5標準偏差高いという読み方です。50%増えるという意味ではありません。非標準化係数は、モデルに入力した変数の尺度で表した係数です。
因子負荷量は、潜在変数が各指標にどの程度表れるかを示します。実際の健康モデルでは「経済的豊かさ → 1人当たり県民所得」の標準化負荷量は0.79†です。非標準化負荷量を1に固定して尺度を決めても、標準化後の値は1になるとは限りません。
| 記号・用語 | 意味と注意 |
|---|---|
| * / ** / *** | それぞれp<.05/p<.01/p<.001。図では非標準化係数の漸近的な検定に基づく。星の数は効果の大きさではない。 |
| n.s. | p≥.05。ゼロとの違いをこの検定で示せなかった。 |
| † | 尺度を決めるため非標準化負荷量を1に固定。通常の係数検定の対象外であり、非有意という意味ではない。 |
| p値 | 係数がゼロという仮説と検定の仮定の下で、今回以上に極端な検定統計量が出る確率。仮説が正しい確率ではない。 |
| ブートストラップ95%区間 | 国・地域を復元抽出して推定を繰り返し、係数の不確実性を表した区間。0を含むなら符号を明確に示せない。因果や未測定の交絡の不確実性まで解消するものではない。 |
| 直接・間接・総効果 | 直接は1本の矢印、間接は他の変数を経由する関係。線形パスモデルでは経路上の係数を掛け、経路を足して総効果を求める。「効果」はモデル内の用語で、因果が確定したことを意味しない。 |
小標本では星印とブートストラップ区間の判定が食い違うことがあります。本サイトでは区間を優先します。「男性で有意、女性で非有意」だけでは男女差は証明できません。また、説明変数が強く重なると標準化係数の絶対値が1を超える場合もあります。
CFIなどの適合度:モデル全体の当てはまり
適合度は主に、変数間の共分散をモデルがどれだけ再現するかを見ます。個々の国の成長をどれだけ正確に予測できるかとは別です。
| 指標 | 何を読むか |
|---|---|
| N | 分析した国・地域の数。元データの全件数とは限らない。 |
| χ²(カイ二乗) | モデルとデータの共分散のずれに基づく統計量。標本数にも左右される。 |
| df(自由度) | データから得られる情報に対してモデルに残された制約の数。標本数から1を引いた数ではない。 |
| χ²/df | χ²を自由度で割った補助的な指標。小さいほどずれが小さい方向だが、一律の合格基準にはしない。 |
| CFI | 変数間の共分散を基本的にゼロとする基準モデルと比べた改善度。1に近いほど良好な方向。説明率や正答率ではない。 |
| TLI | 基準モデルとの比較に、モデルの複雑さも考慮した指標。1に近いほど良好な方向。 |
| RMSEA | 自由度当たりの近似的なずれを表す指標。0に近いほど良好な方向。小標本や自由度が少ない場合は解釈に注意。 |
| 残差相関の最大 |r| | 図で用いる共分散再現の診断。モデルで再現し切れない変数間の関連のうち最大のもの。各地域の「実測−予測」とは異なる。 |
指標を1つだけ選んで合否を決めず、複数の適合度、推定区間、残差、モデルの意味を合わせて読みます。CFIが1でも因果関係や将来予測が正しいとは限りません。semopyの適合度の説明
予測と残差:地域ごとの説明できなかった部分
実測と予測の散布図では、一致線から離れるほどずれが大きくなります。残差は「実測−予測」で、正なら予測より高く、負なら低い値です。残差が大きいだけで、原因や異常を特定できるわけではありません。
国・健康・転職の診断は、指標の標準化平均を使う補助回帰です。SEMそのものの予測ではありません。市区町村はパスモデルの総移動率の式に説明変数の実測値を入れています。いずれも同じデータに当てはめた結果で、未知の地域や将来に対する予測精度とは区別します。
補助回帰の表の95%区間は、合成指標を固定した平均予測の区間です。個々の実測値が入る予測区間ではありません。「1県抜き(leave-one-out)」は特定の県に結果が依存するかを調べる診断で、本サイトでは予測精度の交差検証としては使っていません。多数の指標を探索するときは、偶然の発見を抑えるため並べ替えによる多重比較補正も行います。
繰り返し検証:結果はどのくらい揺れるか
一度の推定で係数が出ても、少数の地域や分析の選び方に強く左右されているかもしれません。そこで、データの取り出し方やモデルの条件を変えて、結果がどう動くかを調べます。繰り返す目的は、都合のよい結果を探すことではなく、結論が崩れる条件を確かめることです。
ブートストラップ:地域を引き直して推定する
例えば47都道府県の分析なら、元の47県から重複を許して47県分を抽出し、モデルをもう一度推定します。ある県が複数回選ばれ、別の県は選ばれない標本になります。これを何百回も繰り返し、係数がどれくらい変わるかを見ます。新しい実測データを集める方法ではありません。
本サイトの係数の区間は、得られた推定値の下側2.5%点から上側97.5%点までを示すパーセンタイル区間です。区間が狭ければ推定の揺れは小さく、広ければ大きいと読みます。0をまたぐ場合は、正か負かを明確に示せません。通常の95%信頼区間は、同じ手順を繰り返したときの区間の被覆を意図するもので、今回の区間に真の値が95%の確率で入るという意味ではありません。
現在の実装では、国・都道府県の主要パスは600回、市区町村の主要パスは400回の復元抽出を試みています。図・表の中央値と、元データを一度推定した係数は異なる場合があります。主要パスの反復では収束フラグ、係数などの有限性、負の分散、モデル共分散の正定値性も確認します。分散がほぼゼロになる境界解は収束失敗とは区別し、各分析ページに件数を示しています。境界解を含む区間の解釈には注意が必要です。追加検証の方法と結果ファイル
この実装の区間が含む範囲にも限界があります。SEMの再推定では、元データで作った標準化値や、国の所得調整後の指標を使って行を再抽出しています。前処理やモデル選択の全過程を毎回やり直す区間ではありません。補助回帰の平均予測の区間も合成指標を固定しています。これらは、別のモデルを選ぶ不確実性、欠測や測定の偏り、未測定の交絡まで表すものではありません。
1県抜き:特定の地域に依存していないか
県を1つだけ除いて再推定し、それを全県について繰り返します。係数の符号や大きさが大きく変わるなら、その県の影響が強いと分かります。ブートストラップが標本を引き直したときの揺れを見るのに対し、1県抜きは影響の強い県を特定する診断です。影響が強い県を、都合が悪いという理由で除外するための手順ではありません。
並べ替え検定:偶然でも同程度の関係が出るか
結果側の値を地域間で並べ替え、説明側との対応を壊してから統計量を計算します。実際に得られた値をこの帰無分布と比べます。多数の指標を探索する場合は、各回で全指標のうち最大の絶対相関を取り、その分布から閾値を作ります。指標をたくさん調べるほど偶然の大きな相関も見つかりやすいことを、この手順で考慮しています。
地域を独立に引き直すブートストラップや、自由に並べ替える検定は、地域の独立性・交換可能性などの仮定に依存します。近隣地域の依存や時系列のまとまりが強い場合には、ブロック単位の再抽出など、その構造に合う設計が必要です。反復回数を増やすだけで、この問題は解決しません。
別の仕様・別のデータでも確かめる
指標や調整変数を替える検証は「仕様による結果の違い」を調べます。一方、別年次や新しい標本で同じ分析を行う検証は、結果の再現性を調べます。未知のデータへの予測精度を知るには、学習に使わないデータで評価する必要があります。同じデータを何度引き直しても、独立した新しい証拠が増えるわけではありません。
このプロジェクトでは、ブートストラップ・1県抜き・並べ替え・複数仕様の比較を目的に応じて使っています。別年次での再現や予測の交差検証は今後の課題です。国の実装 · 1県抜きの実装 · 探索の補正の実装
この分析にSEMは適しているか
今回のSEMは、複数の指標で表した概念どうしの関係や、途中の変数を経由する関係を整理するために使っています。単に寿命や成長率の予測を当てたいだけなら、より単純な回帰を出発点にできます。SEMを使う意義は、測定の仕方と変数間の構造を明示して検討できることにあります。
利点と、そのために必要な前提
潜在変数を使うと、各指標に共通する部分と指標固有のばらつきを分けて扱えます。また、直接の関係と間接の経路をまとめて推定し、モデル全体が変数間の関係を再現できるか確認できます。ただし、指標が本当に同じ概念を反映するという測定モデルが適切であることが前提です。潜在変数に名前を付けただけで、概念の妥当性や測定誤差の問題が解決するわけではありません。
モデルには推定値を区別して求められること(識別可能性)が必要です。観測数だけでなく、自由に推定する係数の数、因子負荷量、変数のばらつき、欠損、地域間の依存などにも注意します。標準化やブートストラップを行っても、誤ったモデル指定や未測定の交絡は取り除けません。
今回の分析単位ごとの判断
| 分析 | SEMが役立つ点 | 残る課題 |
|---|---|---|
| 国 | 制度・人的資本・成長を複数指標で表し、それらの関係を検討できる。 | 人的資本と所得の重なり、指標の意味、モデル変更への依存がある。残差化後は「所得で説明されない人的資本」という別の問いになる。 |
| 都道府県 | 豊かさ・医療供給量や都市度・雇用の不安定さを分けて、関係を整理できる。 | 観測数に対してモデルが複雑で、推定区間が広い。境界解や特定の県への依存もあり、図が描けることだけで妥当と判断しない。 |
| 市区町村 | 観測変数のパス解析で、逆向きの直接・間接経路を分解できる。 | 試した潜在変数の測定モデルは適合しなかった。採用した経路も探索的で、別年次での検証と地域間の依存の確認が必要。 |
したがって、今回のSEMは関係の構造を記述し、仮説を整理する道具として位置づけます。適合の良さから矢印の因果方向を決めたり、地域の関係を個人の行動へそのまま当てはめたりはできません。図の分かりやすさと、結論の確かさは分けて評価します。
この判断は本プロジェクトの試行記録に基づきます。方法論の教訓と撤回した解釈
ほかに考えられる分析手法
代替手法は、何を知りたいかと利用できるデータで選びます。下表は今後の比較候補であり、このサイトで全手法を実行して優劣を検証したものではありません。SEMと組み合わせられる方法もあります。
| 目的 | 候補 | 今回ならどう使うか・注意点 |
|---|---|---|
| 関連を簡潔に説明する | 重回帰 | 所得や都市度と結果の関係を単純な仕様で確認する。補助回帰はすでに残差診断で使用。合成指標の測定誤差や潜在構造をSEMと同じように扱うわけではない。 |
| 指標がどうまとまるか調べる | 探索的因子分析・主成分分析 | 潜在変数を置く前に指標の構造を確認する。因子分析と主成分による要約は目的が異なり、どちらも因果経路を証明しない。 |
| 地域差と個人差を分ける | マルチレベルモデル | 地域に属する個人のデータを使い、地域条件と個人属性を分ける。個人の転職を調べるには地域集計だけでなく個票が必要。 |
| 同じ地域の時間的変化を見る | パネル分析・固定効果モデル | 複数年の国・地域データをそろえ、時点によらず一定の交絡を調整する。時間とともに変わる交絡や逆因果は自動では解決しない。 |
| 近隣地域との関係を扱う | 空間回帰モデル | 市区町村の隣接関係や地域間の依存をモデル化する。近隣の定義と、結果の波及を扱うか誤差の依存を扱うかを根拠に沿って選ぶ。 |
| 未知の地域・将来を予測する | 正則化回帰・勾配ブースティング | 単純な回帰を基準に、学習に使わないデータで精度を比較する。地域や時間のまとまりを考慮して分割し、前処理も学習データ内で行う。高精度でも因果説明とは限らない。 |
| 政策などの因果効果を知る | 自然実験を利用した差の差法・操作変数法など | 比較できる政策変化などが必要。差の差法なら平行トレンド、操作変数法なら関連性・外生性・除外制約など、手法ごとの仮定を検討する。手法名だけで因果を保証しない。 |
このプロジェクトでの次の一歩は、単純な回帰との整合を確認しつつ、国では複数年への拡張、転職では個票の利用、市区町村では別年次での再現と空間的な依存の確認を進めることです。予測精度を比較する場合は、現在の標本内の当てはまりとは別の検証を設計します。
使用ライブラリ:Pythonのsemopy
このプロジェクトはsemopy 2.3.11を使用しています。モデルを式で記述し、係数・標準化係数・適合度を取り出せるPythonのSEMライブラリです。現在の推定コードはModel.fitの既定のMLW(Wishart尤度に基づく最尤法)を使っています。公式チュートリアル
式では 因子 =~ 指標1 + 指標2 が測定モデル、結果 ~ 説明変数 が回帰、変数1 ~~ 変数2 が共分散を表します。先頭の負荷量を原則1に固定して因子の尺度を決めます。公式の構文説明
この構成に合う理由は、pandasによる前処理から推定、繰り返し検証、結果CSVの保存までをPythonでつなげられ、モデル定義を図の生成にも再利用できることです。ただし、当初のライブラリ選定理由を記した記録は確認できていないため、これは現行実装上の利点の説明です。他のライブラリより優れていると比較検証した結果ではありません。
ライブラリが自動で分析を正しくしてくれるわけではありません。実際、指標の残差分散がゼロになる境界解で因子得点が計算できず、残差診断では標準化平均を用いました。ブートストラップや1県抜き、探索の補正はプロジェクト側のコードで実装し、図もsemopyの自動描画ではなく独自のSVG生成で作っています。