學生拿著 EFA 的結果來找我,說:「老師,我因素分析跑完了,接下來要跑 CFA 嗎?」
我問:「你為什麼要跑 CFA?」
他愣了一下:「就是…驗證一下?」
這個回答讓我知道,他還沒弄清楚 CFA 是什麼。這也是我想寫這篇的原因——CFA 的概念不難,但實作起來每個步驟都有人反覆在同樣的地方摔倒。
先講一個核心提醒:CFA 不是在證明你的量表一定正確,而是在檢驗你的理論模型是否站得住。 學生最常錯的,不是不會跑,而是把統計決策和理論論證分開了——審稿人最常抓的,也正是這個斷裂。
CFA 是什麼?跟 EFA 有什麼不同?
探索性因素分析(EFA)是在「不確定結構」的情況下使用的——你不確定有幾個因素、哪些題目應該歸在一起,所以讓資料自己告訴你。
驗證性因素分析(CFA)完全相反。你已經有一個明確的理論模型,然後用資料去驗證這個結構跟實際資料的配適程度。
CFA 的前提是:你有理論依據。 最常見的誤用是先跑 EFA 找出因素結構,再用同一份資料跑 CFA「驗證」——你用資料找出一個結構,再用同一份資料確認它,這叫過度擬合,不叫驗證。我看過不少論文這樣做,審稿意見也常常在這裡被抓到。
CFA 實作五步驟

步驟一:建立理論模型
在正式跑分析之前,先把測量模型畫在紙上。你需要清楚指定:幾個潛在因素、每個因素對應哪些題項、因素之間是否允許相關、有沒有 cross-loading。
這個步驟很多學生跳過,直接打開 AMOS 開始畫。但跳過這步的學生,在後面遇到問題的時候,通常不知道問題出在模型設定還是資料本身。先把模型畫在紙上,思路會清楚很多。
在畫模型之前,我會要求學生逐題問自己:「這一題為什麼只能屬於這個因素,不屬於別的?」 這個問題問得清楚,後面很多麻煩就不會出現。
容易犯錯的地方:
- 每個因素的題項數不夠。 我常看到學生把一個因素只放兩題,說「文獻原版就是這樣」。問題是兩個題項的因素在統計上無法識別(just-identified),連配適度指標都算不出來。最少要三題,建議四題以上。如果原始量表某個分量表真的只有兩題,需要在方法段說明並討論限制。
- 跨文化量表直接套用原版因素結構。 學生拿英文量表翻成中文,就直接假設結構不變。翻譯後的題項語意可能已經不同,嚴格來說應該先用新的資料跑 EFA 確認結構,或至少在論文裡說明這個限制。
- 構念邊界不清。 審稿人最常抓的是:某些題項文字看起來同時可屬於兩個因素,前面不先處理,後面 MI 和 cross-loading 會一直爆。
步驟二:設定模型規格
在 AMOS 裡,你在圖形介面畫橢圓(潛在因素)和方框(題項),用箭頭連起來。在 R lavaan 裡,用 =~ 語法定義:
f1 =~ q1 + q2 + q3 + q4 f2 =~ q5 + q6 + q7 + q8 f3 =~ q9 + q10 + q11 + q12
模型畫完還有一件必須做的事:固定因子尺度。 潛在因素本身沒有測量單位,需要人為固定一個尺度,模型才能估計。兩種做法:
- 固定一個負荷量為 1(marker variable): AMOS 和 lavaan 預設。每個因素的第一個題項路徑固定為 1。
- 固定潛在因素的變異量為 1: 讓所有負荷量都自由估計,適合要比較不同題項貢獻時。lavaan 語法:
std.lv = TRUE。
容易犯錯的地方:
- 「模型跑不動」時搞不清楚是理論問題還是技術問題。 學生看到 unidentified 或 Heywood case,常以為是軟體 bug;其實很多時候是模型規格本身有問題。排查順序:先確認尺度設定是否完成 → 每個因素題項數是否足夠 → 有無不合理的 cross-loading 或誤差相關 → 有無迴圈路徑(A → B → A)。
- lavaan 不會報識別錯誤。 它會悄悄給你一個無意義的結果。我的習慣是跑完之後先看警告訊息,再看殘差變異量有沒有負值(negative residual variance,即 Heywood case)——出現這個就不能繼續報告,要先處理。
- 一開始畫模型時就偷偷把誤差項連起來。 審稿人很容易在這裡問:理論根據是什麼?模型規格階段加的誤差相關,和步驟五 MI 修正加的一樣,都需要理論說明。
步驟三:模型估計
執行分析前,先做三件事。
一、檢查資料常態性。 跑每個題項的偏態(skewness)和峰態(kurtosis):
- |skewness| < 2,|kurtosis| < 7 → 可以用 ML
- 超過上述值 → 改用 MLR
- Likert 5 點以下且明顯偏態 → 用 WLSMV(需 Mplus 或 lavaan)
SPSS 查偏態峰態:Analyze → Descriptive Statistics → Explore,勾選 Normality。
二、確認缺失值狀況。 不能讓軟體自動 listwise deletion 就算了,要知道缺失比例,判斷是否隨機缺失(MCAR / MAR),再決定處理方式。
三、確認資料準備完整。 這是學生最容易漏掉的:反向題是否已正確轉碼?有無異常離群值?這兩件事不確認,CFA 結果再漂亮也站不住腳。
然後執行:AMOS:Analyze → Calculate Estimates,勾選 Standardized estimates 和 Squared multiple correlations。lavaan:fit <- cfa(model, data = df, estimator = "ML"),然後 summary(fit, fit.measures = TRUE, standardized = TRUE)。
容易犯錯的地方:
- Likert 資料沒查常態就用 ML。 我看過最多的情況是學生跑完發現 RMSEA 偏高,一直以為是模型問題,改了又改。其實改用 MLR 或 WLSMV 之後配適度就改善了——問題不在模型,在估計方法選錯了。
- 樣本數判斷太粗糙。 學生常問「200 夠不夠?」但這個問題沒有固定答案。樣本數要和模型複雜度一起看——因素多、題項多的模型,需要更大的樣本。不確定的話,先做 power analysis 再決定。
- 跑完跳過警告訊息直接看負荷量。 AMOS 的警告是紅字,lavaan 的警告在
summary()最上方。警告不是可以忽略的裝飾,它通常在告訴你有什麼根本性的問題。
步驟四:配適度評估
拿到輸出後,先看配適指標,再看負荷量。如果整體模型配適不佳,個別負荷量是否顯著並不重要。
標準報告組合(五個指標一起報):
- χ²/df < 3(可接受 < 5)。不單獨報告 χ² p 值,樣本越大越顯著,失去判斷意義。
- CFI ≥ 0.95(寬鬆標準 0.90)
- TLI ≥ 0.95:和 CFI 一起報,TLI 懲罰複雜模型,兩個一起看比較全面。
- RMSEA ≤ 0.06,同時報告 90% CI,CI 上界 ≤ 0.08 仍可接受。
- SRMR ≤ 0.08
配適不好,是在告訴你理論與資料的關係有問題,不只是數字不好看。三種情境:
- 全部通過:繼續看局部診斷(負荷量、殘差、因素間相關)。
- 部分未達標(CFI = 0.92、RMSEA = 0.07):看 MI 有沒有理論上合理的修正空間,並在論文裡說明。
- 多項未達標(CFI = 0.85、RMSEA = 0.11):模型有根本問題,不能靠 MI 硬修,要回去重新審視理論假設或量表本身。
容易犯錯的地方:
- 只報告一個好看的指標。 CFI = 0.97 很漂亮就只報 CFI,但 RMSEA = 0.09 卻不提。審稿人一眼就看得出來。五個指標要整組報告。
- 只看整體配適,忽略局部診斷。 整體 CFI 過關,但某幾題負荷量偏低(λ < 0.40)、標準化殘差異常、因素間相關過高(r > 0.85,可能有區別效度問題)——這些都是審稿人很常追問的地方。
- 搞不清楚 CFI 低和 RMSEA 高背後的原因。 CFI 低通常是模型整體結構有問題;RMSEA 高有時是樣本數不足,有時是某幾個題項的殘差特別大。要知道是哪個問題,才能對症下藥。
步驟五:模型修正與報告
配適度未達標時,看修正指標(Modification Indices, MI):
- AMOS:View → Text Output → Modification Indices
- lavaan:
modindices(fit, sort = TRUE, maximum.number = 10)
判斷要不要修正,問三個問題:這兩題措辭有重疊嗎?理論上說得通嗎?MI 建議的改善量 ≥ 10?三個都是「是」才修正。每次只修一個參數,修完重跑,再看新的 MI。
容易犯錯的地方:
- 把模型修正當成「把數字修漂亮」。 我看過學生把 MI 前十名全部加進去,CFI 從 0.88 跑到 0.97,然後覺得大功告成。我問他:「你為什麼讓第 3 題和第 11 題的誤差相關?」他說:「因為 MI 說可以。」這個回答在答辯上是致命的。你做的每一個統計決定,都要能說出理由。
- 缺乏修正紀錄與理論說明。 若你刪了題、加了誤差相關、改了模型,但沒交代「為什麼改、改了什麼、改後理論是否仍成立」,審稿人很容易質疑是 data-driven overfitting。
- 修正後沒有交叉驗證。 理想做法是修正後用獨立樣本再驗一次,確認修正結果不是過度擬合。即使做不到,也要在論文裡提到這個限制。
最終論文報告清單:
- 標準化因素負荷量(λ):建議表格呈現。λ ≥ 0.70 理想,0.50–0.69 可接受,< 0.40 應考慮刪題。
- 五個配適指標:χ²/df、CFI、TLI、RMSEA(含 90% CI)、SRMR。
- 因素間相關矩陣(多因素模型)。
- AVE 與 CR:AVE ≥ 0.50 代表收斂效度良好,CR ≥ 0.70 代表組合信度良好。
- 測量不變性(如果有跨組比較)。
工具選擇:AMOS vs R lavaan vs Mplus
三個工具都可以跑 CFA,適合不同情境:
- AMOS:圖形介面直觀,初學者友善,但不支援 WLSMV,需搭配 SPSS 授權。
- R lavaan:免費開源,支援 ML / MLR / WLSMV,學術界使用率快速上升。搭配
semPlot可繪製路徑圖。 - Mplus:功能最強,適合複雜模型(多層次 CFA、縱向不變性等),授權費用較高。
資料是連續變數且接近常態 → AMOS 夠用。Likert 量表或需要 MLR / WLSMV → 建議 lavaan 或 Mplus。
如果有問題,歡迎留言。
更新記錄:2026-03 首次發布。