第3章 变量分类与影响域分析:控制变量、独立变量、干扰变量、协变量定义

3.1 适用场景

本章变量分类方法适用于以下机器人A/B测试场景:

  • 多变量同时测试时需分离各变量效应
  • 环境参数(光照、地面摩擦、声音噪声)无法完全复制
  • 机器人自身状态(电池电量、关节温度、传感器漂移)随时间变化
  • 需要引入统计协变量(如时间戳、负载序列)提升测试灵敏度
  • 跨平台/跨代机器人测试时的变量对齐
💡 提示:当测试结果出现不可解释的波动时,优先检查是否遗漏了干扰变量或未统计协变量。

3.2 前置条件

  1. 测试假设明确:已写出待验证的零假设与备择假设
  2. 变量清单初稿:包含所有可能影响测试指标的可测量量
  3. 机器人平台接口开放:能通过命令/API读取或设置参数(速度、PID增益、传感器采样率等)
  4. 数据采集系统就绪:至少记录 时间戳、测试对象ID、待测指标(如成功率、路径偏差、碰撞次数)
  5. 环境传感器部署:光照计、测距仪、IMU等外设数据可实时回传
⚠️ 常见陷阱:将不可控的环境噪声直接视为独立变量,会导致效应量估计偏差。必须在分类前分离可控与不可控因素。

3.3 操作步骤

  1. 列出候选变量:从测试设计文档、传感器列表、机器人状态字典中汇总所有可记录值。
  2. 按可控性分组:区分测试中可人为设定/调节的量 vs. 只能被动记录的量。
  3. 标注影响域:用因果图标出每个变量直接影响或被影响的对象(机器人本体、环境、算法输出)。
  4. 分配变量角色:按下列规则赋予类别——
  5. 交叉验证:至少由两位工程师独立分类,不一致处集体裁决。
变量类型定义机器人测试例子影响域控制方式
控制变量 在测试中保持恒定的量,确保重复条件一致 电池电压稳定在11.5V±0.1V 系统稳态特性 闭环稳压器 / 容量筛选
独立变量 主动调节以观察效应变化的因素 驱动电机PID的P增益(1.0/2.0/3.0) 运动轨迹精度 ROS参数服务器动态调参
干扰变量 非有意改变但会影响结果的外部或内部噪声 室内行人经过时的射频干扰 通信延迟 / 传感器误触发 屏蔽 / 随机化 / 统计剔除
协变量 可记录但不作为测试因子,用于统计校正的连续变量 实验进行时的CPU温度 计算性能波动 ANCOVA纳入回归模型

关键判定逻辑:

  • 若你能在测试前设定其值 → 独立变量(欲改变)或控制变量(欲固定)
  • 若你不能设定但能被动记录且与待测指标相关 → 协变量
  • 若你既不能设定也难以记录,但怀疑有影响 → 干扰变量(需用随机化/屏蔽解除)

3.4 输入输出物

类型名称格式责任方
输入测试设计文档PDF / Wiki算法工程师
输入机器人平台参数清单YAML / JSON平台运维
输入环境传感器布点图SVG / 表格测试部署
输出变量分类登记表Excel / 代码注释测试工程师
输出影响域矩阵(Dependency Matrix)Markdown 表格测试工程师
输出分类决策日志Git commit messages全员
# 变量分类登记表示例(YAML片段)
variables:
  - name: pid_p_gain
    type: independent
    domain: controller
    fixed_value: null   # 随测试条件变化
    unit: ""
    influence_target: trajectory_overshoot

  - name: floor_friction
    type: disturbing
    domain: environment
    fixed_value: null
    unit: dimensionless
    mitigation: randomize_floor_patches

  - name: battery_voltage
    type: control
    domain: power
    fixed_value: 11.5
    unit: V
    tolerance: 0.1

  - name: trial_index
    type: covariate
    domain: procedure
    description: continuous ordinal to detect time drift
    model: linear

3.5 责任边界

  • 测试工程师:主导变量分类,填写登记表,组织交叉验证。
  • 平台运维:提供机器人参数接口说明,确认控制变量能否被真实锁定。
  • 数据科学家:设计协变量统计模型(ANCOVA / 线性混合模型),判断干扰变量是否需要剔除或分层。
  • 质量保证:审核变量分类是否覆盖全部候选变量,影响域有无矛盾。

3.6 记录材料

  • 变量分类登记表(版本控制纳入 test_plan/ 目录)
  • 影响域分析报告(含因果图截图或 SVG)
  • 分类决策争议记录(Wiki 或 Issue 讨论链接)
  • 协变量预处理脚本(如 scripts/covariate_normalize.py)

3.7 异常处理

异常现象可能原因处理措施
同一变量被归为冲突类别 对“可控性”定义不一致 暂停分类,统一用“测试人员能否在实验前用数值设定”作为判断标准
两个变量的影响域完全重叠 特征共线性风险 标记为“潜在共线”,后续通过方差膨胀因子(VIF)检测,必要时合并为复合变量
协变量采集频率不足 传感器采样率低于测试帧率 提高采集频率或对协变量进行插值,记录插值方法到代码注释
干扰变量无法通过随机化消除 干扰源分布与测试区域不均匀 改用分层随机化,或将其升级为协变量纳入统计模型

3.8 验收标准

  1. 所有候选变量(≥90% 初始清单)均被归入四类中的一类,无“未分类”项目。
  2. 控制变量的固定值在测试日志中可验证(连续10次记录的偏差≤设定容差)。
  3. 独立变量的变化范围与步长在设计文档中有书面依据。
  4. 干扰变量至少有一种缓解措施(随机化、屏蔽、剔除、统计校正)。
  5. 协变量已与主测试指标一起纳入数据收集脚本,并预留回归分析列。
  6. 影响域矩阵中不存在“循环依赖”(变量A影响B,B又通过间接路径影响A)而未加注。
变量分类与影响域层次 变量分类与影响域层次 机器人A/B测试系统 控制变量(固定) 独立变量(主动调) 干扰变量(噪声) 协变量(统计校正) 影响域说明 控制/独立变量影响系统内部,干扰/协变量通过环境或统计路径间接作用