Home
探索 Uedu
學生控制台
註冊會員/登入
研究知情同意中心
教師控制台
課程設定
支援與訊息
Uptime 數據

UeduGPTs

--

Jupyters

2

UG26 CISOSE26
臺北 AQI 26 · 臺中 AQI 19 · 臺南 AQI 18 · 高雄 AQI 17

AI 回覆桌面通知

AI 助教回覆完成時顯示桌面通知

聊天訊息通知

同學在討論區發送訊息時通知

聲音通知

每當有新通知時播放提示音

縱貫與成長模型

成長模型進階:共變結構、收縮估計與條件成長

從隨機效果共變矩陣到 slopes-as-outcomes,看懂軌跡分布背後真正在估什麼

兩個人的成長速度可以比,但你比的是「真實差異」還是「測量噪音」?

入門篇我們學會了用線性成長模型(linear growth model)追蹤同一群人的學習軌跡:每個人有自己的起點(截距,intercept)與斜率(slope),整個群體的平均軌跡加上個體差異,就拼出了「軌跡的分布」。但只要你開始認真用這套工具,幾個尖銳的問題立刻浮現:

  • 我說「小明進步比小華快」,但這個「快」有多少是真的,多少只是兩次測驗的隨機誤差被我當成了趨勢?
  • 為什麼有些人一開始分數低、後來進步特別快?這個「起點低、斜率高」的負相關,是真實的補償現象,還是模型結構造出來的假象?
  • 學習軌跡真的是直線嗎?如果不是,我該怎麼描述「先快後慢」的飽和曲線,又不至於過度配適(overfitting)?

這篇進階篇就針對這三件事:截距與斜率的共變結構非線性軌跡的參數化,以及把成長率本身當成被預測對象的條件成長模型。我們會把入門篇那個「每個人一條線」的圖像,拆解到它的隨機效果共變矩陣(random-effects covariance matrix)層級。

縱貫與成長模型進階概念示意圖

隨機效果不是兩個獨立的數字,而是一個共變矩陣

入門篇通常把線性成長模型寫成這樣(第 $i$ 個人在第 $t$ 次測量):

$$ y_{it} = (\beta_0 + u_{0i}) + (\beta_1 + u_{1i})\,\text{time}_{it} + \varepsilon_{it} $$

其中 $\beta_0, \beta_1$ 是固定效果(fixed effects,群體平均的起點與斜率),$u_{0i}, u_{1i}$ 是個體偏離群體的隨機效果(random effects)。入門篇會說「每個人有自己的截距與斜率」,但常常含糊帶過的,是 $u_{0i}$ 和 $u_{1i}$ 不是兩個獨立的隨機數,它們服從一個聯合的二維常態分布:

$$ \begin{pmatrix} u_{0i} \\ u_{1i} \end{pmatrix} \sim \mathcal{N}\!\left( \begin{pmatrix} 0 \\ 0 \end{pmatrix},\; \mathbf{G} = \begin{pmatrix} \tau_0^2 & \tau_{01} \\ \tau_{01} & \tau_1^2 \end{pmatrix} \right) $$

這個 $\mathbf{G}$ 矩陣才是成長模型真正的心臟。讓我們逐格讀它:

  • $\tau_0^2$:起點的個體差異變異。如果它很大,表示學生一開始程度就分得很開。
  • $\tau_1^2$:斜率的個體差異變異。如果它很大,表示「每個人進步速度差很多」;如果它接近 $0$,表示大家進步速度其實差不多,你看到的軌跡分歧主要來自起點不同。
  • $\tau_{01}$:起點與斜率的共變數。換算成相關係數 $\rho_{01} = \tau_{01} / (\tau_0 \tau_1)$。這個數字常被誤讀,是本節重點。

很多人看到 $\rho_{01} < 0$(起點低的人斜率高)就興奮地宣稱「發現了補償效應、後段生追上來了」。先別急。

看一個例子:負相關可能是「測量點選擇」的假象

考慮一個關鍵但容易忽略的事實:截距的定義取決於你把 time 的原點設在哪裡。如果 $\text{time}=0$ 設在「第一次測驗」,那截距 $u_{0i}$ 就是「第一次測驗時的個體偏離」;如果你把原點移到「最後一次測驗」或「測驗中點」,截距的意義完全不同,連帶 $\tau_0^2$ 與 $\tau_{01}$ 都會改變。

數學上,若把時間平移 $c$ 個單位(新的 $\text{time}^* = \text{time} - c$),新的截距隨機效果變成 $u_{0i}^* = u_{0i} + c\,u_{1i}$,於是:

$$ \tau_{01}^* = \text{Cov}(u_{0i}^*, u_{1i}) = \tau_{01} + c\,\tau_1^2 $$

代一組數字:假設原始 $\tau_{01} = -2$、$\tau_1^2 = 0.5$。在原點處看起來起點與斜率負相關。但如果我把時間中心移到 $c = 4$(例如把原點從第一次測驗移到第五次):

$$ \tau_{01}^* = -2 + 4 \times 0.5 = 0 $$

同一份資料、同一群人,只因為「我把截距定義在哪一個時間點」,起點—斜率相關就從負變成零。這告訴我們一件深刻的事:「起點低的人進步快」這句話,只有在你明確指定『起點是哪一刻』時才有意義。報告成長模型時,務必說清楚 time 的編碼(centering),否則 $\rho_{01}$ 幾乎無法解讀。

實務建議:把 $\text{time}=0$ 設在一個有實質意義的時間點(通常是基線/第一次,或研究關心的某個介入時點),並在論文中明說。

把成長率拉到地面:時間怎麼編碼決定你能說什麼

延續上面的洞察,時間編碼(time coding)不只影響相關係數,還決定整個模型能回答的問題。三種常見編碼:

  1. 基線中心(baseline centering):$\text{time} = 0, 1, 2, 3, \dots$。截距 = 起點程度,最直覺。
  2. 終點中心(endpoint centering):$\text{time} = -3, -2, -1, 0$。截距 = 最終程度,適合關心「最後達到的水準」。
  3. 正交多項式(orthogonal polynomials):當你要配非線性時,用正交化的時間項可以降低高次項之間的共線性,讓估計更穩定。

動手算一下:一個三波資料的斜率估計與其不確定性

假設我們追蹤一位學生三次測驗,時間編碼 $0, 1, 2$,分數為 $60, 68, 79$。如果單獨對這一個人做最小平方(OLS)擬合 $y = a + b\cdot\text{time}$:

時間平均 $\bar{t} = 1$,分數平均 $\bar{y} = 69$。

$$ b = \frac{\sum (t-\bar{t})(y-\bar{y})}{\sum (t-\bar{t})^2} = \frac{(-1)(-9) + (0)(-1) + (1)(10)}{(-1)^2 + 0^2 + 1^2} = \frac{9 + 0 + 10}{2} = 9.5 $$

所以這位學生「每次測驗進步 9.5 分」。但只有三個點,這個 9.5 的不確定性非常大。殘差是多少?預測值 $\hat{y} = 59.5 + 9.5\cdot t$ 給出 $59.5, 69, 78.5$,殘差為 $0.5, -1, 0.5$,殘差平方和 $\text{SSE} = 0.25 + 1 + 0.25 = 1.5$,殘差自由度 $= 3 - 2 = 1$,於是 $\hat{\sigma}^2 = 1.5$。斜率的標準誤:

$$ \text{SE}(b) = \sqrt{\frac{\hat{\sigma}^2}{\sum(t-\bar{t})^2}} = \sqrt{\frac{1.5}{2}} \approx 0.87 $$

斜率 $9.5$、標準誤 $0.87$ —— 看似精確。但這是「假裝只有這一個人、且這就是真值」的天真估計。多層次成長模型(multilevel growth model)的真正威力在於:它不會孤立地相信每個人的 OLS 斜率,而是把每個人的斜率往群體平均斜率拉一點,這叫收縮(shrinkage)

收縮的程度由信度(reliability)決定。對個體 $i$ 的斜率,經驗貝氏(empirical Bayes)估計大致是:

$$ \tilde{b}_i = \lambda_i\, b_i^{\text{OLS}} + (1 - \lambda_i)\,\beta_1, \qquad \lambda_i = \frac{\tau_1^2}{\tau_1^2 + \text{Var}(b_i^{\text{OLS}})} $$

當某個人的資料很少或很吵($\text{Var}(b_i^{\text{OLS}})$ 大),$\lambda_i$ 趨近 $0$,他的估計斜率就被大幅拉向群體平均;當資料多又乾淨,$\lambda_i$ 趨近 $1$,保留他自己的斜率。這正面回答了開場第一個問題:你看到的「個體差異」有多少是真實的訊號——由 $\tau_1^2$(真實斜率變異)相對於測量噪音的比例決定。如果 $\tau_1^2$ 估出來接近 $0$,那麼「小明進步比小華快」這句話幾乎全是噪音,不該採信。

軌跡不是直線:非線性成長的兩種思路

開場第三個問題:學習很少是等速直線。技能習得常見「先快後慢」的負加速(飽和),遺忘則是「先快後慢」的衰減。硬套直線會系統性地低估早期、高估後期。兩種主流做法:

1. 多項式成長(polynomial growth)

加入時間的二次項:

$$ y_{it} = \beta_0 + \beta_1 \text{time}_{it} + \beta_2 \text{time}_{it}^2 + (\text{隨機效果}) + \varepsilon_{it} $$

$\beta_2 < 0$ 給出開口向下的拋物線(先升後可能下降)。優點是仍在線性模型框架內、好估計;缺點是二次曲線會「掉頭」,外推時很危險,而且高次項的隨機效果讓 $\mathbf{G}$ 矩陣迅速膨脹(三個隨機效果就是 $3\times3$ 共變矩陣,要估 6 個參數)。實務上常把二次項設為純固定效果、不放隨機效果,以求收斂。

2. 非線性參數化(intrinsically nonlinear)

更符合理論的是直接用一條飽和曲線,例如指數趨近一個漸近線(asymptote):

$$ y_{it} = \alpha_i - (\alpha_i - \beta_i)\,e^{-\gamma_i\, \text{time}_{it}} + \varepsilon_{it} $$

這裡 $\alpha_i$ 是個體的漸近水準(最終能達到的天花板),$\beta_i$ 是起點,$\gamma_i > 0$ 是趨近速率。這三個參數每一個都可以有實質心理學意義,且都可以再被背景變項(如先備知識、學習動機)預測。代價是:這是真正的非線性混合模型(nonlinear mixed model),估計較難收斂,需要好的起始值。

選擇原則:讓理論引導函數形式。如果你的構念有明確的天花板(如精熟測驗的滿分、反應時間的生理下限),用飽和曲線;如果只是要捕捉局部彎曲、不外推,二次多項式夠用。不要因為加了高次項 $R^2$ 上升就沾沾自喜——那往往是過度配適。用資訊準則(AIC/BIC)或交叉驗證來節制模型複雜度。

條件成長模型:把「斜率」當成被解釋的對象

到目前為止 $\beta_1$ 是「群體平均斜率」,$u_{1i}$ 是「個體偏離」。條件成長模型(conditional growth model)的核心一步,是讓 Level-2(個體層)的背景變項去預測這些隨機效果。這在多層次寫法裡叫做「斜率即結果」(slopes-as-outcomes):

$$ \begin{aligned} \text{Level 1:} \quad & y_{it} = \pi_{0i} + \pi_{1i}\,\text{time}_{it} + \varepsilon_{it} \\ \text{Level 2:} \quad & \pi_{0i} = \gamma_{00} + \gamma_{01} W_i + u_{0i} \\ & \pi_{1i} = \gamma_{10} + \gamma_{11} W_i + u_{1i} \end{aligned} $$

其中 $W_i$ 是個體層的預測變項(如是否接受某教學介入、基線動機分數)。關鍵是 $\gamma_{11}$:它代表 $W$ 對「成長速率」的效果,也就是一個跨層交互作用(cross-level interaction)——$W \times \text{time}$。把上式代回合併,就會看到 $\gamma_{11} W_i \text{time}_{it}$ 這一項。

這正是縱貫研究最有價值的地方:橫斷研究只能問「動機高的人分數高嗎」,縱貫+條件成長能問「動機高的人是不是進步得更快」。後者才是因果機制的真正候選。

看一個例子:介入對成長率的效果

假設一個閱讀介入研究,$W_i = 1$ 為實驗組、$0$ 為對照組,時間編碼為週數 $0,2,4,6,8$。估出:

  • $\gamma_{10} = 1.2$:對照組平均每週進步 1.2 分。
  • $\gamma_{11} = 0.8$:實驗組的斜率比對照組多 0.8。

所以實驗組平均每週進步 $1.2 + 0.8 = 2.0$ 分。八週下來,兩組的差距拉開到 $0.8 \times 8 = 6.4$ 分。注意:若 $\gamma_{01}$(介入對截距的效果)不顯著,表示兩組起點相同(隨機分派成功),差異純粹來自成長速率——這是「介入改變了學習軌跡的斜率」最乾淨的證據。

報告時別只看 $\gamma_{11}$ 顯著與否,還要看它相對於 $\tau_1^2$ 的大小:介入解釋了多少原本的斜率變異?這叫 Level-2 的 pseudo-$R^2$:

$$ R^2_{\text{slope}} = \frac{\tau_1^2(\text{無條件}) - \tau_1^2(\text{加入 }W)}{\tau_1^2(\text{無條件})} $$

如果加入介入後斜率變異從 $0.5$ 降到 $0.3$,則 $R^2_{\text{slope}} = (0.5-0.3)/0.5 = 0.4$,介入解釋了 40% 的個體斜率差異。剩下 60% 還有待其他變項解釋——這比單看 p 值有資訊得多。

重點回顧

  • 成長模型的核心不是「每人一條線」,而是隨機效果的共變矩陣 $\mathbf{G}$:$\tau_0^2$(起點變異)、$\tau_1^2$(斜率變異)、$\tau_{01}$(起點—斜率共變)三者一起定義了「軌跡的分布」。
  • 起點—斜率相關 $\rho_{01}$ 高度依賴時間原點如何編碼;平移時間會改變 $\tau_{01}$,所以「起點低的人進步快」只有在指定「起點是哪一刻」後才能解讀。
  • 個體斜率不該天真採用各自的 OLS 估計;多層次模型透過收縮把不可靠的個體估計拉向群體平均,收縮量由信度 $\lambda_i = \tau_1^2/(\tau_1^2 + \text{Var}(b_i))$ 決定。
  • 非線性軌跡可用多項式(好估但會掉頭、勿外推)或飽和曲線(參數有實質意義但難收斂);用 AIC/BIC 節制複雜度,別被 $R^2$ 上升誘惑。
  • 條件成長模型讓背景變項預測斜率(slopes-as-outcomes),其本質是跨層交互作用 $W \times \text{time}$;這才能回答「誰進步得更快」,並可用 pseudo-$R^2$ 量化解釋力。

深入探討(研究所視角)

成長模型與潛在成長曲線模型(LGCM)的等價與分歧。 上文用多層次(HLM)框架寫成長模型,但同一個線性成長模型也能寫成結構方程(SEM)下的潛在成長曲線模型(latent growth curve model, LGCM),把截距與斜率設成兩個潛在因子,因子負荷量固定為時間編碼(截距全為 $1$,斜率為 $0,1,2,\dots$)。兩者在「時間平衡、編碼固定」時數學等價。但 SEM 取向開放了 HLM 不易做的延伸:(1) 自由估計時間負荷(latent basis model),讓資料自己決定軌跡形狀,等於用一個半參數曲線替代強加的線性;(2) 把成長因子當作中介或結果,串成成長中介模型;(3) 多群組比較與測量恆等性檢驗。

測量恆等性(measurement invariance)是縱貫推論的隱形前提。 當 $y_{it}$ 是由多題量表加總而來,我們默默假設「這把尺在第一波和第八波量的是同一個構念、同一個刻度」。若量表在不同時間點的因子負荷或截距漂移(缺乏 longitudinal invariance),那麼觀察到的「成長」可能部分是測量本身的變化,而非真實構念的成長——這在發展心理計量上是嚴重的混淆。嚴謹的縱貫研究應先以縱貫驗證性因素分析(longitudinal CFA)檢驗 configural → metric → scalar 恆等性,確認至少部分純量恆等後,成長參數才有跨時間可比性。

為什麼不能用變化分數迴歸取代成長模型。 一個常見的次優做法是算「後測減前測」的變化分數(change score)再去迴歸。問題有二:其一,變化分數繼承了兩次測量的誤差,信度往往很低;其二,把變化分數對前測迴歸會碰上迴歸到平均(regression to the mean)與 Lord's Paradox——對基線做不做調整會得到方向相反的結論。成長模型透過明確建模測量誤差 $\varepsilon_{it}$ 與真分數軌跡,原則上能繞開這些陷阱,但前提是模型設定(誤差結構、時間編碼)正確。

誤差結構:別預設殘差獨立同分布。 入門模型假設 $\varepsilon_{it}$ 彼此獨立且同變異。真實縱貫資料常違反此假設:相鄰時間點的殘差自相關(autocorrelation,如 AR(1))、變異隨時間改變(heteroscedasticity)。忽略這些會低估標準誤、誇大顯著性。進階做法是在 Level-1 引入結構化的殘差共變矩陣 $\mathbf{R}$(如 AR(1)、Toeplitz、unstructured),並用 BIC 比較。當隨機斜率 $\tau_1^2$ 與 AR(1) 殘差都想解釋「相鄰時間相似」時,兩者會競爭,需謹慎設定避免不可辨識(non-identifiability)。

缺失資料與估計。 縱貫資料幾乎必有流失(attrition)。多層次/SEM 成長模型用最大概似(FIML)估計時,在「隨機缺失」(MAR)假設下能無偏地使用所有可得觀測,不需聽從「只保留完整個案」的舊式做法。但 MAR 是無法檢驗的假設;若流失與未觀測的成長有關(如進步慢的人退出研究,屬 MNAR),參數會偏誤。此時需考慮選擇模型(selection model)或模式混合模型(pattern-mixture model)做敏感度分析。這也提醒我們:縱貫研究的效度,最終往往不是輸在統計模型,而是輸在資料如何流失——這是設計問題,不是估計問題。

AI 共讀助教正在陪你讀:成長模型進階:共變結構、收縮估計與條件成長
嗨!我是這篇文章的共讀助教,只根據〈成長模型進階:共變結構、收縮估計與條件成長〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。