# 歷史加權開局模型說明

核對日期：2026-09-06。本說明依 [update-scenario.py](/Users/colin/Documents/ChatGPT/electionGame/web/scripts/update-scenario.py) 的實際程式撰寫；開局權重是遊戲規則產物，**不是 2026 民調、基本盤估計、勝率或投票預測**。

## 資料與適用範圍

模型使用中選會 2022 縣市長候選人得票，以及 2026-09-04 截止、09-06 查核的 81 人申請登記快照。嘉義市歷史票數採延期選舉 **2022-12-18**，其餘縣市採 2022-11-26。當屆資料是已申請登記、資格待審定，尚非正式公告選票名單；六月一日使用九月快照是平行時空劇本設定。

22 縣市和 368 鄉鎮市區各自計算；分母都是該層級 **2022 候選人得票總和／有效票**。人口、年齡和歷史投票率不參與這個起始權重公式。

## 1. 逐筆處理「2022 舊候選人」

每一筆舊候選人票數依序處理：

1. 本縣市當屆名冊有相同正式姓名，配給該人；比對不使用諧音顯示名，也不要求他在 2022 當選。若同名目標多於一人，程式會均分，資料 QA 應避免這類身分歧義。
2. 沒有同名目標，而且舊候選人的官方推薦不是「無黨籍及未經政黨推薦」，才分配給本次相同推薦政黨的人；若多人符合，等分這筆舊票。
3. 兩種目標都沒有，這筆權重進入未匹配的「流動池」。舊無推薦者沒有同人目標時直接進池，不把無推薦合併成共同政黨，也不推定聯盟或接班關係。

**互斥的是每一筆舊票的處理分支，不是本次候選人能否收取另一筆舊票。** 一位當屆候選人可以先收到自己的歷史票，再收到另一位舊候選人的同黨票；每筆舊票仍只分配一次。正式姓名配對是目前的工程規則，不代表姓名足以證明跨年身分，應保留人工核對。

- 苗栗：鍾東錦自己的 124,603 票先按同人配入；謝福弘的 32,026 票沒有同名目標，再按本次國民黨推薦配給鍾。流動池分配前，鍾的權重來源合計 **156,629 票**。這是明示的遊戲承接規則，不能解釋成現實選票確定轉移。
- 新竹市：高虹安 2022 民眾黨、當屆無推薦，仍按同人配到自己的 98,121 票；何志勇當屆無推薦，不能因外界印象取得舊國民黨票。
- 連江：王忠銘與曹爾元分別先配自己的 4,337、3,582 票。兩筆 2022 國民黨票都已有同人目標，不會再把合計 7,919 票重複配給王；曹當屆無推薦也不影響同人配對。
- 唐新民（共和黨→三勢團結促進聯盟）同樣按自己的 316 票配對。兩屆推薦資訊各自保留，不能用本次政黨覆寫歷史。

## 2. 流動池使用平方根先驗權重

令 `aᵢ` 為第一步直接配到的歷史比例、`R` 為未匹配比例，兩者合計為 1。每位候選人的流動池分配權重為：

```
bᵢ = 0.15   當屆資料 bloc 為 blue、green 或 white
bᵢ = 0.012  其餘候選人
pᵢ = sqrt(max(aᵢ, bᵢ))
xᵢ = aᵢ + R × pᵢ / sum(p)
```

平方根壓縮原始權重差距；下限讓沒有歷史對應的人仍能分到池。`0.15` 和 `0.012` 是**分配池的先驗下限**，不是保證候選人有 15% 或 1.2% 支持率。不同陣營類別使用不同下限，是作者制定的遊戲假設；「流動」只表示沒有直接匹配的歷史質量，不能稱為現實中立或未決選民。

## 3. 最後加入全員平分的 6% 起始緩和

全市有 `n` 位登記者時：

```
yᵢ = 0.94 × xᵢ + 0.06 / n
```

也就是保留 94% 前述結果，剩下 6% 由**所有候選人**平分。這不是每人加 6%，也不是僅補新人；五人選區每人平分到 1.2 個百分點的設計權重。即使流動池為零，新候選人仍有非零起點，因此新北、雲林、澎湖不會因舊票全部匹配而有人從零開始。程式最後再正規化，四捨五入至小數點後八位。

## 4. 臺南使用具來源新聞備援

`scenario_party()` 優先使用 `realParty`；其值缺失時才讀 `reportedPartyText`，並把「國民黨／民進黨／民眾黨」正規化成「中國國民黨／民主進步黨／台灣民眾黨」。這只作用於模型比對，不修改來源原文。

臺南四人的官方推薦欄仍是 `null`，模型目前用具來源的新聞報導：謝龍介國民黨、陳亭妃民進黨、蕭燐洪台灣SoR無法黨、葉人文無黨籍。「無黨籍」沒有被轉成「官方已核無推薦」。[中央社報導](https://www.cna.com.tw/news/aipl/202609045002.aspx)

因此黃偉哲 433,684 票會按新聞備援的同黨規則配給陳亭妃；本市未匹配池為 **67,259 票／7.57%**。臺南仍須保留「官方推薦待補證、模型採新聞備援」的資料標示。流動池下限所用的 `bloc` 也是讀取名冊現有分類，臺南分類同樣保留新聞依據。

## 高流動城市的解讀限制

| 縣市 | 配對後未匹配舊票 | 占當地2022有效票 | 主要限制 |
|---|---:|---:|---|
| 嘉義市 | 60,488 | 64.48% | 當屆沒有國民黨推薦者；張啓楷沒有同黨2022票，會取得白營先驗下限與全員緩和。不能稱為繼承黃敏惠票。 |
| 金門縣 | 27,774 | 58.95% | 舊獨立候選人票沒有同名對應，不能自動交接給特定新候選人。 |
| 嘉義縣 | 101,517 | 37.15% | 舊國民黨票沒有本次同黨承接者，流向由遊戲公式決定。 |
| 花蓮縣 | 52,662 | 35.27% | 舊民進黨與舊無推薦票無直接對應，不能推定張峻、魏嘉賢或他人的實際承接能力。 |

這些城市較大部分的開局來自先驗下限、平方根分配與 6% 緩和；參數改變就可能明顯改變難度。模型保留歷史差異，但**沒有驗證個人票源延續率、政黨轉移率、當屆合作效應或真實支持度**。建議選角資訊同步顯示「歷史對應有限，開局較依賴劇本設定」。

## 本次 QA 結果與重現範圍

2026-09-06 以程式中實際函式做唯讀重算，22 市＋368 行政區共 **390 組**全部與 `world.json` 已存 `scenarioBaseline` 相同；每組候選人數量對齊、權重均大於零、總和與 1 的誤差小於 `1e-7`。沒有執行會改寫資料的腳本主流程。

縣市與行政區都各自重新計算平方根先驗；這是非線性運算，**各區按2022有效票加權後，不保證等於直接計算的全市起始值**。QA 應核對每一層與公式一致，不能誤把兩種結果必須相等當成驗收條件。起始陣列順序對應 `world.json` 的候選人順序，顯示排序調整不應改變其身分對應。

本說明取代前一份 `baseline-review.md` 中「同人候選人不能再接其他舊同黨票」的假設性解讀；舊審查中的苗栗浮動池 26.10% 不適用這版。實際新版苗栗池為 **44,211 票／15.14%**。

程式 SHA-256：`a6c8025f1cae2648238a02cb3d755b96c95ac2eaa3fd98ce91abbc432ee6abea`。登記快照：`tw-mayor-registration-2026-09-04-verified-2026-09-06`。未來修改規則或來源時，應同步更新本說明與 QA 紀錄。
