本练习用显式规则生成 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() 部分。
常见代码词: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。二者不为本练习的参数背书。