基於結構人口理論(Structural-Demographic Theory)的社會不穩定壓力量化模型。
核心假設:
社會崩潰壓力 ≈ 精英過剩 + 大眾苦難
三個潛在壓力變數,組合為最終分數:
| 變數 | 意義 |
|---|---|
MassPressure(大眾壓力) |
一般民眾的物質生活壓力程度 |
ElitePressure(精英壓力) |
精英候補者競爭稀缺地位的激烈程度 |
StateStress(國家壓力) |
財政與制度脆弱程度 |
所有輸入特徵先做 z-score 標準化:
z(x) = (x − mean(x)) / std(x)
大眾壓力(MassPressure):
MassPressure = −z(real_median_wage_growth)
+ z(youth_unemployment)
+ z(housing_burden)
+ z(inequality)
+ z(precarious_employment)
薪資成長取負號:成長越低,壓力越高。
精英壓力(ElitePressure):
elite_aspirants_per_slot = elite_aspirants / elite_slots
ElitePressure = z(elite_aspirants_per_slot)
+ z(credential_inflation)
+ z(intra_elite_competition)
國家壓力(StateStress):
StateStress = z(fiscal_deficit)
+ z(debt_service_ratio)
+ z(state_capacity_weakness)
MVP 公式(線性加交叉項):
CollapsePressure = 0.5 · MassPressure
+ 0.5 · ElitePressure
+ 0.3 · MassPressure × ElitePressure
交叉項的意義:大眾苦難與精英過剩同時存在時,壓力不是線性疊加,而是相互放大。
延伸公式(三因子乘積,PSI):
PSI = norm(MassPressure) × norm(ElitePressure) × norm(StateStress)
其中 norm(x) = x − min(x) + 1 (平移至 [1, +∞),使乘積有意義)
PSI 強調三壓力需同時高漲才會產生最大結構風險;任一壓力接近零,整體風險被壓制。
aspirants = 研究所招生人數
slots = 管理職 + 專業職就業人數
credential_inflation = 擁有學士以上學歷的勞動者比例
intra_elite_competition = 政治極化程度(DW-NOMINATE 指標)
模型支援替換為 political_elite、economic_elite 或 composite_elite, 只需對應替換 aspirants / slots 的資料來源即可。
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
# 美國 MVP(合成資料,1960-2025)
python notebooks/01_usa_mvp_analysis.py
# 台灣分析(合成資料,1980-2025)
python notebooks/02_taiwan_analysis.py
# AI 未來情境預測(2026-2040,三種情境)
python notebooks/03_ai_future_projection.py
# 歷史壓力峰值驗證(1968、1971、1982、2009)
python notebooks/04_historical_validation.pysociety-analyze-model/
├── docs/
│ └── social-collapse-model-design.md # 完整模型規格
├── data/
│ ├── raw/ # 下載的原始資料(gitignored)
│ └── processed/ # 處理後資料集(gitignored)
├── src/
│ ├── schema.py # Pydantic 資料驗證
│ ├── ingest/
│ │ ├── sources.py # 美國真實資料來源對照(BLS、NCES、Census…)
│ │ ├── taiwan_sources.py # 台灣真實資料來源對照(主計總處、內政部…)
│ │ ├── generate_synthetic.py # 美國 1960-2025 合成資料
│ │ ├── generate_taiwan_synthetic.py # 台灣 1980-2025 合成資料
│ │ └── generate_projection.py # 2026-2040 情境預測延伸
│ ├── features/
│ │ ├── compute.py # z-score、三大壓力、CollapsePressure、PSI
│ │ └── ai_shock.py # AI 衝擊情境定義(baseline / moderate / severe)
│ ├── models/
│ │ └── pressure.py # OLS 回歸驗證(預測因子 × 結果 × 落差期)
│ └── viz/
│ └── plots.py # 趨勢圖、疊圖、熱圖、情境比較圖
├── notebooks/
│ ├── 01_usa_mvp_analysis.py # 美國端到端分析
│ ├── 02_taiwan_analysis.py # 台灣分析 + 跨國比較
│ ├── 03_ai_future_projection.py # AI 情境預測
│ └── 04_historical_validation.py # 歷史壓力峰值驗證(1968/1971/1982/2009)
├── reports/ # 生成圖表(gitignored)
└── pyproject.toml
執行 notebook 後,圖表會輸出到 reports/ 目錄。
三條壓力曲線的時間趨勢
- 上圖:MassPressure(紅)— 大眾物質壓力
- 中圖:ElitePressure(藍)— 精英過剩壓力
- 下圖:CollapsePressure(綠)— 綜合崩潰壓力
怎麼看:
- 曲線上升代表壓力累積,向 0 以下代表相對穩定
- 關注三圖同時上升的區間,此時 interaction term 放大效果最明顯
- 比對已知歷史事件(如 2008 金融危機、2014 太陽花)是否落在壓力高點附近
壓力分數 vs 社會不穩定指標疊圖
- 綠色線(左軸):CollapsePressure
- 黃色長條(右軸):抗議事件數 / 罷工次數 / 選舉波動度
怎麼看:
- 理論預期:壓力線應「領先」長條柱約 1-2 年(因為結構壓力需要時間轉化為行動)
- 若兩者同步上升,代表直接驗證;若壓力先升、事件後升,代表良好的預測性
- 落差大的年份值得特別檢視(可能有外生衝擊或資料缺漏)
所有輸入特徵的 z-score 熱圖
- 行:各輸入變數(z 標準化後)
- 列:年份
- 顏色:紅色 = 正壓力(該變數偏高);藍色 = 低壓力(該變數偏低)
怎麼看:
- 觀察哪些特徵在哪個年代最「紅」(貢獻壓力最大)
- 台灣:2010 年後
housing_burden持續深紅 → 房價是近年主因 - 美國:
intra_elite_competition後期深紅 → 政治極化是主因 - 若某年幾乎全紅,即全面性壓力累積,是高風險訊號
壓力分數與結果變數的相關矩陣
- 顯示 MassPressure、ElitePressure、StateStress、CollapsePressure 與各結果指標的相關係數
- 顏色:深紅 = 強正相關;深藍 = 強負相關
怎麼看:
- CollapsePressure 與抗議/選舉波動的正相關,驗證模型方向正確
- MassPressure 與罷工的「負相關」在美台合成資料中意外出現——這反映真實規律:大眾壓力高時,工人已被非正規化,實際罷工能力反而下降
- 矩陣對角線以下為有效區域(上三角被遮蔽)
AI 情境預測:三條路徑
- 黑色實線:歷史趨勢(合成資料)
- 綠色虛線:baseline — 沿現有趨勢延伸,無額外 AI 衝擊
- 橙色虛線:moderate — 顯著白領自動化,政策部分補償(2025-2032)
- 紅色虛線:severe — 快速 Agentic AI,弱政策回應(2025-2030)
- 灰色虛線:2025/2026 分隔線(左 = 歷史;右 = 預測)
怎麼看:
- 三條路徑的分叉點在 2027-2028,反映 AI 衝擊的「坡道」設計
- severe 情境下 2035 年的美國壓力值(~11.7)高於 2020 年疫情峰值
- baseline 下台灣壓力仍持續上升,反映房價負擔結構問題不因 AI 而消失
- 這是情境分析,非預測——真實走向取決於政策回應與 AI 實際擴散速度
severe 情境下各子壓力的時序拆解
- 顯示 severe AI 情境下,MassPressure / ElitePressure / StateStress 各自的走勢
- 用於判斷「哪一個子壓力先被推高」
怎麼看:
- 若 MassPressure 先升,代表技術衝擊先傳導到勞動所得與生活成本
- 若 ElitePressure 也跟著升,代表白領職位競爭與地位分配已受到波及
- 兩者同時高位時,交叉項使 CollapsePressure 非線性加速
AI 情境假設參數圖:各特徵最大年度衝擊值
- 每一行代表一個輸入特徵
- 橙色長條:moderate 情境的最大年度調整量
- 紅色長條:severe 情境的最大年度調整量
- 正值 = 該特徵向壓力方向移動;負值 = 向穩定方向移動
- 標籤顏色區分三類壓力(紅 = 大眾壓力;藍 = 精英壓力;紫 = 國家壓力)
怎麼看:
- 長條越長,表示 AI 對該特徵的預設衝擊越大
- severe 的所有長條都比 moderate 長,代表更快速的坡道收斂
- 這張圖直接呈現模型的假設,不是預測結果——若你認為某項假設不合理,可直接修改
src/features/ai_shock.py中對應的max_delta
股市估值 × AI 衝擊 × 青年失業 × 精英競爭(3 列 × 2 欄複合圖)
左欄美國、右欄台灣,三列分別對應三個分析層次:
| 列 | 美國 | 台灣 |
|---|---|---|
| Row 1(股市) | Shiller CAPE 歷史 + 三情境投影 | TAIEX 股價/薪資比歷史 + 三情境投影 |
| Row 2(壓力) | collapse_pressure 三情境 | collapse_pressure 三情境 |
| Row 3(勞動) | 青年失業率(三情境)+ 政治極化(雙軸) | 青年失業率(三情境)+ ENP 競爭指數(雙軸) |
情境設計說明:
baseline:資產市場均值回歸,無額外 AI 推力moderate:AI 驅動估值撐在高位,2031 年後緩降軟著陸(不繼續上漲)severe:小幅泡沫後崩潰(2028 附近高點,2029–2033 急跌),非大漲再崩
怎麼看:
- Row 1 三條線的分叉方向:moderate 橫向、severe 先微升後崩、baseline 向下
- Row 2 的陡峭程度由 CAPE 乘數放大(美國 2024 CAPE ≈ 37.5,乘數 ≈ 1.83×)
- Row 3 的精英競爭指數(藍色)不隨 AI 情境變化,因為 ENP 由選舉格局決定;兩軸同步高位是高風險訊號
美國 vs 台灣並排情境比較
左圖美國、右圖台灣,同樣的三條情境路徑。
怎麼看:
- 兩國的 baseline 崩潰壓力均值相近(2010-2025 均約 6.4),但驅動結構不同
- 美國在 severe AI 情境下爆炸性更強(峰值差距 +7.8 vs 台灣 +3.4)
- 原因:美國 ElitePressure 底數較高,AI 使政治極化 × 失業互相強化
- 台灣在無 AI 情境下壓力仍持續爬升,主因是房價負擔
- AI 對台灣的額外衝擊相對較小,但基準壓力已不低
src/features/ai_shock.py 定義了三種情境,每種情境對各特徵施加「線性坡道調整」:
| 特徵 | 方向 | 邏輯 |
|---|---|---|
real_median_wage_growth |
負(向下) | AI 取代中技能工作,中位數薪資成長受壓 |
youth_unemployment |
正(向上) | 入門工作減少,青年更難進入勞動市場 |
precarious_employment |
正(向上) | 平台/零工經濟隨 AI 工具擴張 |
inequality |
正(向上) | 資本與頂端技能者集中 AI 報酬 |
housing_burden |
正(向上) | 財富集中間接推高房價 |
credential_inflation |
正(向上) | 職位要求更多學歷抵消 AI 競爭 |
elite_slots |
負(向下) | AI 自動化部分管理與專業職能 |
intra_elite_competition |
正(向上) | 科技新貴挑戰傳統政治/學術/法律精英 |
fiscal_deficit |
正(向上) | 補貼/轉移支付壓力(UBI 討論、再訓練) |
| 特徵 | 來源 |
|---|---|
real_median_wage_growth |
BLS CES + CPI-U(FRED CPIAUCSL) |
youth_unemployment |
BLS LNS14000012(16-24 歲) |
housing_burden |
Harvard JCHS / 人口普查住宅調查 |
inequality |
Census H-4(Gini 係數) |
precarious_employment |
BLS LNS12032194(因經濟因素兼職) |
elite_aspirants |
NCES Digest 表 303.80(研究所招生) |
elite_slots |
BLS OEWS SOC 11-0000 + 15/23/25/27-0000 |
credential_inflation |
CPS March 補充調查(學士以上比例) |
intra_elite_competition |
VoteView DW-NOMINATE 眾議院極化距離 |
fiscal_deficit |
OMB Historical Table 1.2 |
debt_service_ratio |
OMB Tables 8.1 / 1.1 |
state_capacity_weakness |
World Bank WGI(政府效能,取反) |
protests |
Mass Mobilization Dataset v3 |
strikes |
BLS Work Stoppages |
electoral_volatility |
MIT Election Lab(Pedersen index) |
詳見 src/ingest/sources.py。
| 特徵 | 來源 |
|---|---|
real_median_wage_growth |
主計總處薪資與生產力統計 |
youth_unemployment |
主計總處人力資源調查(15-24 歲) |
housing_burden |
內政部不動產資訊平台(房價所得比) |
inequality |
主計總處家庭收支調查(Gini) |
precarious_employment |
勞動部非典型就業調查 |
elite_aspirants |
教育部統計處(研究生人數) |
elite_slots |
主計總處人力資源調查(管理+專業職) |
credential_inflation |
主計總處(就業者教育程度) |
intra_elite_competition |
中央選舉委員會(立法院席次距離) |
fiscal_deficit |
財政部 / 主計總處政府財政統計 |
debt_service_ratio |
財政部 |
state_capacity_weakness |
World Bank WGI |
protests |
GDELT / 台灣社會運動資料庫(中研院) |
strikes |
勞動部勞資爭議統計 |
electoral_volatility |
中央選舉委員會 |
詳見 src/ingest/taiwan_sources.py。
- 描述性驗證 — 壓力分數是否在已知不穩定期之前上升(1968、2008、2014、2020)
- 統計驗證 — OLS 回歸:滯後 t-1、t-2 的壓力分數對抗議 / 罷工 / 選舉波動的預測力
- 敏感度分析 — 改變精英定義、權重、標準化方式後結果是否穩健
- Turchin, P. (2013). Modeling Social Pressures Toward Political Instability
- Orlandi et al. (2023). Structural-demographic analysis of the Qing Dynasty collapse. PLOS ONE