統計分析

CFA 實作入門:驗證性因素分析步驟與常見錯誤

學生拿著 EFA 的結果來找我,說:「老師,我因素分析跑完了,接下來要跑 CFA 嗎?」

我問:「你為什麼要跑 CFA?」

他愣了一下:「就是…驗證一下?」

這個回答讓我知道,他還沒弄清楚 CFA 是什麼。這也是我想寫這篇的原因——CFA 的概念不難,但實作起來每個步驟都有人反覆在同樣的地方摔倒。

先講一個核心提醒:CFA 不是在證明你的量表一定正確,而是在檢驗你的理論模型是否站得住。 學生最常錯的,不是不會跑,而是把統計決策和理論論證分開了——審稿人最常抓的,也正是這個斷裂。

CFA 是什麼?跟 EFA 有什麼不同?

探索性因素分析(EFA)是在「不確定結構」的情況下使用的——你不確定有幾個因素、哪些題目應該歸在一起,所以讓資料自己告訴你。

驗證性因素分析(CFA)完全相反。你已經有一個明確的理論模型,然後用資料去驗證這個結構跟實際資料的配適程度。

CFA 的前提是:你有理論依據。 最常見的誤用是先跑 EFA 找出因素結構,再用同一份資料跑 CFA「驗證」——你用資料找出一個結構,再用同一份資料確認它,這叫過度擬合,不叫驗證。我看過不少論文這樣做,審稿意見也常常在這裡被抓到。

CFA 實作五步驟

驗證性因素分析 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

CFA 實作入門:驗證性因素分析步驟與常見錯誤 Read More »

前後測統計方法選擇:常態假設怎麼看?

「老師,我跑完前後測,用 paired t-test 對嗎?」

這是我最常聽到的一句話——不是因為學生懶,而是因為沒有人告訴他們,方法選擇其實有一個清楚的判斷邏輯。

選哪種方法?兩個關鍵問題

前後測的統計方法,取決於兩件事:

  1. 你的資料是否符合常態分佈假設?
  2. 你有幾個時間點要比較?

這兩個問題決定了一切。

前後測統計方法選擇流程

四種情境與對應方法

常態 + 2個時間點(前測、後測)→ Paired t-test(配對樣本 t 檢定)

常態 + 3個以上時間點(前測、後測1、後測2……)→ Repeated-measures ANOVA(重複量數變異數分析)

非常態 + 2個時間點Wilcoxon signed-rank test

非常態 + 3個以上時間點Friedman test

怎麼確認常態假設?

很多人直接跑 Kolmogorov-Smirnov(K-S)檢定,但這是個常見錯誤:K-S 在樣本大的時候幾乎一定拒絕常態假設,讓你誤以為資料不符合常態分佈。

建議的做法:

  • 樣本數 < 50:使用 Shapiro-Wilk 檢定
  • 樣本數 ≥ 50:用 Q-Q Plot 加上 Skewness / Kurtosis 目視判斷

⚠️ 就算常態假設輕微違反,樣本數 > 30 時,t-test 仍然足夠穩健,不一定要換成非參數方法。

選定方法之後:怎麼呈現前後測的差異?

確定用哪種統計方法後,還有一個問題:你要用「差值」直接分析,還是用統計控制的方式?這涉及兩種常見的前後測分析策略:

  • 進步分數(Gain scores):後測分數 − 前測分數,直接拿差值去分析
  • 殘餘改變分數(Residualized change score):用迴歸控制前測後,取後測的殘差,更能排除前測水準的影響

這兩種做法各有適用情境,詳細說明請參考延伸閱讀。

延伸閱讀

如果有問題,歡迎留言。

更新記錄:2026-03 新建,整合常態假設判斷與方法選擇邏輯。

前後測統計方法選擇:常態假設怎麼看? Read More »

Stata: Anova的pairwise comparison 多重比較

在之前的文章提過什麼是多重比較,這是在作完regression或anova之後,針對一個categorical variable進行比較。

舉具體一點的例子來說。如果你有一個categorical variable叫condition,是你的實驗情況。0是對照組,1是實驗1,2是實驗2,3是實驗3。

如果你用anova分析,你會先分析出有組間差異,這是主效應 (main effect)。但是具體是哪兩組之間有差異,還必須進一步作分析才知道。如果你沒有特定的理論依據,來針對哪幾組作比較,那你必須作多重比較 (multiple comparisons) 來知道哪兩組存在差異。

在Stata裡面,作多重比較很容易,只要在跑完anova之後,可以直接用oneway的option來作事後比較

Stata: Anova的pairwise comparison 多重比較 Read More »

Socioviz:分析Twitter的免費工具

許多人都對使用social media有興趣,因為這些資料就在網路上,只要找到方式下載並分析就可以,不需要與人互動或作長時間的觀察來搜集資料。

今天介紹一個好用的免費工具:Socioviz。這網站可以讓你輸入關鍵字,從中抽出相關的hashtag。

網址:http://socioviz.net/…

Socioviz:分析Twitter的免費工具 Read More »

Scroll to Top