C00 · 第 4 章 · 第二编 科学编程
数据可视化与计算实验
从研究问题、变量角色、单位和模型假设定义计算实验,以对照、参数设计、分辨率与随机重复生成可审计数据,再按数据类型选择图形编码、尺度和不确定性表达,并保存种子、参数、原始数据、派生表和图件血缘。
报告页面错误本章目标
- 把研究问题改写为可计算的输入、输出、比较、单位、假设和成功判据。
- 区分控制变量、扫描参数、随机重复和数值分辨率,设计可解释的实验矩阵。
- 按定量、类别、时间、分布和空间数据选择位置、长度、颜色与图形类型。
- 正确标注尺度、样本量、误差条和区间定义,识别截轴、平滑和选择性展示造成的夸大。
- 保存种子、参数、原始数据、派生步骤、软件环境和图件清单,使结论能够复算。
本页目录
先定义问题,再决定画什么
一张图不能替代研究问题。计算前先写一句可判定的问题,例如:“在相同误差容限下,方法 A 与方法 B 的运行时间如何随网格规模变化?”这句话已经指定比较对象、控制条件、输出指标和自变量。若问题只写“观察两个方法表现”,任何曲线都能被事后解释,实验缺少失败条件。
每个变量应记录角色和单位:自变量由实验者扫描,响应变量是待解释输出,控制变量保持不变,协变量用于分层或调整,随机因素通过重复采样。网格数是无量纲计数,步长可能用 m,运行时间用 s,能量误差用 J 或相对无量纲量。把绝对误差与相对误差画在同一轴而不标注,会改变数量级含义。
模型假设也属于实验输入,包括方程、边界条件、初值、材料参数、数据清理、停止准则和硬件环境。结果支持的是“在这些条件下的计算模型”,不是无条件的自然规律。
从问题到实验契约
一份简洁实验契约至少回答:
- 输入数据或初始状态是什么,版本和单位是什么;
- 哪些参数变化,取值范围为何合理;
- 哪些条件固定,基线是哪一个;
- 输出指标如何计算,方向是越大越好还是越小越好;
- 随机运行需要多少独立种子,如何映射到重复编号;
- 数值分辨率如何加密,停止或收敛判据是什么;
- 哪些异常会使一次运行无效,是否允许重试;
- 最终保存哪些原始数据、派生表和图件。
契约在查看最终结果前确定,可降低事后挑选参数和指标的风险。探索性分析允许修改问题,但每次修改应产生新的实验版本,保留原始探索记录,不把探索后的选择伪装成预先计划。
对照、参数扫描与重复不是一回事
对照用于隔离一个改变的影响。一次只改一个参数便于解释局部效应,却无法发现参数交互;全因子设计能估计交互,但组合数随因素增长。规则网格适合低维光滑响应,随机或空间填充设计更适合高维范围。参数范围应来自物理、算法或数据边界,而不是只选能产生漂亮曲线的区间。
随机重复估计随机过程波动;网格加密估计离散误差;更换模型估计结构不确定性。三者不能合成一个“重复次数”。同一数值分辨率下跑十个种子不会证明离散收敛,单一种子上加密五次也不能估计随机方差。
配对设计常提高比较效率:方法 A、B 使用相同数据划分、初态或随机场编号,分析每对差值。若两个方法内部耗用随机数数量不同,直接给相同整数种子不保证样本逐项对应;更稳妥的是预先生成共享输入,或按数据实例和重复编号派生独立随机流。
设要比较估计器 A、B 的绝对误差。预先定义二十个重复编号 ,每个编号生成一份共享模拟数据 ,再让两个方法都处理同一 。记录
图中展示二十个配对差值及其均值区间,而不是把 A、B 各自二十点打乱后比较两个独立均值。若 ,表示 A 在该共享实例上误差更小。区间必须注明是差值标准差、均值标准误还是置信区间;三者含义不同。
数值收敛实验需要已知参照或一致基准
算法验证应把离散参数作为自变量,把与解析解、制造解或高精度参考的误差作为响应。若理论误差 ,则
双对数图在渐近区斜率约为阶数 。只画解曲线越来越重合不够,因为视觉分辨率可能隐藏误差;应给误差范数、单位、参考解和拟合区间。
求解
在 的精确解为 。显式 Euler 用步长 得
时 ,绝对误差约 ; 时 ,误差约 。步长减半,误差比约 ,接近一阶方法预期的二倍下降。实验表应保存 h、步数、数值解、参考解、绝对误差和运行状态;双对数图只对进入渐近区的点拟合斜率。
图形编码选择遵循数据关系
定量比较优先使用共同基线上的位置,其次是长度;角度、面积和体积更难精确比较。类别用位置或离散形状,连续数值用有序亮度或连续色标。颜色不能作为唯一编码,还应配标签、线型、标记或直接数值,照顾色觉差异和灰度输出。
常见对应关系如下:
- 随时间或有序参数变化:折线和带标记点的趋势图;
- 两个定量变量关系:散点图,必要时叠加透明度或分箱;
- 单变量分布:直方图、密度、ECDF 或原始点;
- 多组分布:箱线、提琴与抖动点,并显示样本量;
- 矩阵或二维标量场:热图,配有单位和明确色标;
- 组成关系:堆叠图仅在总量和部分均重要时使用。
折线暗示相邻点之间存在顺序和可插值关系,不能用线连接无序类别。直方图外观依赖箱宽和起点,应报告分箱规则或同时给 ECDF。面积图和三维柱体容易把大小差异夸张,不适合精确比较。
比较两个算法在 上的运行时间,每个规模独立重复十五次。原始表每行包含方法、、重复号、时间 s、硬件、线程数和状态。主图以 为横轴、时间秒为纵轴,两个方法用颜色加线型区分;点表示中位数,带表示四分位区间,半透明小点显示重复。
若规模和时间跨多个数量级,可用双对数轴并在轴标题写明。对数轴只接受正值,超时运行不能编码为零;应另用删失标记或表格说明。只画每组最快一次会把调度噪声和缓存偶然当成算法性能。
尺度、坐标轴与变换
柱形长度以零为共同基线,截断纵轴会放大比例差异。折线图关注变化时不必总从零开始,但应让范围、刻度和注释清楚,避免把微小波动呈现为巨大跃迁。等比例坐标对几何斜率和角度很重要;任意改变宽高比可使趋势显得更陡或更平。
对数变换适合乘法尺度和跨数量级数据。对数轴上的相等距离表示倍数而非差值,误差条也应在原尺度或变换尺度上定义一致。含零或负数时不能直接取对数,添加任意小常数会改变低值结构,必须有模型理由并报告常数。
双纵轴容易把两条无关序列通过缩放制造同步,应优先分面、标准化后明确标注,或直接画二者关系。平滑曲线会隐藏局部变异,需显示原始点、平滑方法和带宽;趋势线不能越过数据支持范围无条件外推。
两方法准确率分别为 与 ,绝对差 ,相对前者约百分之一。若柱图纵轴从 开始,第二根柱可在视觉上高出数倍;从零开始则显示真实长度比例。更直接的表达是画点估计与置信区间,并在标题或注释中写“绝对提升 0.9 个百分点”。
“相对提升百分之一”和“提升一个百分点”不是同一量。报告应同时给基线、绝对差和适当区间,避免只选择数值更显眼的说法。
不确定性必须说明对象和计算方法
标准差描述个体观测分散,标准误描述估计均值的重复波动,置信区间按重复抽样程序具有覆盖含义,预测区间描述未来观测。图例只写“误差条”不够,应写明均值±标准差、均值标准误、百分之九十五置信区间或分位数区间,并给样本数。
时间序列、Markov 链和同一初始条件的密集输出通常相关,不能用帧数的平方根缩小标准误。应按独立实验单位、相关时间或分块估计有效样本。参数扫描中每个点若只有一个随机种子,连线只是单次实现,不支持总体均值趋势。
置信带也不等于所有未来曲线会落入带内。逐点区间与同时覆盖整条曲线的区间不同,多参数、多指标和多时间点选择会增加偶然显著结果。探索图可展示全部指标,正式结论应提前定义主要指标或说明多重比较处理。
十次独立运行的指标均值为 、样本标准差为 。描述单次运行分散可画 。均值标准误为
若采用 Student 区间,百分之九十五均值区间还要乘自由度九的临界值,而不是直接用 。三种误差条宽度不同,因为回答的问题不同。若十个值来自一条相关轨迹的连续十帧,这个独立样本公式不成立。
不夸大证据的快速检查
图应显示与结论相关的全部条件,而不是只保留最好种子、最佳时间窗或最有利基线。若删除异常运行,要给事先定义的无效标准和删除数量。失败、超时和数值发散本身可能是稳定性证据,不能默默从运行时间或准确率图中消失。
还应检查:坐标轴是否含单位;色标范围是否在多面板间一致;类别顺序是否有意义;样本量是否可见;平滑和聚合是否掩盖多峰;误差区间是否对应独立单位;图题是否把相关说成因果;图中有效数字是否超过输入精度。装饰性三维、阴影和高饱和渐变不增加证据。
原始数据、派生数据与 provenance
原始输出应保持不可变,派生表由脚本从原始数据确定性生成,图件只读取经过模式验证的派生表。建议每行代表一个观测,至少含 run_id、方法、参数、单位、分辨率、重复号、种子、指标值和状态。宽表适合某些计算,长期归档仍需数据字典说明每列。
provenance 即产物血缘,回答“这张图由哪些输入、代码和参数产生”。每次运行保存清单:
experiment_id
code_revision
data_version_or_hash
environment_and_dependencies
parameters_with_units
rng_algorithm_and_seed_map
start_and_stop_rule
raw_output_paths
derived_table_path
figure_config_and_output_path
图像文件不是数据替代品。应同时保存可机读数据、生成脚本和图件配置。交互调整坐标范围、颜色或筛选后,要把最终选择写回配置,不能只保存在某次图形界面会话中。
随机实验把主种子与每个运行编号映射到独立子流,并保存生成器算法。确定性实验也需记录线程数和硬件,因为并行浮点归约顺序可能影响末位。外部数据要保存版本、下载时间、许可证和校验值;“使用最新数据”无法复算。
复算与验证闭环
复算流程从空的派生目录开始,读取冻结原始数据和清单,重建派生表与图件,并核对行数、模式、单位、摘要统计和文件校验值。若产物依赖手工步骤,应将步骤写成可执行变换或至少记录输入输出和理由。复算成功证明流程可重复,不证明模型假设正确;还要用基准、对照和敏感性分析验证结论。
最终报告应把结果和限制并列:哪些参数区间支持趋势,哪些运行失败,误差来自随机性、离散化还是测量,未测试哪些边界。图注应能独立说明数据、线和阴影分别代表什么。
练习
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
关系与资源
- 数组、向量化与数值精度 提供形状、轴、单位和稳定计算基础。
- 模型、假设与适用边界 限定计算结论的解释范围。
- 统计估计 提供效应量、标准误和区间语言。
- 测试、版本控制与环境管理 支持基准验证和版本追溯。
- 编程与科学计算综合项目 将实验、代码、数据和图件组织为交付产物。
Computational Methods of Scientific Programming
Thomas Herring, Chris Hill
用于核对 P11 的程序验证、并行性能测量、环境记录、结果传播和可复现计算实验要求。
打开官方来源MIT OpenCourseWare 12.010 覆盖科学编程、验证、可视化、版本控制和可复现工作流,可用于核对本章计算实验与产物组织。图形只负责诚实表达已有证据,不能补足缺失对照、错误单位或不足采样。