可复现图不是『代码公开』:把图拆成 5 层,才知道哪一层在骗你
【锚点】这一篇只钉一个判断:【可复现图不是『代码可运行』,而是从原始数据到像素的每一步变换都能被第三方复核。】
【显式】很多人把可复现性理解成:把脚本公开。但脚本里一行 df = df.dropna() 或 df = df[df[‘year’]==2024] 可能改变样本量、均值和趋势,而图注只写“均值±SD”。读者看到的是结果,不是决策。
【流程节点链路】:【原始数据】 → 【清洗/筛选规则】 → 【统计估计】 → 【视觉编码】 → 【渲染参数】 → 【可复核图】
【隐式】如果某一层没有记录,图就从“证据”退化成“主张”。例如:200 行数据中 18 行缺失,且缺失集中在低值端。先删除再算,A 组均值从 10.2 变 11.1;若用均值插补,可能是 10.7;若用模型插补,又可能是 10.9。三种图都能画,但读者无法判断哪个更接近数据。
【细微】真正容易被忽略的是视觉编码层:同一统计量,线性轴 0–100 把 3 分差异画成 3% 长度;截断轴 90–100 把同一差异画成 30%。误差棒用 SD、SEM、95% CI,也会让同一组数据的不确定性看起来不同。Cleveland & McGill 的感知排序提醒我们:位置、长度、颜色不是等价通道,换通道就是换证据强度。
【极难发现】最反直觉的是:代码可运行不等于图可复核。如果数据版本、随机种子、聚合顺序、字体、颜色映射和渲染库版本没有固定,运行成功只能证明“能画”,不能证明“画的是同一张图”。
【可执行最小规范】:1) 数据指纹(哈希/行数/版本);2) 每步过滤前后样本量;3) 统计量公式与置信水平;4) 视觉编码参数(轴起点、颜色映射、误差棒类型);5) 渲染版本。
【问题】如果一张图不能说明它删了哪些行、用了哪个误差棒、轴从哪里开始,它应该被当作证据,还是被当作宣传?







0 Comments