Skip to content

libterty/structural-pressure-model

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

社會崩潰壓力分析模型

基於結構人口理論(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 強調三壓力需同時高漲才會產生最大結構風險;任一壓力接近零,整體風險被壓制。


精英定義(MVP 採用 knowledge_elite)

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.py

專案結構

society-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/ 目錄。

{country}_pressure_trends.png

三條壓力曲線的時間趨勢

  • 上圖:MassPressure(紅)— 大眾物質壓力
  • 中圖:ElitePressure(藍)— 精英過剩壓力
  • 下圖:CollapsePressure(綠)— 綜合崩潰壓力

怎麼看:

  • 曲線上升代表壓力累積,向 0 以下代表相對穩定
  • 關注三圖同時上升的區間,此時 interaction term 放大效果最明顯
  • 比對已知歷史事件(如 2008 金融危機、2014 太陽花)是否落在壓力高點附近

{country}_pressure_vs_outcomes.png

壓力分數 vs 社會不穩定指標疊圖

  • 綠色線(左軸):CollapsePressure
  • 黃色長條(右軸):抗議事件數 / 罷工次數 / 選舉波動度

怎麼看:

  • 理論預期:壓力線應「領先」長條柱約 1-2 年(因為結構壓力需要時間轉化為行動)
  • 若兩者同步上升,代表直接驗證;若壓力先升、事件後升,代表良好的預測性
  • 落差大的年份值得特別檢視(可能有外生衝擊或資料缺漏)

{country}_feature_heatmap.png

所有輸入特徵的 z-score 熱圖

  • 行:各輸入變數(z 標準化後)
  • 列:年份
  • 顏色:紅色 = 正壓力(該變數偏高);藍色 = 低壓力(該變數偏低)

怎麼看:

  • 觀察哪些特徵在哪個年代最「紅」(貢獻壓力最大)
  • 台灣:2010 年後 housing_burden 持續深紅 → 房價是近年主因
  • 美國:intra_elite_competition 後期深紅 → 政治極化是主因
  • 若某年幾乎全紅,即全面性壓力累積,是高風險訊號

{country}_correlation_matrix.png

壓力分數與結果變數的相關矩陣

  • 顯示 MassPressure、ElitePressure、StateStress、CollapsePressure 與各結果指標的相關係數
  • 顏色:深紅 = 強正相關;深藍 = 強負相關

怎麼看:

  • CollapsePressure 與抗議/選舉波動的正相關,驗證模型方向正確
  • MassPressure 與罷工的「負相關」在美台合成資料中意外出現——這反映真實規律:大眾壓力高時,工人已被非正規化,實際罷工能力反而下降
  • 矩陣對角線以下為有效區域(上三角被遮蔽)

{country}_scenario_comparison.png

AI 情境預測:三條路徑

  • 黑色實線:歷史趨勢(合成資料)
  • 綠色虛線:baseline — 沿現有趨勢延伸,無額外 AI 衝擊
  • 橙色虛線:moderate — 顯著白領自動化,政策部分補償(2025-2032)
  • 紅色虛線:severe — 快速 Agentic AI,弱政策回應(2025-2030)
  • 灰色虛線:2025/2026 分隔線(左 = 歷史;右 = 預測)

怎麼看:

  • 三條路徑的分叉點在 2027-2028,反映 AI 衝擊的「坡道」設計
  • severe 情境下 2035 年的美國壓力值(~11.7)高於 2020 年疫情峰值
  • baseline 下台灣壓力仍持續上升,反映房價負擔結構問題不因 AI 而消失
  • 這是情境分析,非預測——真實走向取決於政策回應與 AI 實際擴散速度

{country}_severe_pressure_trends.png

severe 情境下各子壓力的時序拆解

  • 顯示 severe AI 情境下,MassPressure / ElitePressure / StateStress 各自的走勢
  • 用於判斷「哪一個子壓力先被推高」

怎麼看:

  • 若 MassPressure 先升,代表技術衝擊先傳導到勞動所得與生活成本
  • 若 ElitePressure 也跟著升,代表白領職位競爭與地位分配已受到波及
  • 兩者同時高位時,交叉項使 CollapsePressure 非線性加速

ai_scenario_parameters.png

AI 情境假設參數圖:各特徵最大年度衝擊值

  • 每一行代表一個輸入特徵
  • 橙色長條:moderate 情境的最大年度調整量
  • 紅色長條:severe 情境的最大年度調整量
  • 正值 = 該特徵向壓力方向移動;負值 = 向穩定方向移動
  • 標籤顏色區分三類壓力(紅 = 大眾壓力;藍 = 精英壓力;紫 = 國家壓力)

怎麼看:

  • 長條越長,表示 AI 對該特徵的預設衝擊越大
  • severe 的所有長條都比 moderate 長,代表更快速的坡道收斂
  • 這張圖直接呈現模型的假設,不是預測結果——若你認為某項假設不合理,可直接修改 src/features/ai_shock.py 中對應的 max_delta

market_unemployment_ai_comparison.png

股市估值 × 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 由選舉格局決定;兩軸同步高位是高風險訊號

usa_twn_scenario_comparison.png

美國 vs 台灣並排情境比較

左圖美國、右圖台灣,同樣的三條情境路徑。

怎麼看:

  • 兩國的 baseline 崩潰壓力均值相近(2010-2025 均約 6.4),但驅動結構不同
  • 美國在 severe AI 情境下爆炸性更強(峰值差距 +7.8 vs 台灣 +3.4)
    • 原因:美國 ElitePressure 底數較高,AI 使政治極化 × 失業互相強化
  • 台灣在無 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 討論、再訓練)

資料來源(美國 MVP)

特徵 來源
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


驗證策略

  1. 描述性驗證 — 壓力分數是否在已知不穩定期之前上升(1968、2008、2014、2020)
  2. 統計驗證 — OLS 回歸:滯後 t-1、t-2 的壓力分數對抗議 / 罷工 / 選舉波動的預測力
  3. 敏感度分析 — 改變精英定義、權重、標準化方式後結果是否穩健

參考文獻

  • Turchin, P. (2013). Modeling Social Pressures Toward Political Instability
  • Orlandi et al. (2023). Structural-demographic analysis of the Qing Dynasty collapse. PLOS ONE

About

比對北美和台灣經濟跟未來就業市場分析

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages