跳至主要內容

從單次評分到分層校準:我們如何重新設計民調模型

2020 年,我們第一次嘗試用一個統一標準評價民調機構。那個方法把民調與最終得票的差異化成懲罰值,再產生一個可信指標與 S–F 評級。它解決了當時最直接的問題:不只看一家機構有沒有「猜中勝者」,而是用所有可用民調比較它離結果多遠。

但當資料從一屆總統大選擴展到總統與地方選舉,我們需要回答更難的問題:一家機構若穩定地高估某個政黨,應該如何修正?所有機構都一起看錯選情時,能不能別把責任算在單一機構身上?資料很少的機構,又該如何避免因為一次好運而排到前面?

這些問題促成了現在使用的新模型。

舊模型的評分方式

舊方法 先假設選民意向會隨投票日接近而收斂:早期民調可接受的區間很寬,到封關前則縮小到 ±0.3%。民調落在當日的容許範圍外時,以超出幅度的平方作為懲罰;機構的懲罰加總後,再透過對數轉換成評分。

這是一個可讀、容易重現的起點,但它有幾個結構上的限制:

  • 只有一屆選舉。 模型與評分都在 2020 總統大選上完成,無法知道排名能否在另一屆選舉重現。
  • 真實民意變化與機構誤差混在一起。 早期民調與最終結果不同,可能是選民改變心意,不一定是民調做錯。
  • 只有一種「差多少」。 抽樣誤差、機構長期偏向、單次額外波動和整屆選舉的共同誤判,全都進入同一個懲罰值。
  • 小樣本只能排除,不能收縮。 舊公式用 T − 1 懲罰民調次數少的機構,並直接不評只做一次的機構,卻無法表達「我們還不確定」。
  • 評級無法直接進入預測。 S、A、B、C、F 可以排序,但不會直接告訴我們民調要修正幾個百分點,或預測區間要放寬多少。

誤差結構

新模型不直接為每家機構加總懲罰,而是對 DPP、KMT 與 TPP 的得票誤差分別建模。每筆觀測先在當時題目所列候選人之間重新正規化,再與同一組候選人的開票結果比較。

模型的核心可以寫成:

e = 整體黨派偏差 + 時間趨勢 + 選舉效應 + 機構效應 + 剩餘誤差

這些項目有不同用途:

  • 整體黨派偏差描述同一政黨在歷史資料中的平均誤差。
  • 時間趨勢允許誤差隨距投票日時間改變,不再先驗指定一條必須收斂到 ±0.3% 的路徑。
  • 選舉效應接住整個民調場共同低估或高估某黨的情況。這是「所有人一起看錯」的部分,不該全部算在某家機構身上。
  • 機構效應是機構相對於當時民調場的穩定偏移,也就是 house effect。它可以在未來的民調中直接修正。
  • 剩餘誤差表示前面幾層都解釋不了的額外波動。

因此,「穩定偏 2 點」和「每次不知道會差多少」不再是同一件事。前者可以修正,後者必須讓預測區間變寬。

樣本數與抽樣誤差

舊方法排除沒有公佈有效樣本數的民調,但在評分時,並沒有讓 500 人與 2,000 人的調查具有不同的理論抽樣誤差。

新模型使用每筆民調中已核實的有效樣本數,依支持率計算二項分佈的抽樣變異。有效樣本較大的民調,在其他條件一致時會有較小的抽樣不確定性;但它仍然要加上機構額外誤差和偏差估計的不確定性。大樣本可以減少抽樣誤差,卻不會讓方法偏差自動消失。

我們也建立了可稽核的機構別名表。法定改名、內部單位、簡稱與繁簡變體可以對應到同一個機構;僅因共用執行調查的公司,則不會把不同發布媒體合併。這防止同一家機構因名稱變化而被拆成多份小樣本。

分層收縮與離群值處理

這是一個 empirical Bayes 近似的分層模型。每個選舉效應與機構效應都有 Gaussian 分層先驗;資料較少的機構,偏差與額外誤差會向整體平均收縮。當證據增加,機構自己的歷史才會占更大比重。

模型擬合使用自由度 4 的 Student-t 穩健迭代加權。異常離群的一筆民調仍會留在資料中,但它不會像普通最小平方那樣,以誤差平方的速度把整個估計拉走。

這不是完整 MCMC新模型使用分層收縮、穩健迭代加權與共變異近似來表達不確定性。它是可重現且適合當前資料量的 empirical Bayes 方法,不是完整的貝氏後驗抽樣。

歷史民調的時間權重

民意在競選期間會真實改變。離投票日越遠,越難分辨民調與最終結果的差異究竟是機構誤差,還是選民後來改變了選擇。

新模型預設保留所有符合資格的歷史民調,但在距投票日 14 天以外開始連續降權,每 90 天減半:

wtime = 2−max(距投票日天數 − 14, 0) / 90

這取代了「在時間窗內就全數接受,在窗外就全數刪除」的硬切點。需要敏感度分析時,仍然可以用回溯上限重現較短視窗。

留一屆選舉交叉驗證

如果一個模型用了 2020 年開票結果來學習偏差,又用 2020 年證明自己準確,那是訓練集內的解釋,不是對未來的驗證。

新模型採用 leave-one-election-out(LOEO)交叉驗證。每次整屆留下一場選舉,只用其他選舉擬合模型,再修正被留下的民調。每一筆驗證誤差都來自一個沒看過這屆開票結果的模型。

評等時,我們還會使用其他機構在相近競選日期的誤差,估計當屆選舉的共同 miss。這一步把同場民調都沒有掌握的共同波動扣掉,比較接近「這家機構相對於當時其他人多做錯了多少」。

最後,如果 LOEO 實際 RMSE 比模型事先估計的誤差更大,系統會產生一個至少為 1 的校準倍數,把未來區間放寬。模型可以因歷史表現不佳而變得更保守,不會因巧合表現太好而縮小原本的誤差。

機構評級標準

舊評級依賴懲罰值 P 與人為區間。新方法則問:對一筆有自己樣本數的民調,修正後誤差落在「該筆民調的理想抽樣誤差 + 3 個百分點」以內的機率是多少?

評級理想抽樣誤差 + 3pp 內機率
A90% 以上
B75% 以上
C55% 以上
D低於 55%

參與少於三場選舉的機構會標記「暫定」。D 是綜合預測的淘汰線,而 A、B、C 不再各自對應一個額外的人為權重。機構已經有連續的誤差尺度與校準倍數,如果又根據字母乘一次權重,就會重複計算同一份證據。

評級表也分開兩種 MAE:「機構預測 MAE」是扣除 house effect 後,機構本身可預期的誤差;「未來總 MAE」另外加上未知選舉的共同誤差。前者用來評價機構,後者才接近實際預測需要承擔的不確定性。

每日民調綜合與預測

舊方法的輸出是一張排行表。新方法的輸出還包含每個機構 × 黨派的 house effect、偏差不確定性、額外誤差、選舉共同誤差與 LOEO 校準倍數。這些參數會直接進入滾動綜合。

每筆民調先減去 house effect,其用於加權的變異大致為:

變異 = (抽樣變異 + 機構額外誤差² + house effect 不確定性²) × 校準倍數²

綜合預設只看目標日前 42 天內的同陣容民調,時間權重每 14 天減半。如果近期民調的分歧大於各自誤差能夠解釋的程度,隨機效應綜合會估計 between-poll variance,讓區間自動變寬。最終預測區間還會加入未知選舉的共同誤差;這個風險不會因為多收集幾份民調就消失。

候選人陣容改變時,系統不混合題目不同的民調。地方選舉的無黨籍與小黨候選人會分開保留,不會被壓成一個「其他」。在候選人首次出現前,它以 0% 顯示,而不會用後來的民調回填歷史。

勝率則使用 20,000 次可重現模擬。每次同時抽取各候選人的得票,再把整組票份額映射回總和 100% 的 simplex,取得票最高者為唯一勝者。顯示的 95% Wilson 區間用來表達模擬比例自身的數值誤差,不是另一套民調預測區間。

新舊方法比較

問題2020 舊方法目前方法
驗證資料單屆 2020 總統大選2020、2022、2024 多場選舉
驗證方式在同一屆資料評分整屆留出的 LOEO 驗證
時間處理先驗假設容許區間收斂14 天內全權重,更早資料每 90 天連續減半
樣本數作為納入門檻進入每筆觀測的抽樣變異
機構偏向與其他誤差合併懲罰估計黨派別 house effect 與不確定性
共同選舉誤差沒有單獨處理由選舉效應與同場 peers 分離
少量資料懲罰或排除分層收縮,少於三場標記暫定
離群值平方懲罰會快速放大Student-t 穩健加權降低單點影響
評級輸出S–F 排序A–D 機率、MAE、覆蓋率與校準倍數
與預測的關係評級不直接修正民調偏差與誤差參數直接進入綜合與區間

模型改進總結

新模型不只是用更複雜的公式重做一張機構排行榜。最核心的改變,是從「這家機構過去差多少」,改為回答三個可以分開的問題:

  1. 這家機構有沒有可重現的方向性偏差?
  2. 修正偏差後,它還會額外波動多少?
  3. 即使所有機構都做得一樣好,一屆未知選舉還有多少無法平均掉的風險?

當這三件事被分開,模型才能一方面利用歷史偏差校正當前民調,另一方面保留不該消失的不確定性。資料更多時,我們可以更精確;證據不足時,區間就應該誠實地保持寬闊。