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

UeduGPTs

--

Jupyters

2

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

AI 回覆桌面通知

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

聊天訊息通知

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

聲音通知

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

遺漏值與資料品質

遺漏值處理:MCAR/MAR/MNAR 與多重插補

當問卷未答、研究退出造成資料缺漏,刪掉與亂補都會出錯——從三種遺漏機制到多重插補與敏感度分析的完整指南

三千份問卷裡,缺的那一格藏著什麼祕密?

期末,你回收了三千份學習動機問卷。匯入試算表後才發現:有人跳過了「家庭月收入」,有人在第二週退出研究、整段生理數據空白,還有人填到一半關掉瀏覽器。你打開統計軟體,按下分析,它默默地把所有「不完整」的列刪掉——剩下一千八百份。那一千兩百份消失的資料,真的只是「少了一點點」嗎?

這個問題比想像中嚴重。被刪掉的列若不是隨機消失,而是「成績差的人比較不想填動機問卷」「壓力大的人比較容易退出」,那麼你留下的一千八百份就是一個被悄悄篩選過的偏誤樣本。你以為自己在分析「全班」,其實只在分析「願意留下的那群人」。本篇要回答的,正是統計學裡最容易被忽略、卻最致命的一環:當資料有缺,我們該怎麼正確地處理,而不是讓軟體幫我們做了錯誤的決定。

遺漏值與資料品質概念示意圖

遺漏不是一種,而是三種:MCAR、MAR、MNAR

統計學家 Donald Rubin 在 1976 年提出一個關鍵洞見:遺漏值要怎麼處理,取決於「資料為什麼會缺」。同樣是一格空白,背後的機制不同,後果天差地遠。我們用 $Y$ 代表完整資料,$R$ 代表「遺漏指示變數」($R=1$ 表示觀測到、$R=0$ 表示遺漏),把 $Y$ 拆成觀測到的部分 $Y_{obs}$ 與遺漏的部分 $Y_{mis}$。三種機制定義如下。

MCAR(Missing Completely At Random,完全隨機遺漏):遺漏與任何變數都無關,無論是觀測到的或沒觀測到的。

$$P(R \mid Y_{obs}, Y_{mis}) = P(R)$$

例如問卷因印表機卡紙導致某幾份缺第三頁、伺服器隨機掉封包。這是最理想的情況:留下的樣本是母體的一個隨機子樣本,刪掉缺漏列「只損失效率(樣本變小),不造成偏誤」。但 MCAR 在真實教育資料中極為罕見。

MAR(Missing At Random,隨機遺漏):遺漏與「觀測到的變數」有關,但在控制這些觀測變數後,與「遺漏值本身」無關。

$$P(R \mid Y_{obs}, Y_{mis}) = P(R \mid Y_{obs})$$

例如:低年級學生比較不願意填家庭收入欄,但只要我們有記錄「年級」這個觀測變數,那麼在同一年級內部,填或不填收入與收入高低無關。MAR 是多數現代方法(多重插補、FIML)的工作假設——它允許遺漏有系統性,但要求這套系統性「可被觀測變數解釋」。

MNAR(Missing Not At Random,非隨機遺漏):在控制所有觀測變數後,遺漏仍然與遺漏值本身有關。

$$P(R \mid Y_{obs}, Y_{mis}) \text{ 仍依賴 } Y_{mis}$$

例如:高收入者基於隱私顧慮特別不願揭露收入——缺漏直接由「收入多少」決定。又例如憂鬱程度高的學生更容易退出心理量表,使得「憂鬱分數」的缺漏本身就由憂鬱分數驅動。這是最棘手的情況,後面會說明為何它「無法僅靠手上的資料判定」。

為什麼「直接刪掉」會出事:刪除法的偏誤

最常見的預設做法是 listwise deletion(完整個案分析):只要一列有任何缺漏,整列丟棄。它的問題有兩層。

第一,效率損失。即使在 MCAR 下沒有偏誤,但若每個變數各缺 5%、共 20 個變數,一列「全部都有」的機率可能只剩 $0.95^{20} \approx 0.36$——你可能丟掉超過六成的列,標準誤大幅膨脹。

第二,也更嚴重的是偏誤。在 MAR 或 MNAR 下,被刪掉的列不是隨機的。前面的例子裡,若「成績差的學生較少填動機問卷」,listwise deletion 留下的是成績偏高的子樣本,於是你估出來的「平均動機」「動機與成績的相關」全都被扭曲。

另一種 pairwise deletion(成對刪除) 試圖搶救:計算每一對變數的相關時,只用「這兩個變數都有值」的列。它保留了更多資訊,但帶來新麻煩——不同的相關係數是用不同的子樣本算出來的,拼出來的共變異數矩陣可能在數學上不一致(非正定),導致迴歸係數或因素分析估計出錯,樣本數 $N$ 也變得難以定義。兩種刪除法都不該作為預設。

單一插補的陷阱:補一個數字,騙了變異數

既然刪掉不好,那把缺的格子「補起來」呢?最直覺的是 均值插補(mean imputation):用該欄的平均值填所有缺漏。這看似合理,卻犯了致命錯誤——它讓你高估了確定性。

想像某變數有 100 個值、缺了 30 個,你用觀測到的 70 個的平均值補上那 30 格。結果是:這 30 個補進來的點全部疊在平均線上,整欄的變異數被人為壓縮,相關係數被稀釋趨近 0。更糟的是,後續分析(如迴歸)會「以為」這 30 個補進來的數字和真實觀測值一樣可靠,標準誤被低估,信賴區間過窄,$p$ 值過小——你會更容易得到「假的顯著」。

迴歸插補(regression imputation) 稍好:用其他變數迴歸預測缺漏值。但它同樣把預測值放在迴歸線上,沒有保留殘差的隨機波動,仍然低估變異。所有「單一插補」共同的根本問題是:它假裝補進來的值是已知的真相,完全忽略了「我們其實不確定它是多少」這件事。 這個不確定性必須被誠實地反映到最終的標準誤裡,這正是多重插補要解決的。

多重插補:用「補很多次」量化不確定性

多重插補(Multiple Imputation, MI)由 Rubin 提出,核心思想優雅:既然我們不知道缺漏值到底是多少,那就不要假裝知道——我們從「給定觀測資料下,缺漏值的後驗分布」中抽取多組合理的補值,產生 $m$ 套各自完整的資料集(通常 $m=5$ 到 $50$)。流程分三步:

  1. 插補(Imputation):建立插補模型,從缺漏值的後驗預測分布中抽 $m$ 次,得到 $m$ 個完整資料集。每一套的補值都帶有隨機波動,彼此不同。
  2. 分析(Analysis):在每一套完整資料集上,跑你原本要做的分析(例如迴歸),得到 $m$ 組估計值 $\hat{Q}_1, \dots, \hat{Q}_m$ 與其變異 $U_1, \dots, U_m$。
  3. 合併(Pooling):用 Rubin 規則把 $m$ 組結果合成一個。

點估計就是平均:

$$\bar{Q} = \frac{1}{m}\sum_{i=1}^{m} \hat{Q}_i$$

變異則同時包含兩種來源——「每套資料內部的抽樣不確定性」與「不同套之間的差異(即補值的不確定性)」:

$$T = \bar{U} + \left(1 + \frac{1}{m}\right) B$$

其中 $\bar{U} = \frac{1}{m}\sum U_i$ 是組內變異(within-imputation variance),$B = \frac{1}{m-1}\sum (\hat{Q}_i - \bar{Q})^2$ 是組間變異(between-imputation variance)。$\left(1+\frac{1}{m}\right)$ 是對有限 $m$ 的修正。

關鍵就在這個 $B$:它把「我們對補值的不確定性」明確地加進總變異裡。這正是均值插補缺失的那一塊——多重插補不會讓你的標準誤虛假地變小。

帶數字的小範例:Rubin 規則怎麼合併

假設我們關心某個迴歸係數 $\beta$(學習動機對成績的效果)。做了 $m=5$ 套插補,每套估出的 $\hat{\beta}_i$ 與其變異 $U_i$(標準誤的平方)如下:

套 $i$ $\hat{\beta}_i$ $U_i$(SE²)
1 0.42 0.0100
2 0.38 0.0090
3 0.50 0.0110
4 0.45 0.0105
5 0.40 0.0095

點估計:$\bar{\beta} = (0.42+0.38+0.50+0.45+0.40)/5 = 0.43$。

組內變異:$\bar{U} = (0.0100+0.0090+0.0110+0.0105+0.0095)/5 = 0.0100$。

組間變異:先算各 $\hat{\beta}_i - 0.43$:$-0.01, -0.05, 0.07, 0.02, -0.03$,平方後為 $0.0001, 0.0025, 0.0049, 0.0004, 0.0009$,總和 $0.0088$。除以 $m-1=4$ 得 $B = 0.0022$。

總變異

$$T = \bar{U} + \left(1+\tfrac{1}{5}\right)B = 0.0100 + 1.2 \times 0.0022 = 0.01264$$

合併標準誤 $\sqrt{T} = \sqrt{0.01264} \approx 0.1124$。

對照一下:若我們只用「第一套」當作單一插補,標準誤會是 $\sqrt{0.0100}=0.10$。多重插補的標準誤 $0.1124$ 較大,這個增幅正是「補值不確定性」的代價。它讓信賴區間誠實地變寬——這不是壞事,而是正確地反映了「我們的資料本來就有缺」這個現實。忽略它,就是在自欺。

我們還能算出一個有用的診斷量——遺漏資訊比例(fraction of missing information, FMI),約略為 $\lambda = \frac{(1+1/m)B}{T} = \frac{0.00264}{0.01264} \approx 0.21$,意思是這個估計約有 21% 的資訊因遺漏而損失。FMI 也能幫我們判斷 $m$ 是否足夠:FMI 越高,需要的 $m$ 越大才能讓結果穩定。

另一條路:最大概似 FIML

多重插補不是唯一的現代解法。FIML(Full Information Maximum Likelihood,完全訊息最大概似) 是另一主流,常見於結構方程模型(SEM)。它的做法不是「補出完整資料」,而是直接修改概似函數——對每一個觀測單位,只用它「實際觀測到的變數」來計算其對總概似的貢獻:

$$\ell(\theta) = \sum_{i=1}^{n} \ell_i(\theta \mid Y_{obs,i})$$

不同個案因為觀測到的變數不同,貢獻的維度也不同,但都被納入同一個概似函數一起估計參數 $\theta$。FIML 同樣在 MAR 假設下提供一致且有效的估計,且不需要產生 $m$ 套資料集、沒有 MI 的蒙地卡羅隨機性(同樣的資料與模型每次跑結果相同)。

MI 與 FIML 在 MAR 下是漸近等價的,實務選擇取決於情境:FIML 在 SEM 中內建、一步到位;MI 則更彈性,能容納類別變數、複雜插補模型,且插補與分析模型可以不同(例如插補時納入分析不會用到的「輔助變數」來支撐 MAR 假設)。

插補模型怎麼設定,決定成敗

多重插補的品質完全取決於插補模型設不設得對。幾個關鍵原則:

插補模型必須「相容」於分析模型。如果你的分析要看「動機 $\times$ 性別」的交互作用,插補模型卻沒納入這個交互項,補出來的值會把交互效果系統性地抹平。一般原則:分析模型裡會用到的所有變數、交互項、非線性項,插補模型都要包含。

盡量納入輔助變數(auxiliary variables)。MAR 假設「遺漏可被觀測變數解釋」,而納入越多與遺漏機制或缺漏變數相關的輔助變數,就越能讓 MAR 假設成立。即使某變數不在你最終的分析模型裡,只要它有助於預測缺漏值,就值得放進插補模型。

連續、類別、計數變數要用對的插補分布。連續變數可用常態線性模型,二元變數用 logistic,類別變數用多項式。實務上常用 MICE(Multivariate Imputation by Chained Equations,鏈式方程多變量插補):對每個有缺的變數,輪流以其餘變數為預測子建立條件模型,迭代抽樣,能彈性混合不同變數型態。

留意完美預測與崩潰。當缺漏比例極高,或某變數幾乎被其他變數完美決定時,插補可能不穩定,需要檢查補值的合理性(例如補出負的年齡、超過量表上限的分數就是警訊)。

MNAR 的根本困境:資料本身無法告訴你

最後回到那個最棘手的問題。能不能直接看資料、判斷遺漏是 MAR 還是 MNAR?答案是:不能,原則上就不行。

原因在於,MAR 與 MNAR 的差別在於「遺漏是否依賴 $Y_{mis}$——那些我們根本沒觀測到的值」。我們手上只有 $Y_{obs}$ 和 $R$,永遠看不到 $Y_{mis}$。任何只用觀測資料做的檢定(例如比較「有填收入的人」與「沒填收入的人」在其他變數上的差異),最多只能否定 MCAR,卻無法區辨 MAR 與 MNAR——因為同一組觀測資料,可以同時與「MAR」和「某個 MNAR 模型」完美相容。MAR 是一個不可由資料檢驗的假設,只能靠領域知識與理論來論證它合不合理。

既然無法檢定,正確的態度是做 敏感度分析(sensitivity analysis):先在 MAR 假設下做主要分析,再刻意設定若干「偏離 MAR」的情境,看結論是否被推翻。常見手法包括 pattern-mixture 模型——明確假設「缺漏者的分布與觀測者相差一個偏移量 $\delta$」,例如假設沒填憂鬱量表的人其實平均高 $\delta$ 分,讓 $\delta$ 從 0 變到一個合理的最壞值,觀察結論的穩健性。選擇模型(selection model) 則直接把遺漏機制 $P(R\mid Y)$ 寫進概似一起估計(如 Heckman 模型),但高度依賴難以驗證的分布假設。

敏感度分析的精神不是「找出正確答案」,而是誠實地告訴讀者:在我合理範圍內的各種假設下,結論是穩固的,還是脆弱的。 這正是進階資料分析該有的科學態度。

重點回顧

  • 遺漏機制分三種:MCAR(與一切無關,刪掉只損效率不偏誤)、MAR(與觀測變數有關,現代方法的工作假設)、MNAR(與遺漏值本身有關,最棘手)。處理方式取決於機制,不是格子本身。
  • Listwise/pairwise deletion 在非 MCAR 下會造成偏誤,且大幅損失樣本;不該作為預設。
  • 單一插補(均值、迴歸)的致命傷是低估變異——把補進來的猜測當成已知真相,導致標準誤過小、假顯著。
  • 多重插補用 $m$ 套補值與 Rubin 規則合併,總變異 $T=\bar{U}+(1+1/m)B$ 把「補值不確定性」$B$ 誠實納入;FIML 則直接以觀測資料修改概似,兩者在 MAR 下漸近等價。
  • MNAR 無法僅靠手上資料判定(看不見 $Y_{mis}$),MAR 是不可檢驗的假設,唯一負責任的做法是敏感度分析。

深入探討(研究所視角)

為何 MAR 下概似可忽略遺漏機制——「可忽略性」的數學基礎。 Rubin 框架的核心結果是:當 (1) 遺漏機制為 MAR,且 (2) 資料模型參數 $\theta$ 與遺漏機制參數 $\phi$ 的參數空間相異(distinctness,在貝氏架構下為先驗獨立),則遺漏機制是可忽略的(ignorable)。此時觀測資料的概似可寫成

$$L(\theta, \phi \mid Y_{obs}, R) \propto \underbrace{\int f(Y_{obs}, Y_{mis}\mid\theta)\, dY_{mis}}_{\text{只含 }\theta} \cdot \underbrace{P(R\mid Y_{obs}, \phi)}_{\text{只含 }\phi, \text{ 為常數}}$$

關於 $\theta$ 的推論可只用前項——這就是 FIML 與貝氏 MI 在 MAR 下成立的理論根據。MNAR 破壞了 (1),使 $P(R\mid Y_{obs}, Y_{mis}, \phi)$ 無法從 $\theta$ 的概似中分離,遺漏機制變得不可忽略,必須與資料模型聯合建模。

Rubin 變異公式的推導直覺與自由度。 $T=\bar{U}+(1+1/m)B$ 可由全變異數定律(law of total variance)理解:總不確定性 = 期望的組內變異 + 估計值跨插補的變異。$B$ 估計的是後者,$(1+1/m)$ 的因子來自於用有限 $m$ 估計無限多次插補極限的修正。對應的檢定統計量採 $t$ 分布,其自由度為

$$\nu = (m-1)\left(1 + \frac{\bar{U}}{(1+1/m)B}\right)^2 = (m-1)\lambda^{-2}$$

其中 $\lambda$ 為前述 FMI。當組間變異 $B$ 相對於組內變異很小時 $\nu$ 很大(趨近常態),$B$ 大時 $\nu$ 變小(尾部變厚、更保守)——這反映了補值不確定性高時,推論應該更謹慎。實務上常用 Barnard–Rubin 修正以納入完整資料自由度的上界。

與其他框架的連結。 (1) EM 演算法可視為 FIML 在缺漏資料下求極大概似的計算工具,E 步對 $Y_{mis}$ 取條件期望、M 步更新 $\theta$,與 MI 共享「在缺漏值的條件分布上積分」的精神,差別在 EM 給點估計、MI 透過抽樣保留不確定性。(2) 在因果推論中,反事實結果(potential outcomes)$Y(1), Y(0)$ 本質上是一個遺漏資料問題——每個個體只觀測到一種處理下的結果,另一種永遠遺漏;「無混淆假設(ignorability / unconfoundedness)」在數學形式上正對應這裡的 MAR,傾向分數加權與插補在此意義下相通。(3) MNAR 的 pattern-mixture 與 selection 兩種模型在數學上可互相轉換(同一聯合分布的兩種因式分解),但對「偏移參數」 $\delta$ 的先驗或設定不同,這也說明了為何 MNAR 分析本質上是「把無法檢驗的假設攤在陽光下、做成可調的旋鈕」,而非「估計出真相」。

對教育資料而言,這套理論有直接的實務意涵:問卷未答、研究中途退出、穿戴裝置斷訊造成的生理數據缺漏,幾乎都不是 MCAR。負責任的分析應預設以 MI 或 FIML 處理、在插補模型中盡量納入輔助變數以支撐 MAR、並對「退出是否與結果本身有關」這類 MNAR 疑慮做敏感度分析——而不是讓統計軟體默默地 listwise deletion,把退出研究的學生連同他們攜帶的訊息一起丟棄。

AI 共讀助教正在陪你讀:遺漏值處理:MCAR/MAR/MNAR 與多重插補
嗨!我是這篇文章的共讀助教,只根據〈遺漏值處理:MCAR/MAR/MNAR 與多重插補〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。