SEM 結構方程模型新手指南:從迴歸分析畢業的第一步

SEM 結構方程模型新手指南:從迴歸分析畢業的第一步

sem-guide-cover

你有沒有遇過這種場景?

論文進度報告的時候,指導教授看了你的研究架構圖,點了點頭說:「這個用迴歸不夠,你去跑個 SEM 吧。」

然後你回到座位上,打開 Google,輸入「SEM 是什麼」——結果跳出來的全是搜尋引擎行銷(Search Engine Marketing)。好不容易找到正確的全名「Structural Equation Modeling」,點進去一看,滿坑滿谷的希臘字母和矩陣符號,瞬間懷疑人生。

說實話,我第一次接觸 SEM 的時候也是這種感覺。但後來回頭看,其實 SEM 的核心概念並不複雜——它只是把你已經知道的幾種統計方法(因子分析、迴歸、路徑分析)縫合在一起,然後多了一個很關鍵的能力:處理你看不見的東西

這篇文章不會丟公式給你,而是用最直覺的方式,讓你搞懂 SEM 到底在幹嘛、什麼時候該用它、以及怎麼開始動手。


SEM 到底是什麼?把名字拆開來看

結構方程模型(Structural Equation Modeling, SEM),由瑞典統計學家 Karl Jöreskog 和 Dag Sörbom 在 1970 年代提出,到 1990 年代開始在社會科學、心理學、管理學等領域廣泛使用。

把名字拆成三塊來理解:

  • 結構(Structural):變數之間的「關係結構」——誰影響誰、誰和誰相關
  • 方程(Equation):這些關係用數學方程式表達
  • 模型(Modeling):你建一個「理論模型」,然後看數據支不支持它

用一句話說就是:SEM 是一種讓你把腦中的理論畫成圖,然後用數據去驗證「這張圖對不對」的統計方法。

這跟一般統計分析的邏輯很不一樣。迴歸分析是「我有數據,讓我看看哪些變數有關」;SEM 是「我有理論,讓數據告訴我這個理論站不站得住」。

這個差異非常根本,後面會反覆提到。


為什麼不用迴歸分析就好?

如果你已經會跑迴歸了,可能會想:「迴歸不也是看變數之間的關係嗎?為什麼還要學一個新東西?」

問得好。迴歸分析有三個根本的限制,而 SEM 就是為了解決這些問題而生的。

sem-guide-regression-vs-sem

痛點一:測量誤差被當空氣

迴歸分析有一個隱含假設:你的變數測量是完美的,沒有誤差。

但你想想,用問卷測「工作滿意度」的時候,受訪者可能心情不好亂填、題目可能有歧義、量表本身可能不夠精確。這些都是測量誤差。迴歸分析直接忽略這些,拿原始分數就往公式裡塞。

結果呢?Portland State University 的 Newsom 教授用實際數據做了比較:同一批資料,迴歸分析得出的路徑係數 β = 0.243,用 SEM 潛在變數模型重新跑之後,β 變成 0.099。差了不只一倍。

為什麼?因為迴歸把測量誤差混進了變數裡,讓估計結果產生偏誤(attenuation bias%EF%BC%89%E3%80%82SEM 把測量誤差分離出來,用多個觀察指標去逼近「真正的分數」,估計自然更準確。

痛點二:一次只能看一個因變數

標準的多元迴歸一次只能分析一個因變數。但現實中的理論往往是連鎖的:A 影響 B,B 又影響 C,A 也可能直接影響 C。

要用迴歸處理,你得拆成好幾條方程式分開跑,然後手動拼湊結果。SEM 可以在一個模型裡同時處理所有這些路徑,包括直接效果、間接效果(中介效果)和總效果

痛點三:看不見的東西沒辦法測

「自尊」「焦慮」「品牌忠誠度」「教學品質」——這些概念你能直接量出來嗎?不能。它們是潛在變數(latent variable),只能透過一系列可觀察的指標(問卷題目、測驗分數)來間接衡量。

迴歸分析通常的做法是把問卷題目加總平均,算出一個「綜合分數」就拿去用。但這等於假設每道題的重要性都一樣,而且把測量誤差全部吃進去了。

SEM 用「因子分析」的概念,讓多個觀察指標共同定義一個潛在變數,每個指標的權重不同,誤差也被分離出來。這才是社會科學中更合理的做法。

比較項目 迴歸分析 SEM
測量誤差 忽略,假設測量完美 明確估計並分離
因變數數量 一次一個 可同時多個
潛在變數 不支援(用加總平均替代) 原生支援
中介效果 需拆成多條方程式 單一模型完成
模型適配度 只有 R² 多種適配度指標
理論驗證 不直接支援 核心功能

核心精神:你必須先有理論

這是 SEM 最重要的一件事,也是新手最容易搞錯的地方。

SEM 是驗證性(confirmatory)的,不是探索性(exploratory)的。

怎麼理解?用蓋房子來比喻:

  • 探索性分析(像 EFA 探索性因子分析)就像你拿到一堆建材,東拼西湊看能蓋出什麼。「欸這幾根木頭好像可以組成一面牆?那這些磚塊是不是能做個地基?」你是在數據裡「挖掘」結構。

  • SEM 則相反。你手上已經有一張建築藍圖了——這棟房子應該有三面牆、兩根柱子、一個屋頂,柱子撐著屋頂、牆壁連接柱子。然後你去工地看看,實際的建材和結構是不是真的跟藍圖吻合。

這張「藍圖」就是你的理論模型。它來自文獻回顧、先前的研究、或你的理論推導。SEM 做的事情,就是拿實際數據去檢驗:你的理論模型和真實世界的數據之間,吻合程度有多高?

ScienceDirect 上的定義寫得很直白:SEM 是 "a statistical method that applies a confirmatory approach to analyzing structural theories of causal-effect relationships"。

所以在你動手跑 SEM 之前,你應該已經能夠畫出一張清楚的路徑圖:哪些變數影響哪些變數、透過什麼路徑、方向是什麼。如果你連理論架構都還沒有,那你需要的可能是 EFA 而不是 SEM。

踩坑提醒:有些人會用 SEM 軟體的「修正指標」(Modification Indices)不斷調整模型,直到適配度指標好看為止。 這其實已經從「驗證」滑進了「探索」的範疇。Arbuckle(2007)特別警告:「研究者不應僅由修正指標引導,任何修正都必須有理論或常識支持。」 沒有理論支持的模型修正,就是在 capitalize on chance——靠運氣湊出好看的數字。


SEM 的基本元素:看懂那張圖

打開任何一篇用 SEM 的論文,你一定會看到一張由方塊、橢圓和箭頭組成的圖。這不是裝飾,這就是模型本身。

sem-guide-components

五種變數類型

在看懂符號之前,先搞清楚 SEM 裡到底有哪些角色。姚開屏(1993)把它們整理成五種:

變數類型 說明 舉例
觀察變數(observed) 你實際測量到的數據 問卷的每一道題、測驗分數
潛在變數(latent) 無法直接測量的抽象概念 工作滿意度、焦慮程度
外衍變數(exogenous) 模型裡的「起點」,不被其他變數影響 研究中的自變數
內衍變數(endogenous) 模型裡「被影響」的變數 研究中的因變數或中介變數
誤差變數(error) 測量誤差和殘差 無法解釋的變異

前兩種(觀察 vs 潛在)決定你怎麼畫符號,後兩種(外衍 vs 內衍)決定箭頭怎麼指,誤差則是每個被預測的變數都會帶著的「尾巴」。

路徑圖符號

符號 代表 說明
長方形 / 方框 觀察變數(observed variable) 你實際測量到的數據,例如問卷的每一道題
橢圓形 / 圓圈 潛在變數(latent variable) 你無法直接測量的抽象概念,例如「工作滿意度」
單箭頭 → 因果 / 解釋關係 表示一個變數影響另一個變數
雙箭頭 ↔ 相關 / 共變關係 表示兩個變數之間有關聯,但不指定方向
帶箭頭的小圓圈(e/δ/ε/ζ) 誤差項 每個被預測的變數都有誤差項

如果你之後讀到更進階的文獻,會遇到 LISREL 的希臘字母符號系統:η(內衍潛在變數)、ξ(外衍潛在變數)、λ(因子負荷量)、β 和 γ(路徑係數)、ζ(結構殘差)。現在不用記,碰到的時候回來查就好。

一個潛在變數至少要幾個觀察變數?

至少三個。 這是一條幾乎所有 SEM 教科書都會強調的基本規則。少於三個的話,模型在數學上可能無法被「識別」(identified),也就是方程式解不出唯一答案。


測量模型 vs 結構模型:SEM 的兩大支柱

SEM 其實是兩個模型縫在一起的。理解這一點非常關鍵。

測量模型(Measurement Model)

回答的問題是:我的觀察變數能不能好好地測量潛在變數?

這就是驗證性因子分析(Confirmatory Factor Analysis, CFA)。你假設「工作滿意度」這個潛在變數可以被「薪資滿意度」「同事關係」「工作自主性」三道題測到,然後用 CFA 確認這三道題是不是真的在測同一個東西。

結構模型(Structural Model)

回答的問題是:潛在變數之間的因果關係是什麼?

確認測量沒問題之後,才看潛在變數之間怎麼互相影響。例如「工作壓力」是不是會降低「工作滿意度」,「工作滿意度」又是不是會降低「離職意願」。

[mermaid 圖表 — 原始 HackMD 版本可正常渲染]

graph LR subgraph 測量模型 A1[Q1: 工作量大] --> WS((工作壓力)) A2[Q2: 時間緊迫] --> WS A3[Q3: 責任沉重] --> WS

    B1[Q4: 薪資滿意] --> JS((工作滿意度))
    B2[Q5: 同事關係] --> JS
    B3[Q6: 工作自主] --> JS

    C1[Q7: 想離開] --> TI((離職意願))
    C2[Q8: 找新工作] --> TI
    C3[Q9: 不想留] --> TI
end

subgraph 結構模型
    WS -->|負向影響| JS
    JS -->|負向影響| TI
    WS -->|直接影響?| TI
end</div>

**Anderson 和 Gerbing(1988)**建議的標準做法是 two-step approach:先跑測量模型(CFA),確認沒問題了,再跑結構模型。不要一步到位,因為如果結果不好,你分不清是「測量有問題」還是「理論有問題」。


來跑一個實際案例吧

說了這麼多概念,來看看實際跑起來長什麼樣。我們用 R 的 lavaan 套件,這是目前最多人用的免費 SEM 工具。

前置條件

  • R >= 4.0
  • 安裝 lavaan 套件:install.packages("lavaan")
  • 基本的 R 語法知識

情境設定

假設你在研究「工業化程度如何影響民主程度」,使用 lavaan 內建的政治民主資料集(Bollen, 1989)。理論模型是:

  • 1960 年的工業化程度(ind60)影響 1960 年的民主程度(dem60)
  • 1960 年的民主程度(dem60)影響 1965 年的民主程度(dem65)
  • 1960 年的工業化程度也可能直接影響 1965 年的民主程度

程式碼

library(lavaan)

# Step 1: 定義模型
# =~ 表示「被測量為」(measurement model)
# ~  表示「被預測為」(structural model)
# ~~ 表示「與...相關」(covariance)

model <- '
  # 測量模型
  ind60 =~ x1 + x2 + x3          # 工業化程度由 x1, x2, x3 測量
  dem60 =~ y1 + y2 + y3 + y4      # 1960 民主由 y1-y4 測量
  dem65 =~ y5 + y6 + y7 + y8      # 1965 民主由 y5-y8 測量

  # 結構模型
  dem60 ~ ind60                    # 工業化 → 1960 民主
  dem65 ~ ind60 + dem60            # 工業化 + 1960 民主 → 1965 民主

  # 殘差共變(理論上同一題不同年份的誤差相關)
  y1 ~~ y5
  y2 ~~ y4 + y6
  y3 ~~ y7
  y4 ~~ y8
  y6 ~~ y8
'

# Step 2: 跑模型
fit <- sem(model, data = PoliticalDemocracy)

# Step 3: 看結果
summary(fit, standardized = TRUE, fit.measures = TRUE)

結果解讀重點

跑出來的結果會有一大堆數字,但你最需要看三個地方:

1. 適配度指標(模型整體好不好)

Model Test User Model:
  Test statistic                        38.125
  Degrees of freedom                        35
  P-value (Chi-square)                   0.329   # > 0.05 ✓

P 值 0.329 大於 0.05,代表你的理論模型和實際數據之間沒有顯著差異——也就是說,數據支持你的理論。(注意,SEM 的卡方檢定和其他統計相反:你希望 p > 0.05。)

2. 因子負荷量(測量模型好不好)

每個觀察變數對潛在變數的標準化負荷量(Std.all)理想上要 > 0.5,越高代表越能反映潛在變數。

3. 路徑係數(結構模型 — 你的理論假設成不成立)

dem60 ~ ind60     β = 0.447   # 工業化顯著影響 1960 民主 ✓
dem65 ~ dem60     β = 0.885   # 1960 民主強烈影響 1965 民主 ✓
dem65 ~ ind60     β = 0.182   # 工業化對 1965 民主的直接效果較小

怎麼判斷模型好不好?適配度指標速查表

SEM 不像迴歸只看 R² 就好,它有一整套適配度指標。不需要每個都完美,但大部分要在參考範圍內。

指標 全名 參考值 白話解釋
χ²/df 卡方值/自由度 ≤ 3(寬鬆 ≤ 5) 模型複雜度的懲罰調整
p 值 Chi-square p-value > 0.05 模型與數據無顯著差異
CFI Comparative Fit Index ≥ 0.90(優 ≥ 0.95) 你的模型比「最爛模型」好多少
RMSEA Root Mean Square Error of Approximation ≤ 0.08(優 ≤ 0.05) 模型與完美的距離
SRMR Standardized Root Mean Square Residual ≤ 0.08 殘差的平均大小
GFI Goodness-of-Fit Index ≥ 0.90 模型解釋了多少變異

踩坑提醒:卡方檢定對樣本量極度敏感。當你的樣本數超過 200-300 人時,幾乎任何模型的卡方值都會顯著(p < 0.05)。 這不代表你的模型很爛,只是卡方太敏感了。這時候應該以 CFI、RMSEA、SRMR 為主要判斷依據,而不是死盯 p 值。 這也是為什麼 SEM 領域有這麼多適配度指標——因為沒有單一指標能完整評估模型

RMSEA 的進階解讀

在所有指標裡,RMSEA 值得多說兩句。邱皓政(2008)整理了三種不同層級的適配度假設檢定,全部圍繞 RMSEA 展開:

檢定類型 虛無假設 意義 白話翻譯
精確適配 RMSEA = 0 模型完美符合 「我的理論模型跟真實世界零誤差」
近似適配 RMSEA ≤ .05 模型近似符合 「雖然不完美,但誤差在可接受範圍」
非近似適配 RMSEA ≥ .05 模型不夠好 「誤差太大了,不能接受」

實務上最有用的是看 RMSEA 的 90% 信賴區間(lavaan 輸出裡會自動算)。如果下界 < .05 且上界 < .08,你的模型就很穩健了。如果上界飆到 .10 以上,就算點估計值還行,你也不能太安心。


SEM 的操作五步驟

搞懂了元素和指標,我們把整個 SEM 的流程串起來。姚開屏(1993)歸納了五個步驟,從最初的理論建構到最後的模型修正,形成一個完整的循環:

Step 1: 模型設定(Model Specification) 根據理論假設畫出路徑圖,決定哪些路徑存在、哪些不存在。這一步完全靠你的理論知識,跟數據無關。

Step 2: 模型識別(Model Identification) 檢查模型在數學上能不能解——已知的資訊(觀察變數的變異數和共變數)夠不夠估計所有未知參數。規則很簡單:已知 ≥ 未知。

Step 3: 模型估計(Model Estimation) 把數據餵進去,用最大概似法(ML)或其他估計方法算出參數。這就是你在 lavaan 裡按下 sem() 的那一步。

Step 4: 模型評鑑(Model Evaluation) 看適配度指標、路徑係數、因子負荷量,判斷模型好不好。

Step 5: 模型修正(Model Modification) 如果模型不夠好,在有理論依據的前提下進行修正。可以用修正指標(MI)作為參考,但記得——每一步修正都必須說得出道理。

這五個步驟不是跑一次就結束的。修正之後要重新估計、重新評鑑,形成迭代循環,直到模型在理論和數據上都站得住。


新手最常踩的五個坑

1. 沒有理論就開始建模

最致命的錯誤。你不能把所有變數丟進去,然後靠修正指標東改西改,湊出一個好看的模型。那叫 data dredging,不叫理論驗證。

2. 樣本量不夠

SEM 吃樣本量,而且「到底要多少人」這件事比你想的複雜很多。

很多教科書會告訴你「至少 200」,但這只是粗略的底線。實際需要的樣本量取決於三件事:模型複雜度(自由度多少)、你想偵測多小的效果(效果量)、以及你能接受多大的誤判風險(統計檢定力)。

邱皓政(2008)整理了一套更精確的方法:用 RMSEA 來決定樣本量。他的研究顯示,如果你跑的是一個 4 個潛在變數、12 個觀察指標的 CFA 模型(df = 48),要達到 .80 的檢定力:

  • 精確適配檢定(H0: RMSEA = 0):最少需要 N = 249
  • 近似適配檢定(H0: RMSEA ≤ .05):最少需要 N = 502

自由度越小、模型越精簡,需要的樣本量反而越大。直覺上很反常,但原因是:自由度小的時候,卡方分布和非中心卡方分布的差異不明顯,你需要更多數據才能「看出」模型和數據之間的差距。

更實務的經驗法則:每個待估計參數至少 10-20 個觀測值,而複雜模型可能需要 400-500 以上。鄭中平(2015)也提到,如果你的研究重點是某條特定路徑係數,還需要做路徑層級的檢定力分析(power analysis),lavaan 套件裡的 SSpowerSSsamplesize 函數就是幹這件事的。

3. 把觀察變數直接當潛在變數用

有人把問卷加總平均分數直接放進「SEM」裡,但全部用方框(觀察變數)而不是橢圓(潛在變數),這其實只是在跑路徑分析(path analysis),不是完整的 SEM。你損失了 SEM 最大的優勢:測量誤差校正。

4. 忽略模型識別問題

模型識別(model identification)的意思是:你的方程式有沒有辦法解出唯一答案?如果待估計的參數比已知資訊還多,模型就是「不可識別的」。最常見的問題:一個潛在變數只配了 1-2 個觀察變數。記得前面說的規則:至少三個

5. 過度修改模型

看到適配度不好就狂改,加殘差共變、刪路徑、移觀察變數,改到好為止。這叫 overfitting。你的模型可能完美擬合這批數據,但換一批數據就崩潰。每一次修改都必須有理論依據,而且最好用另一批數據做交叉驗證。


工具怎麼選?

工具 費用 介面 學習曲線 適合誰
AMOS 付費(含在 SPSS 裡) 圖形拖拉 不想寫程式的研究生
lavaan (R) 免費開源 程式碼 會 R 的研究者,可重現性高
Mplus 付費(學生版 $195) 語法檔 中高 功能最齊全,學術界標準
LISREL 付費 語法檔 元老級工具,現在用的人少了
SmartPLS 付費 圖形 PLS-SEM 專用

怎麼選?如果你是碩士生、不排斥寫程式,lavaan 是最好的起點——免費、社群活躍、官方教學文件寫得很清楚。如果你的系所慣用 Mplus,那就跟著走,畢竟跟指導教授用同一套工具溝通成本最低。


Troubleshooting 常見問題

Q: 我的模型收斂失敗(non-convergence),怎麼辦? 可能原因:樣本量太小、模型太複雜、起始值不合理、資料有問題(例如共線性)。先檢查資料品質,再考慮簡化模型。

Q: 因子負荷量出現大於 1 的值(Heywood case),正常嗎? 不正常。這通常代表模型設定有問題、樣本量不足、或某些觀察變數不屬於該潛在變數。需要重新檢視測量模型。

Q: CB-SEM 和 PLS-SEM 有什麼差別?我該用哪個?

這兩個東西名字裡都有 SEM,但骨子裡是完全不同的統計哲學。邱皓政(2011)做了很完整的比較,我把最關鍵的幾點拉出來:

比較面向 CB-SEM(本文主角) PLS-SEM
統計基礎 共變數為本(因子分析) 成分為本(迴歸分析)
潛在變數本質 「真正的」潛在構念 觀察變數的加權組合
分布假設 要求多元常態 不要求
最低樣本量 通常 200+ 「10 倍法則」,可以更小,但穩定需 150-200
模型適配 有完整適配度指標 沒有整體適配度
核心用途 理論驗證(confirmatory) 預測與探索
測量模型 只支援反映性(reflective) 同時支援反映性和形成性(formative)

怎麼選?如果你的目標是驗證一個既有理論、你有夠大的樣本量、變數分布大致正常,用 CB-SEM。如果你的研究是探索性質、樣本量受限、或你的構念是形成性指標(例如「社經地位」由收入、教育、職業組成,不是它們的共同原因),那 PLS-SEM 可能更合適。但千萬不要因為 CB-SEM 適配度跑不好就「逃」到 PLS-SEM——這是邱皓政特別警告的濫用模式。

Q: SEM 能證明因果關係嗎? 不能。SEM 驗證的是「你假設的因果模型是否與數據一致」,但數據一致不代表因果成立——可能存在其他等效模型(equivalent models)也能解釋同樣的數據。真正的因果推論需要實驗設計或其他方法論支撐。


下一步該做什麼

如果你讀到這裡覺得「好像可以動手了」,這裡是我建議的學習路徑:

  1. 先搞定 CFA。不要一步到位跑完整 SEM,先用 CFA 確認你的問卷量表好不好用。lavaan 官網的 CFA 教學是最好的起點。

  2. 讀一本入門書。推薦 Schumacker & Lomax 的 A Beginner's Guide to Structural Equation Modeling,到第五版了,一直是入門首選。中文讀者可以看邱皓政的《結構方程模式》。

  3. 用別人的數據練習。lavaan 內建了好幾個經典資料集(HolzingerSwineford1939PoliticalDemocracy),先拿這些跑,搞懂輸出結果的每一行再換自己的數據。

  4. Two-step approach。永遠先跑測量模型、確認沒問題後再跑結構模型。

SEM 不是銀彈,它有很多限制和假設。但對於「我有一個理論,想知道數據支不支持」這種問題,它真的是目前最系統化的解答方式。

別怕那些希臘字母。它們只是包裝紙,裡面的邏輯其實你早就懂了。


延伸閱讀

英文資源

中文資源

  • 姚開屏(1993)。結構方程模式的基本原則與符號。國立台灣大學心理學系。— SEM 符號系統和基本原則的經典中文教材
  • 邱皓政(2008)。結構方程模式檢定力分析與樣本數決定。國立中央大學。— 用 RMSEA 決定樣本量的完整方法論
  • 邱皓政(2011)。當 PLS 遇上 SEM:議題與對話。國立臺灣師範大學。— CB-SEM 和 PLS-SEM 的最完整中文比較
  • 鄭中平(2015)。結構方程式模型檢定力分析。國立成功大學。— lavaan 套件做檢定力分析的實務教學
  • 邱皓政。《結構方程模式:LISREL/SIMPLIS 原理與應用》。— 中文 SEM 教科書的入門首選

本文最初發布於 HackMD @BASHCAT

留言

這個網誌中的熱門文章

Arduino 課本可能沒教的事(1)

SI4432 搭配Arduino

燒錄 Arduino mini Pro 燒錄