跳转至

Chicago Schelling —— 一次让隔离更严重的轨道交通干预

studies/chicago_schelling/ · reference: true · Path C(包装既有模拟器)

以 2010 年人口普查为起点:当第 2 步在南城某普查区开通一座 CTA 轨道车站、 并配以公平住房政策广播时,黑白居住隔离指数 D_bw 在 3 步内如何演化? 原假设是可达性改善会吸引更多元的人口流入、压低 D_bw。结果并非如此。

这个案例是包装既有可信模拟器的样板:把一个 Mesa 风格的芝加哥隔离模型 缝到四个核心接口后面,用真实普查数据驱动它,再在其上叠加一次定时干预与 分受众的信息广播——轨迹记录的是真实发生的事,而不是你希望发生的事。

P / E / B

是什么 来自哪里
P 570 个持久家庭,由 2010 年普查区物化而来(chicago.censusscale: small)。agent_id 同时编码 race / income bracket / family type / neighborhood type 普查区 GEOID,所以每一行面板数据都能落到地理位置上。交互结构为 Queen 邻接的 spatial_adjacency,传播模式 independent population/population.json + population/roster.jsonl
E 双轴上的 4 个层(见下表)。provider 为 chicago.envscale: smallinit_mode: census)。 environment/environment.json
B decision chicago.schelling:每个家庭产出 kind 为 movestay 的 Action,并携带 ranked_targets。搬迁在环境的 apply 里真正执行——迁移是环境状态的改写,不是记账。 adapter/decision.py

四个环境层:

layer modality scope dynamics 内容
city_race_share physical macro endogenous 全市种族份额
tract_local physical local endogenous 本普查区人口结构 + 1 跳 Queen 邻域
news information macro scheduled 全市政策广播
ward_notice information local scheduled 普查区级通知

干预是第 2 步同时发生的三件事:

  • 一个作用在 tract_local 的 scheduled event —— 普查区 17031612000 (New City,南城),cta_stations += 2
  • 广播 policy_A_citywidenews 通道,audience: "all",ttl 3 —— 车站开通 + 全市公平住房/防迁移方案;
  • 广播 policy_B_tractward_notice 通道,受众仅该 GEOID,ttl 3 —— 同一件事,以「你家这条街」的口吻讲。

这种成对设计本身就是要点:同一个事件既作为宏观信息触达所有人,又作为 局部信息触达受影响的普查区——于是后续 fork 可以分别改动这两条通道。

一步是什么,跑多久

一步 = 全城一轮迁居决策:每个家庭观察自己的普查区与 Queen 邻域,决定 move 还是 stay,搬迁结算完毕后再计算指标。n_steps: 3interaction_rounds: 1seed: 42 —— 570 个被追踪家庭、4 行指标 (t=0 基线 + 3 个决策步)、study.duckdb 里 2280 行面板数据。

display_metricsD_black_whiteD_hispanic_whiteD_asian_whiteIsolation_black;存储层里还有更多(各族隔离/暴露指数、迁移诊断量)。

结果

该 study 自己的指标时间线:四条隔离指数跨 3 步的走向,第 2 步的干预已标出

step D_bw D_hw D_aw Isolation_black n_movers pct_pop_moved mover_alignment_rate
0 0.8160 0.5582 0.3282 0.6137
1 0.8068 0.5730 0.3364 0.6240 41 0.0349 0.220
2(干预) 0.8447 0.5891 0.3085 0.6083 50 0.0292 0.280
3 0.8464 0.6112 0.3237 0.6162 31 0.0123 0.387

假设被证伪。 D_bw 全程上升 +0.0304,且跃升恰好发生在干预步。机制在 面板数据里看得很清楚:目标普查区的白人人口从 13 降到 0,西语裔从 0 增到 241,黑人存量几乎不变。可达性冲击确实降低了迁移成本,但迁移的方向仍由 同群体邻里份额主导——抓住机会的是最邻近的多数群体,而不是回流的白人,结果 该区更加非白人化。

同一批数据还支持两条次级读数。mover_alignment_rate 单调爬升 (0.220 → 0.280 → 0.387):搬迁者随时间更加同类相聚,这是经典的自我 强化 tipping 信号。而 n_movers 在干预步见顶后回落到 31,说明系统是在一次性 冲击后重新收敛到新均衡,而非被持续搅动。

这是有意思的结果,不是失败的运行

一个数字与自己 hypothesis 字段相矛盾的 study,恰恰说明机制在正常工作: 产物记录了证伪、报告解释了机制、adjustable_params 告诉你下一个该拧的 旋钮(报告自己给出的建议:换一个起点就在 tipping 带上的普查区重跑,而不是 一个已经近乎完全隔离的区)。

Grounding

grounding/grounding.json 里有 3 条 sourced 事实、3 条声明的假设、2 条建模 参考——切分位置正是你希望的:量级有来源,情景选择被显式声明。

条目 basis 作用
芝加哥都会区黑白相异指数 = 76(0–100),2010 普查 —— Brown University US2010(Logan/Stults) sourced t=0 D_bw=0.816 的合理性包络
CTA Red Line Extension —— 5.5 英里南城延伸线 sourced 第 2 步事件所模仿的真实冲击
Schelling 容忍阈值 30–50% 同群体邻居 sourced 决策模型满意度阈值的取值区间
干预普查区 = 17031612000 assumed 一个可信的南城站点;真实 RLE 终点更靠南
cta_stations += 2 表示车站开通 assumed 没有公开口径把「一座车站」映射到该可达性字段
成对的公平住房/防迁移政策文本 assumed 风格化文本,非某项已颁布的芝加哥法令

建模参考:Schelling (1971) Dynamic Models of Segregation —— 逐户迁居规则的 出处;以及 2025 年 JAPA 关于轨道交通诱发绅士化的准实验研究——这正是环境里 要把车站与防迁移广播成对投放的理由:文献说族裔构成的变化方向可正可负。

resources.json 按名字记录了本次运行真正消费的两个数据集 (chicago_tracts.geojsoncta_stations.geojson),不含任何 endpoint 或 key——见外部能力

可以 fork 什么

adjustable_params,每条都按「改这个,是为了问那个问题」来读:

参数 它打开的问题
n_steps D_bw 是稳定在更高位,还是缓慢回落?3 步答不了。
seed +0.0304 里有多少只是单个随机种子的迁移抽样?
干预普查区与步数 把车站放到一个处于 tipping 带内的普查区:可达性能否融合一个混居社区,哪怕它融合不了一个已隔离社区?
政策广播文本 现有文本承诺防迁移,却没给任何人「搬进来」的理由。加一条面向全市的定向吸引广播做 A/B。
metrics 子集 当问题是「接触」而非「聚集」时,把 Isolation_black 换成 exposure 系列指标。

复用靠 fork 而不是改动:本研究 reference: truesv-init 会把匹配的问题 路由到它的一个 fork。缝合与 adapter 的机制见 包装既有模拟器(Path C),变体如何被快照见 迭代、版本与报告