第5课 · 开放探讨:规则沙盘复现

本练习用显式规则生成 20 位合成员工的提交决定,来源标记为 rule_simulation。浏览器打开 ../index.html 即可使用;Python 使用标准库,R 使用基础包。

默认复现

Python 3:

python reproduce.py --out rule_output.csv

R(仅使用基础包):

Rscript reproduce.R rule_output.csv

默认参数:seed=42、alpha=1、gamma=0、leader=open、wording=A。默认结果与 ../data/rule_default.csv 对应,20 行、每人一行。CSV 使用 UTF-8 BOM、LF 换行,连续数值保留 10 位小数。

改变条件:

python reproduce.py --seed 43 --alpha 0 --gamma 1 --leader closed --wording B --out test.csv
Rscript reproduce.R test.csv 43 0 1 closed B

R 参数顺序固定为:输出路径、种子、alpha、gamma、leader、wording。Python 使用命名参数。运行时会写入指定输出文件;请选择新文件名以免覆盖已有结果。

怎么读代码

先运行默认参数,再按下面顺序读。英文注释解释每一步为什么这样做;Python 的 rng() 和 simulate() 分别对应 R 的 rng() 与 lapply() 部分。

  1. 找到 MOD、FIELDS(R 中是 data.frame 的列名)。MOD 是随机数公式的模数;字段顺序决定 CSV 每列的含义。
  2. 读 rng(seed)。LCG 每次用上一次 state 算出下一次 state,再除以 MOD,得到 0 到 1 之间的伪随机数。同一个种子会重现同一序列。
  3. 找到 attributes 和 draws(R 为 draw)。画像流固定为 731;决策流由 seed 控制。先改 seed,检查 benefit、cost、receptivity 是否保持不变。
  4. 读每人的三个属性。benefit 是收益,cost 是成本,receptivity 是对领导回应的敏感度。它们是合成输入。topic 按编号轮换,四类各有五人。
  5. 读 z 和 p。z 是 logit,即概率的对数几率;sigmoid 把 z 转为概率 p。leader 决定 +1 或 −1,wording 决定 0 或 1;alpha、gamma 决定这两项的强弱。
  6. 找到 u < p。u 是该人的决策抽样值;小于 p 就提交。比较条件时固定 seed,让同一人复用同一个 u,这就是配对比较。
  7. 读 spoken。它只保留提交者;不同 topic 的数量除以 4 是话题覆盖。没有人提交时,覆盖为 0。
  8. 最后读导出部分。决策用未舍入数值;CSV 连续数值保留十位小数。先核对 source、seed 和条件,再比较每人的 p、u、voice。

常见代码词:yield = 每次给出一个值;next = 取下一个值;lapply = 对每个编号执行同一步;row = 一行记录;schema = 列名与排列约定;validation = 检查输入或结果;paired = 配对;logit = 对数几率;sigmoid = 把任意实数映射到 0—1 的函数。

读完后只改一个参数:把 alpha 从 1 改成 0,保持其他设置相同,分别运行 open 与 closed,看看两个条件的 p 和 voice 是否一致。

真正计算的规则

z = -0.4 + 1.3 * benefit - 1.6 * cost + alpha * L * receptivity + gamma * W

p = 1 / (1 + exp(-z));u < p 时 voice=1,否则 voice=0。

L:open=1、closed=-1;W:A=0、B=1。alpha、gamma 均为人为指定,默认并未根据任何论文或真人资料估计。alpha 范围 -2..2;gamma 范围 -2..2。alpha=0 取消领导回应效应,负值将内置方向反转。gamma 是直接加入公式的改写扰动,不是语言模型测得的敏感性。

LCG 的 state = (48271 * state) mod 2147483647,返回 state/2147483647。画像种子始终为 731,每人连续取 benefit、cost、r,receptivity=0.5+r。依次生成 20 人。话题按 ID 循环排列,每类 5 人。决策序列另用用户指定种子,每人取一个 u;四格中同一 ID 使用同一个 u。种子必须为 1..2147483646 的整数。

数值的有限精度可能造成极小的平台差异;默认数据应逐字段核对。页面显示三位小数,导出十位小数,决定使用未舍入数值。不要从显示值重新计算边界决定。

字段字典

建言比例 = voice 均值。话题覆盖 = 提交者不同 topic 数 / 4,零提交时为 0/4;这不是语义多样性或建议质量。固定画像、独立决策、无社会互动、无心理安全中介,是本练习的明确限制。不能据此推断真人因果效应或模型行为。

从沙盘到研究

真实模型实验须另外执行并留存完整提示和原始日志;记录模型版本、运行日期与时区、temperature、top_p、max_tokens、全新会话、失败与重试。每格重复采样不是增加真人样本。详见页面的研究协议。最后在获得适当审批与同意后,用不参与开发的目标人群数据做留出验证,预先冻结指标和可接受误差。

方法阅读:Park 等 v3;Gao 等 2025。二者不为本练习的参数背书。