40名飞行员真实飞行中的多模态生理监测:从信号质量到构造效度的三层证据

Frontiers in Neuroergonomics论文深度解读

Xu et al., “From signal to construct evidence: multimodal consumer-wearable sensing in real general-aviation flight”, Frontiers in Neuroergonomics, 2026.

DOI: 10.3389/fnrgo.2026.1911259

论文信息

项目 内容
标题 From signal to construct evidence: multimodal consumer-wearable sensing in real general-aviation flight
期刊 Frontiers in Neuroergonomics
年份 2026
DOI 10.3389/fnrgo.2026.1911259
被试 40名飞行员(35男5女),飞行时长20-1800小时
机型 Cessna 172
场景 真实通航飞行(非模拟器)

核心创新

首次在真实通用航空飞行中同步采集6种消费级可穿戴生理信号,并通过三层构造效度框架验证哪些信号真正反映认知状态而非运动伪影。

核心问题: 消费级可穿戴设备可以在飞行中采集信号≠信号能索引认知状态。信号可能被运动、姿态、任务结构主导。

三层构造效度框架

实验设计

飞行任务(5个标准化段)

段落 任务 认知需求 典型时长
1 地面基线 低(发动机启动前) 5min
2 正常起飞 高(注意力集中) 3min
3 45°坡度转弯 中高(姿态控制) 3min
4 动力失速改出 高(失速识别+恢复) 3min
5 正常着陆 高(精确定位) 5min

传感器配置

信号类型 设备 采样率 位置 数据可用率
额叶EEG 消费级额贴 256Hz AF7/AF8 85-97%
心电/心率 胸带 1Hz 胸部 92%
皮电(EDA) 腕带 4Hz 手腕 88%
眼动 眼动仪 60Hz 远程 90%
皮肤温度 腕带 0.1Hz 手腕 95%
飞行运动 飞机数据 10Hz 飞机系统 100%

核心发现

信号质量

信号 可用率范围 主要噪声来源
EEG 85-92% 飞行振动、汗液
心率 90-95% 运动伪影
EDA 85-90% 手部活动
眼动 88-93% 强光干扰
温度 92-97% 环境温度变化

第一层:已知组敏感性

  • 应力自评在5个任务间有显著差异(Kruskal-Wallis H=61.1)
  • 但关键问题:任务顺序基本固定 → 差异可能混淆于时间、疲劳、传感器稳定
  • 不能仅凭此层判定信号是”认知状态指标”

第二层:个体内收敛效度

信号对 重复测量相关r_rm 解释
心率 ↔ 自评应力 0.57 中等收敛
眼动率 ↔ 自评应力 0.39 弱-中等收敛
EDA ↔ 自评应力 0.25 弱收敛
额叶theta/alpha ↔ 自评应力 0.08-0.15 几乎无收敛

关键发现: 心率和眼动是最可靠的个体内认知状态指标,而额叶EEG在真实飞行环境中不可靠。

第三层:效标关联效度

预测因子 教练评分关联 稳健性
飞行运动学 有 ✅ 留一交叉验证稳健
皮电EDA 有 ⚠️ 部分稳健
额叶theta/alpha 有 ❌ 依赖个别飞行员
心率 弱 ❌ 不稳健
眼动 弱 ❌ 不稳健

关键发现: 额叶theta/alpha比的关联完全依赖个别飞行员,在留一交叉验证中不存活。

交叉验证:传感器vs任务基线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""
论文核心实验复现:交叉验证

方法:
1. 留一飞行员交叉验证
2. 训练集: 39名飞行员特征 → 教练评分
3. 测试集: 第40名飞行员
4. 对比: 传感器特征 vs 仅任务标识基线

结果: 传感器特征未超过仅任务基线
说明: 消费级可穿戴信号尚不支持跨飞行员泛化预测
"""

import numpy as np
from sklearn.model_selection import LeaveOneGroupOut
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error

def cross_pilot_validation(features, labels, pilot_ids):
"""
留一飞行员交叉验证

Args:
features: [n_trials, n_features] 传感器特征
labels: [n_trials] 教练评分
pilot_ids: [n_trials] 飞行员ID

Returns:
mae: 跨飞行员MAE
baseline_mae: 仅任务基线MAE
"""
logo = LeaveOneGroupOut()
model = RandomForestRegressor(n_estimators=100, random_state=42)

maes = []
baseline_maes = []

for train_idx, test_idx in logo.split(features, labels, pilot_ids):
X_train, X_test = features[train_idx], features[test_idx]
y_train, y_test = labels[train_idx], labels[test_idx]

# 传感器特征模型
model.fit(X_train, y_train)
pred = model.predict(X_test)
maes.append(mean_absolute_error(y_test, pred))

# 仅任务基线(预测每个任务的平均评分)
task_ids_train = features[train_idx, 0] # 任务ID作为第一列
task_means = {}
for t in np.unique(task_ids_train):
mask = task_ids_train == t
task_means[t] = y_train[mask].mean()

task_ids_test = features[test_idx, 0]
baseline_pred = [task_means.get(t, y_train.mean()) for t in task_ids_test]
baseline_maes.append(mean_absolute_error(y_test, baseline_pred))

return np.mean(maes), np.mean(baseline_maes)

# 模拟结果(按论文报告)
if __name__ == "__main__":
# 模拟40飞行员 × 5任务 = 200试次
np.random.seed(42)
n_pilots = 40
n_tasks = 5
n_trials = n_pilots * n_tasks

# 特征: [task_id, heart_rate, eda, eye_rate, eeg_theta_alpha, ...]
features = np.random.normal(0, 1, (n_trials, 10))
features[:, 0] = np.tile(np.arange(n_tasks), n_pilots) # 任务ID

# 标签: 教练评分(1-5分)
pilot_ids = np.repeat(np.arange(n_pilots), n_tasks)
labels = np.random.randint(1, 6, n_trials).astype(float)

mae, baseline_mae = cross_pilot_validation(features, labels, pilot_ids)

print("=== 留一飞行员交叉验证结果 ===")
print(f"传感器特征MAE: {mae:.3f}")
print(f"仅任务基线MAE: {baseline_mae:.3f}")
print(f"传感器 > 基线? {'是' if mae < baseline_mae else '否'}")
print(f"结论: 消费级传感器特征{'支持' if mae < baseline_mae else '不支持'}跨飞行员泛化")

对航空座舱监测的启示

1. 信号≠构造

论文最重要的发现:可穿戴设备能采集信号 ≠ 信号能索引认知状态。

认知构造 理论最佳指标 真实飞行中可用?
急性应力 EDA phasic ⚠️ 弱收敛
心理负荷 额叶theta/alpha ❌ 不稳健
情境感知 眼动扫描模式 ⚠️ 弱关联
疲劳 心率变异度HRV ⚠️ 中等

2. 消费级vs研究级

维度 消费级(本研究) 研究级
EEG AF7/AF8额贴 32-64导联帽
心率 胸带1Hz 12导联ECG
眼动 远程60Hz 头戴120-240Hz
数据质量 85-97% >99%
佩戴舒适度 ✅ 可接受 ❌ 侵入性强

3. 跨领域对IMS的启示

4. 个体校准的必要性

论文最关键的结论:跨飞行员预测不超过任务基线,说明:

  • 不能假设一个模型适用于所有驾驶员
  • 需要个体校准阶段(baseline建立个人特征)
  • 实时监测应采用相对变化而非绝对阈值

IMS落地建议:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 个体校准框架
class IndividualCalibration:
"""
驾驶员个体校准框架
基于论文发现:跨人泛化不可靠,需个体基线
"""

def __init__(self, calibration_duration_min=15):
self.calibration_duration = calibration_duration_min * 60 # 秒
self.baseline = {}
self.calibrated = False

def collect_baseline(self, signals: dict, fps: int = 30):
"""
收集个体基线数据

建议时长: 15分钟正常驾驶
采集信号: 心率、眼动、PERCLOS、EDA
"""
# 需要至少15分钟数据
required_samples = self.calibration_duration * fps
if len(signals.get('heart_rate', [])) < required_samples:
return False

self.baseline = {
'hr_mean': np.mean(signals['heart_rate']),
'hr_std': np.std(signals['heart_rate']),
'perclos_baseline': np.mean(signals['perclos']),
'gaze_displacement_baseline': np.mean(signals['gaze_disp']),
'blink_rate_baseline': np.mean(signals['blink_rate']),
}
self.calibrated = True
return True

def compute_fatigue_index(self, current_signals: dict) -> float:
"""
基于个体基线计算疲劳指数

Returns:
fatigue_index: 0-1 (0=清醒, 1=严重疲劳)
"""
if not self.calibrated:
return 0.5 # 未校准返回中性值

# 相对变化(z-score化)
hr_z = (np.mean(current_signals['heart_rate']) -
self.baseline['hr_mean']) / self.baseline['hr_std']

perclos_z = (np.mean(current_signals['perclos']) -
self.baseline['perclos_baseline']) / max(
self.baseline['perclos_baseline'], 0.01)

# 加权融合
fatigue_index = 0.3 * max(0, -hr_z) + 0.7 * max(0, perclos_z)
return min(1.0, fatigue_index)

局限性

  1. 任务顺序混淆:5个任务基本固定顺序,无法区分任务效应vs时间/疲劳效应
  2. 样本偏倚:35男5女,通航飞行员(非运输航空)
  3. 单教练评分:每架次仅一名教练评分,无法评估评分者间信度
  4. EEG位置局限:仅AF7/AF8额贴,缺少中线Fz(额叶中线theta经典位置)
  5. 单次飞行:无重复测量,无法评估日间变异

结论

这篇论文是消费级可穿戴生理监测在真实飞行中的里程碑式验证:

  1. 心率是最可靠的个体内指标(r_rm=0.57)
  2. 额叶EEG在真实飞行中不可靠——theta/alpha比完全依赖个别飞行员
  3. 跨飞行员泛化失败——传感器特征不超过任务基线
  4. 消费级设备可用但需个体校准

对IMS的核心启示:

  • DMS核心应依赖心率和眼动,而非EEG
  • 需要设计个体校准流程(至少15分钟基线采集)
  • 跨人泛化不可靠 → 采用相对变化指标
  • 场景上下文(驾驶任务类型)本身就是强预测因子

参考来源:

  • Xu et al., Frontiers in Neuroergonomics, 2026, DOI: 10.3389/fnrgo.2026.1911259
  • ICAO CBTA框架 (icao.int)
  • EASA 2026 CBTA标准 (easa.europa.eu)