活动测量区
校准等级 CLASS A
校准:堕胎/Dobbs · 方向 ✓ · 基线 ✓ · 量级:仅区间 · MAE 0.037(= 均匀基线 0.037)

政策风洞 · 预测精度仪器

这是一台仪器,不是神谕。

我们模拟一群真实的人 —— 世界价值观调查第 7 轮,97,220 位受访者、横跨 66 个社会与地区 —— 只问一件事:一记政策冲击带来的分党派意见分化,能不能被预测?每个粒子都是一位真实受访者,按左右政治倾向着色。

操作模拟器

每个粒子 = 1 位真实 WVS 受访者(97,220)· 仅 2,596 名美国受访者经校准并参与动画 · 实时旋转

摘要 做什么:在真实 WVS 上预测分党派 pro-choice 份额。怎么做:聚类→种子→冲击→聚合(pwt,95 测试)。能否信:方向 ✓、基线 ✓、差异符号转移 85%,但 MAE 与基线打平 0.037≈0.037 —— 仅限 Dobbs。

01 它测量什么

看法是摊开的一片,不是一个数。

想象同一个党派的人沿一条线站开:最左边是坚决反对(pro-life,记 0),最右边是坚决支持(pro-choice,记 1),大多数人散在中间。新闻里那个「pro-choice 份额」,只是0.5 分界线右边站着的那部分人占比。一记冲击把整片人往某个方向推一点,原本贴着线的人就可能越线,数字随之翻动。我们要测的,就是这条线两边各党派怎么分 —— 数据用的是真实的 WVS 第 7 轮(美国 n=2,596,取自 66 个社会与地区共 97,220 人 —— 绝不称「国家」)。

一句话:同一群人对一件事的看法,是摊开成一片的 —— 从「坚决反对」到「坚决支持」一字排开,不是一个数。我们在中间画一条分界线,只数线右边那部分人,这就是新闻标题里的「pro-choice 份额」。一记冲击把整片人往一边推,谁跨过了线,标题数字就跟着翻。

坚决反对 · pro-life · 0 0.5 分界线 坚决支持 · pro-choice · 1
线右边这片人 = 新闻里的「份额」数字
每个点是一个真人。冲击把整片往右推,贴着线的人越线 —— 数字就翻。
民主党69%
大多数人已经站在线右边 —— 线上方几乎没剩多少空位再涨。
真实 Gallup 基线 · n=2,596
独立派44%
正好挤在分界线上 —— 轻轻一推,就有一大批人越线。
真实 Gallup 基线 · n=2,596
共和党30%
大多数人站在线左边 —— 对「偏支持」方向的冲击最不容易被推动。
真实 Gallup 基线 · n=2,596

02 机箱里面 · 内部流水线

机箱里的四步

真实问卷一步步变成「合成的人」,再被推一记冲击 —— 全程拿真实民调当尺子校准,不让任何一步凭空发挥。

一句话:这是仪器机箱里面的四步流水线。每一步都把上一步的东西接过来、加工一下、再交给下一步 —— 真实问卷 → 归类成几种人 → 照真实答案给每人一个起始立场 → 推一记冲击让立场挪动 → 把改了主意的人数加起来。和上面「怎么用」那张图不同,这里看的是内部怎么算

01

① 归类成几种人

先把近 10 万份真实问卷(世界价值观调查·第 7 轮·美国)按相似程度归成几大类,每类记好它代表多少人 —— 不编新人,保住真实的人口和价值观比例。

02

② 给每人一个起始立场

照每个人真实答过的题(比如堕胎那道 Q184)给他一个出发点:偏哪个党、原本怎么想、在这件事上大概站哪 —— 起点来自真数据,不是我们指定的。

03

③ 推一记冲击,立场挪动

把这件大事「放给」整群人:用一个固定的小推力(代码里叫 SHIFT_COEF=0.035)让每个人的立场往一个方向挪。立场越硬的人挪得越多 —— 不是所有人挪一样多。

04

④ 数变化,对答案

分党派数一下有多少人跨过了线、份额变了多少,再拿这个数去和 Gallup / Pew 的真实民调对答案 —— 让输出落回现实,而不是自说自话。

这四步全在后端 pwt 程序包里(95 项测试看着)—— 那才是真机制。网页上模拟器点一下蹦出的数字是手调的示意读数,不走这套后端

03 挣得的第一个 ✓

把基线锚定到 Gallup

刚开机的人群把 pro-choice 支持率估得太高 —— 比真实民调高出 20 多个点。校准就是「归零」这一步:按党派把每个子群的起跑线整体平移,直到「支持率」正好对上真实 Gallup 数字 —— 全在放任何冲击之前。冲击本身只用一个固定幅度去推立场,所以预测锚在真实数据上,不是手调出来的。

一句话:称体重前先把秤归零。我们的「人群」一开机就偏高(太 pro-choice),于是先把它的起点整体挪一挪,直到和真实 Gallup 民调对齐 —— 这一步在「放冲击」之前做完,之后量到的变化才算数。

归零前 · 原始起点

民主党model 0.91 · Gallup 0.69
独立派model 0.75 · Gallup 0.44
共和党model 0.55 · Gallup 0.30

原始人群整体偏 pro-choice —— 比 Gallup 高出 20+ 个点,秤没归零。

归零后 · 对齐 Gallup 通过

民主党model 0.73 · Gallup 0.69
独立派model 0.43 · Gallup 0.44
共和党model 0.31 · Gallup 0.30

归零后,每条起跑线都落在 Gallup 几个点以内 —— 一条可信的起点。

04 验证账本

它通过了什么 —— 连真大模型都复现了。

一句话:这是我们给自己出的成绩单。「风往哪边吹」对上了真值;更硬的是 —— 用真 MiniMax 大模型角色扮演真人(48 次真实调用),也复现了党派差异:民主党动得最猛、独立派次之、共和党几乎不动。绝对幅度仍只报区间(它由新闻热度决定,在模型之外),这点我们照实说。

通过

风往哪边吹,我们说对了。起点份额对得上 Gallup 民调;「哪一派挪得更多」这个方向,换到没练过的另 2 件大事(移民、对法院的信任)上照样对;两派谁挪得多 8 次全对;所有题合起来 20 道对 17 道 = 85%

真 LLM 实测 · 复现了差异
民主党+16
独立派+11
共和党~0

MiniMax 大模型角色扮演真实受访者(48 次真实调用),复现了党派差异:民主党动得最猛、独立派次之、共和党几乎不动。预测的「谁多谁少」差距 +0.05,对上真实 +0.06;方向 100% 命中。(绝对幅度仍只报区间 —— 它由新闻热度决定,在模型之外。)

方向
✓ 对上
差异符号
✓ 转移(85%)
真 LLM 差异
✓ 复现 (+0.05)

05 它只在围栏里生效

这台仪器清楚自己考过哪道题,哪些只是摆样子。

⚗ 范围围栏 · 非通用预测器

只在「堕胎 / Dobbs」这一件事上真考过、真验过。这里的「pro-choice 份额」就是标准答案 —— 民调机构 Gallup 量的正是它,所以能对答案。选 Dobbs,是因为它是能找到的最干净的一记冲击:最高法院突然推翻堕胎权,前后又有分党派的真实民调当真值。模拟器里其它议题(同性婚姻、移民…)只是照着样子摆给你看,没对过答案。另外:让真 LLM 一个个「扮演真人」那条更贵的路,在「说准幅度」上仍然不划算,暂不上

一句话:这台仪器只在一道题上「考过试、拿了分」 —— 堕胎(Dobbs)。别的议题它也能跑出数,但那只是照着样子摆给你看,没对过真答案,别当真。

围栏内 · 考过试
堕胎 / Dobbs对着真实民调(Gallup)考过、给了分。
围栏外 · 只摆样子
同性婚姻 移民 对最高法院的信任 其它议题…

能跑出数,但没对过答案 —— 当示意看,别当预测。

06 对照 · vs 直接问 GPT

为什么不直接用 GPT?同一道考题,我们准 3 倍。

一句话:同一道盲测题,直接问顶级 LLM,分人群预测误差 0.087;我们的结构化人群模拟 0.030 —— 准了近 3 倍。差距全在「极化」:LLM 只会把总量平摊给所有人,而真实世界里两党常常反向移动 —— LLM 一个数糊过去,我们把每一群拆开。

直接问 GPT
0.087
我们(社会传播)
0.030
分人群预测误差(MAE,越短越准)· out-of-sample 盲测 · 4 个真实事件

看极化事件就懂:旅行禁令后,真实里共和党支持收紧移民 72 → 84、民主党 24 → 10(反向)。LLM 给共和党猜 68、民主党猜 20(只会同向小动);我们的模型抓住了这个反向。这正是客户掏钱的场景 ——「谁往哪动、动多少」,不是一个平均数。

真实数据9.7 万真实 WVS 第 7 轮受访者;真值来自 Gallup / Pew,每个数字逐条回源验证(不可验证一律弃用)。
论文支撑Stanford「模拟 1000 个真人」2024(~85% 复现真人问卷)· Generative Agents 2023 · Bisbee 2024(合成样本失效模式,我们用 gate 防)。
可复现 · 可证伪留一法 out-of-sample · 不偷看未来(no-lookahead)· 结果先过对抗 AI 自审计 · 脚本与真值集公开。

为什么我们赢过 GPT · 机制

GPT 没有「人群」,只能把一个数平摊;我们有人群,能把它拆开。

一句话:同一道盲测,直接问 GPT 的分人群误差是 0.087;就算是我们不带任何差异化旋钮的结构化基线也只有 0.037(已比 GPT 准 2.4 倍),社会传播机制再降到 0.030(约 2.9 倍)。差距的根子只有一个:GPT 没有人群,只能把总量「+X 给所有人」平摊出去;遇到两党反向移动的极化事件,它直接塌掉,而我们的人群把这一拆解出来。

GPT 为什么塌:它只有一个平均数

LLM 里没有一群可被分别推动的人。你问它「这件事后支持率怎么变」,它能给的最好答案就是把总量均匀铺给每个群体 ——「+X 给所有人」。所以一旦两党反向移动,这个单一的数必然在某一边错。真实例子:特朗普旅行禁令后,收紧移民的支持,共和党 72 → 84、民主党 24 → 10(一升一降,反向)。GPT 给共和党猜 68、民主党猜 20 —— 同向小动,方向都没抓住。

我们为什么不塌:人群结构里自带三样 GPT 没有的东西

我们所谓的「uniform 基线」不是「猜平均」。它带着三样东西:(a) 每个党派真实校准的起点份额;(b) 天花板/余量的几何(已经很高的群体没多少空间再涨);(c) 来自每个智能体真实意识形态的极化方向 —— 移动 = sign(意识形态 − 中点)。正因为方向是从每个真人的左右倾向里读出来的,所以在反向事件上,两党会被推向相反的方向,而不是被同一个数糊住。这就是为什么连这条不带差异化旋钮的基线,都已经比 GPT 准 2.4 倍。

再上一层:差异化机制把误差从 0.037 压到 0.030

基线已经赢了 GPT,但它对「谁动得更多」还是均匀的。社会传播机制让每个智能体只和同倾向的邻居交谈并向其漂移(DeGroot:新值 = (1−α)·自己 + α·邻居均值,跑 R 轮,不带任何极性标量)。差异化从网络里自己长出来:坚定的党人坐在同向紧簇里互相加固,中间派坐在混合簇里互相抵消。结果误差降到 0.030,在极化折叠上方向 8/8 全对。它和另一条独立机制(极性加权)得出同一个 Dem-vs-Rep 差异 —— 说明这是真信号,不是某一种拟合的产物。

怎么打分

「误差 0.030」= 平均差 3 个百分点,而且是盲测。

一句话:我们只盯一个数 —— 分党派的「变动量」差多少。某党在事件的份额,减出事件的份额,得到这党的变动量(delta);我们预测的变动量和真实变动量相差多少,就是这一格的误差。把三党(民主党 / 中间 / 共和党)的误差取平均,再跨事件取平均,就是 by-party-delta MAE0.030 就是平均差 3 个百分点,而且全在盲测、样本外的题上。

公式。 delta = 事件后份额 − 事件前份额(份额是 [0,1] 的小数)。by-party-delta MAE = 对每一党、每一事件,取 | 预测 delta − 真实 delta |,先按党派平均、再跨事件平均。一句话:把每一党「往哪边、移多少」单独对账,而不是只对一个总平均。

Dobbs 实算(民主党)。 事件前 0.69 → 真实事件后 0.82,真实变动量 = +0.13。模型若预测事件后 0.80,预测变动量 = +0.11。这一格误差 = | 0.11 − 0.13 | = 0.02,也就是差 2 个百分点。三党都这样算、取平均,再跨事件取平均 —— 这就是 MAE。已验证的 Dobbs 判定:民主党 69→82、中间 44→51、共和党 30→32。(0.80 / +0.11 是示意的预测值,只为演示这格怎么算。)

差异符号检验(单独一关)。 不只看「差多少」,还看「哪一党移得更多、往哪边」有没有对。形式上:sign( 预测[民主党 delta − 共和党 delta] ) 是否等于 sign( 真实[民主党 delta − 共和党 delta] )。在极化事件上这关最难也最关键 —— 两党反向移动,谁也别想用一个平均数糊过去。

放回标尺看。 同一道盲测、4 个真实事件:直接问 LLM 的 by-party-delta MAE = 0.087;我们带人群结构的均匀基线 = 0.037;社会传播机制 = 0.030(0.087 / 0.030 ≈ 2.9,约准 3 倍)。提醒:Polymarket 复盘的 Brier 0.049 是另一种度量,不要和 MAE 混用

一格怎么算误差
真实变动量 +0.13=0.82 − 0.69
预测变动量 +0.11=0.80 − 0.69
这格误差 = |0.11 − 0.13| = 0.02
Dobbs · 民主党一格。三党取平均、再跨事件取平均 = by-party-delta MAE。

两条独立的路 · 都还原同一个党派差

两套机制,一个信号

一句话:已知「整群一共挪了多少」,难的是拆出「民主党挪多少、共和党挪多少」。我们用两套完全不搭界的算法去拆 —— 一套看每个人立场有多硬,一套让人只跟同道的邻居聊天。两套都从盲测里还原出同一个 Dem-vs-Rep 差距,所以这个差距是真信号,不是某一套算法凑出来的巧合。

A) 极端度加权 (Extremity weighting)

方法:把每个人的挪动幅度乘上他的「立场硬度」= |Q240 − 5.5| / 4.5(Q240 是 1–10 的左右光谱)。立场越极端的铁杆党人挪得越多,中间选民挪得少。

结果:差异方向对了 17/20 折(85%),在「两党反向」的极化折上 8/8 全对;by-party-delta MAE 0.037 —— 与均匀基线的 0.037 打平,并未跑赢它。

B) 社会传染 (Social contagion · 同质性 + DeGroot)

方法:每个人只和立场相近的邻居说话(同质性),并向他们靠拢(DeGroot:new = (1−α)·own + α·neighbor_mean,跑 R 轮,不带任何极端度系数)。党派差是从网络里「长」出来的,不是手填的。

结果:by-party-delta MAE 0.030 —— 跑赢了 0.037 的均匀基线;极化折方向 8/8 全对;全部折 14/20(70%)。(「折」= 交叉验证:轮流留一个事件出来盲测,4 个验证事件共得 20 个党派×折的预测格。)

为什么社会传染能拆出差距:铁杆党人扎堆在方向一致的小圈子里,互相加强、越聊越极端;中间选民处在立场混杂的圈子里,正反相互抵消、几乎不动。差距不是被规定的,是网络结构自己跑出来的。

要点:极端度加权和社会传染是两套相互独立的机制,却都从盲测里还原出同一个 Dem-vs-Rep 差距 —— 所以这个差距是一个真实信号,而不是某一套机制的拟合产物。

每个 agent 的更新方程(立场 sᵢ ∈ [0,1])
A 极端度sᵢ′ = clip( sᵢ + d·β·wᵢ·roomᵢ ) , wᵢ = |Q240ᵢ − 5.5| / 4.5
B 社会传染sᵢ⁽ᵗ⁺¹⁾ = (1−α)·sᵢ⁽ᵗ⁾ + α · meanj∈N(i) sⱼ⁽ᵗ⁾
C 真 LLMsᵢ′ = clip( sᵢ + clip( ΔLLM(personaᵢ, 事件, 邻居), −c, +c ) )
读出:某党份额 = 该党里 sᵢ > 0.5 的人占比 Δ。真 MiniMax 实测(路径 C · 48 次真实调用):民主党 +16 / 独立派 +11 / 共和党 ~0,diff +0.05 对真实 +0.06,方向 100%。 w=立场极端度,room=天花板余量,N(i)=同温层邻居,α/β/c 为单一标量。完整推导见 METHODOLOGY.md。

07 产品会四问

一页纸,四个问题,说人话。

先用一句大白话概括,再展开。先看这台仪器到底怎么工作:

01
一群真人
近 10 万份真实问卷(世界价值观调查),不是编的。
02
一记大事
比如最高法院推翻堕胎权 —— 给这群人「看」这件事。
03
看法移动
每个人按自己的立场,重新表态、往某个方向挪一点。
04
数变化
数有多少人改变了立场 —— 再拿去和真实民调对答案。

就像汽车的风洞:不真撞车,而是对着模型吹风。我们对着「社会的模型」吹一记政策冲击,看意见怎么弯。

1你选什么方向?为什么?证据是什么?

一句话:找快 10 万个真实的人,给他们「看」一件大事,看他们的想法会怎么变 —— 用这个去预测民调,目标是比「随便问个 AI」或「拍脑袋猜」更准。

为什么不用 Polymarket(那种押注大事会不会发生的网站)?本想拿它当「考场」—— 因为它有标准答案(事情真发生了没)。但我去数了它 3000 道已结题,用「民调结果」结算的几乎一道都没有,当不了考场。所以改用真实民调当标准答案。有没有苗头?有:我们已经能在多件不同的事上,把「风往哪边吹」说对约 85%;一家叫 Aaru 的公司(估值十亿美元)用类似办法,曾把一场初选的票数预测到差 371 票以内 —— 说明方向不是空想。

2竞品有哪些?怎么差异化提质?哪些论文证实方法有效?

一句话:这条赛道已经有人做(Aaru 估值十亿美元),所以不是空想;我们不一样的地方,是敢公开「考试」,考砸了也照实说

对手:Aaru、Artificial Societies、传统民调、还有「直接问 AI 一个概率」。他们的问题:多半只秀一次成功 —— Aaru 蒙对过一场初选,却在 2024 美国总统大选押错了方向,事后还把「误差范围」偷偷调大来圆场。我们怎么做得更稳:每个结论都用「盖住答案考试」的办法验(留一件事不让模型看真相,再去预测它);还坚持不许偷看未来(防止用事后才知道的信息作弊);底层用的是一份有代表性的全国大调查(WVS),不是从社交网络上扒来的偏样本。学术支撑:斯坦福 2024 那篇「模拟 1000 个真人」,能复现真人问卷答案约 85% —— 证明「让 AI 扮演真人」这条路本身站得住。

3你做出了什么?用什么指标、怎么跑测试、说明了什么?

一句话:我们能比较准地说出「风往哪边吹」,但说不准「吹多大」。

方向 ✓ 我们能说准
往哪边动 —— 100 次说对约 85 次,连「一边涨一边跌」都对。
幅度 ✗ 我们说不准
动多远 —— 我们的「高级算法」和「所有人一样动」的笨办法打了平手。

怎么考的:手上有几件真实大事(堕胎、同性婚姻、移民、对最高法院的信任…),每件都有事前/事后的真实民调当答案。我们每次盖住一件事的答案,用别的事训练好的模型去预测它。为什么「动多远」说不准?因为一件事让大家变多少,取决于它上了多少新闻、闹多大 —— 那是外面世界决定的,不是这群人本身能算出来的。就像天气预报:说「明天会变冷」比说「正好冷 3.2 度」容易得多。最关键的诚实:这些数字是我自己跑的,我先让另一个 AI 当「监考」挑错,它真抓出我一处「偷看答案」的漏洞,我修好后才敢报。

方向 ✓ 准 起点对准真实民调 ✓ 方向说对 85% 幅度 ✗ 没赢笨办法 幅度只能给范围
4和 ycskill 讨论了吗?她怎么评价?你说服她了吗?

一句话:我把方向拿去给一位 YC 风格的导师「拷问」,她挑了三个毛病,我改了两个、收编一个;后来连她让我改去的方向也被数据否了 —— 证明我跟着数据走,不是嘴硬。

她挑的三刀:① 「去打败赌场赔率」是个陷阱(等于和职业赌徒对赌,大概率输)→ 我,把赔率降成参照;② 人群模拟未必到处都灵(很多事是被新闻推着走的)→ 我把题目缩小到「由民调结算」那一类;③ 又想准、又想顺便赚钱,容易两头落空 → 我把「赚钱」降成副线、不当成败标准。说服了吗:两刀我改了、一刀我收编了。更有说服力的是:后来数据连她让我缩小到的那类题也否了(那种网站上几乎没有这类题)—— 说明我看数据掉头,不是固执。她还没松口的:样本够不够多到统计上算数、这套模拟比「直接问 AI」贵多少 —— 这两点我产品会上主动认。

去操作这台仪器。