静息二十分钟里的衰老曲线 — Autonomic Aging 心肺信号库

1,121 人 / 1000 Hz 心电加连续血压 / 15 个年龄组

来源 https://physionet.org/content/autonomic-aging-cardiovascular/1.0.0/发布时间: 2026-10-28最后更新: 2026-10-28 阅读 14
静息二十分钟里的衰老曲线 — Autonomic Aging 心肺信号库

信息速览

数据集名称静息二十分钟里的衰老曲线 — Autonomic Aging 心肺信号库
数据类型时序信号,波形,元数据
规模1,121 名健康志愿者 / 1,121 段记录
接入方式https://physionet.org/content/autonomic-aging-cardiovascular/1.0.0/
AI 就绪度

自主神经管的是那些不需要你操心的事:站起来时血压别掉、躺下时心率别飙、呼吸之间心跳该快该慢。这套调节能力从成年早期就开始走下坡,到了七八十岁,心率变异性可能只剩年轻时的一小截。问题是这条下坡曲线很难画——它太慢,慢到任何一项横断面研究都得横跨几十岁才看得见形状。

耶拿大学医院心身医学与心理治疗科用十年时间攒了一批横跨 18 到 92 岁的静息记录:一千一百余名自述健康、经体检与实验室筛查排除心血管相关疾病的志愿者,每人平卧采一段心电加连续无创血压,采样率 1000 Hz,单段 8 到 45 分钟。它不提供任何标注,也不提供任何算好的指标,给的是最原始的两路波形和一张六列的人口学表。

这份克制既是它的价值也是它的门槛:想做心率变异性、想做压力反射、想做生物年龄,信号都在,但每一步都得自己走;想拿现成标签训练分类器的人,在这里会一无所获。一屏速览见下表。

维度 内容
全名 Autonomic Aging: A dataset to quantify changes of cardiovascular autonomic function during healthy aging
中文通称 自主神经衰老数据集 / 心血管自主神经衰老库
作者 Andy Schumann、Karl-Jürgen Bär
采集机构 耶拿大学医院心身医学与心理治疗科 LANIC 实验室(德国耶拿)
发布平台 PhysioNet,2021 年 7 月 30 日,版本 1.0.0
配套论文 Scientific Data,2022 年,DOI 10.1038/s41597-022-01202-y
数据 DOI 10.13026/2hsy-t491(v1.0.0)
受试者 1,121 名健康志愿者,18–92 岁,女性 670、男性 433
年龄结构 平均 32.5 ± 14.7 岁,泛化为十五个年龄组
每段内容 II 导联心电(部分含 I 导联)+ 指端连续无创血压
采样率 心电 1000 Hz;血压原始 100 Hz,插值后统一到 1000 Hz
单段时长 官方项目页:平均 19 分钟,区间 8–45 分钟
标注 无。无心拍、无节律、无派生指标
元数据 subject-info.csv 六列:编号、年龄组、性别、BMI、时长、设备
文件格式 WFDB:.hea 文本头 + .dat 二进制波形
体量 解压后 5.9 GB,整包 ZIP 5.2 GB
许可 ODC-ODbL 1.0,免注册

§1 它要解决的具体麻烦

1.1 衰老是慢变量,横断面研究只能靠人海

心率变异性随年龄下降这件事,教科书上写了四十年,但要把曲线画准,难点不在算法而在样本。一个人从二十五岁到七十五岁,心率变异性会掉一大截,可这五十年里任何一次测量只是一个点。纵向随访要等五十年,没人等得起;退而求其次的做法是横断面——同一时间点上找一批不同年龄的人,每人测一次,把点连起来当曲线。

这条路有两个陷阱。第一个是健康定义:老年人身上多多少少带着高血压、糖尿病、正在吃的β受体阻滞剂,这些都会压低心率变异性。如果筛得不严,测出来的"衰老效应"里混着大量疾病与药物效应,曲线会被夸大。第二个是年龄覆盖:大学附属医院最容易招到的是二十几岁的学生和三十几岁的职工,六十岁以上的人难招,八十岁以上更难,于是曲线的高龄端总是稀疏的,越是要紧的地方越没有点。

这份数据在这两件事上都下了功夫。排除标准写得很硬:任何可能影响心血管功能的疾病、违禁药物或用药一律排除,体检、静息心电图、电解质与血常规都必须无异常。年龄覆盖做到了 18 到 92 岁,末端还留下了 85 岁以上的组。

代价是入组十年、只攒下一千一百余人。这个规模在深度学习时代不算大,但在"严格健康筛选 + 全年龄段覆盖"这个约束下已经很难得——它不是靠规模取胜的库,是靠入组质量取胜的库。

1.2 三条常见的错误期待

第一条,期待它像 MIMIC 或 PTB-XL 那样"开箱即用"。它没有诊断标签、没有节律标签、没有心拍位置,连 R 峰都没标。打开 .dat 你拿到的是一串 16 位整数,得先除以头文件里的增益才知道是毫伏。所有任务都要自建标签,这是它最容易被低估的门槛。

第二条,期待它包含完整的自主神经试验组合。很多自主神经功能评估的标准流程是"静息 + 深呼吸 + 瓦氏动作 + 站立",四项各有各的指标。这份数据只有第一项。它是静息库,不是自主神经功能全套检查库。

第三条,期待它的年龄可以直接当回归目标。年龄已经被泛化成十五个组了。你可以拿组编号做有序分类,可以拿组中点做粗略回归,但不能声称自己在做"逐岁预测"——误差下限就是组宽的一半。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
年龄对心率变异性的横断面曲线 全年龄段、严格健康筛选、统一静息协议 够,这是它设计出来要回答的问题
压力反射敏感度的自发估计 心电与逐拍血压同步,可直接做序列法 够做自发 BRS,做不了激发态 BRS
心电与血压的耦合分析 两路同源、同频、同时间轴 够,且对齐质量优于多数公开库
心拍级或节律级分类 没有任何标注 不够,须全套自建
逐岁生物年龄回归 只有十五个年龄组 部分够,量化误差至少半个组宽
高龄人群的稳健建模 八十岁以上样本很少 不够,尾部统计功效低
多中心泛化验证 单一中心、单一国家 不够,只能做跨库而非跨中心
动态血压或夜间血压 只有白天平卧一段 不够,无昼夜覆盖
药物或干预效应 无用药记录、无随访 不够,连用药名单都没有

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
你要论证某个 HRV 指标随年龄下降,但手上的库年龄偏窄 提供 18 到 92 岁的连续覆盖,且健康筛选严格 先用年龄组做非参数趋势检验,再考虑拟合;不要假设线性
你在做无袖带血压算法,需要一个"有真实动脉压参考"的评测集 指端连续血压经肱动脉示波法标定,与心电同步 注意它是指端容积夹持法,不是桡动脉张力法,波形形态有差异
你想验证心电与血压的耦合指标(如相位同步) 两路信号同频同源,无需做时间对齐 先检查 NaN 缺口,剔掉重新标定的片段再算耦合
你在做生物年龄模型,缺一个心血管通路的标签源 年龄组可作为有序标签,人群健康度高、混杂少 用组中点做软标签,并在报告中说明量化误差
你只有单导联可穿戴数据,想找高采样率参考 1000 Hz 心电,可降采样到任意目标频率 降采样后重算一遍指标,确认结果对带宽不敏感
你要教心率变异性的时频分析 干净静息段足够长,适合演示 Welch 与 AR 谱 挑一段无缺口记录,先做 RR 校正再演示
你在复现某篇自主神经衰老论文 原始信号齐全,可逐段重算 先对齐论文的预处理口径,否则数字对不上

1.5 一句话判断

它不提供任何结论,只提供画曲线所需的横轴与纵轴:横轴是十五个年龄组,纵轴是两路未经加工的高采样率波形,剩下的活全是你的。

1.6 不适合谁:四条边界

不适合想要标签的人。 没有心拍、没有节律、没有诊断,连一次 QRS 检测都没做过。任何监督学习任务都要从零标注,标注成本可能高于数据本身的价值。

不适合做激发态自主神经评估。 只有平卧静息一段。倾斜试验、瓦氏动作、握力试验、深呼吸比值这些经典项目一个都没有,做不了压力反射的激发增益,也做不了体位性低血压研究。

不适合做高龄人群的精细建模。 平均年龄 32.5 岁,样本重心明显偏年轻。八十岁以上虽有覆盖,但人数少,任何按年龄分层的结果在高龄端都会宽得没有信息量。

不适合做多中心泛化。 全部来自耶拿一家机构,连设备都只有两套、都出自同一家厂商。跨中心差异在这里无法体现,用它训练出的模型换到别的中心,性能下降有多少说不清。

§2 数据构成与规格

2.1 一千一百多个二文件包加一张表

仓库的组织方式极简:每名志愿者对应两个同名文件,.hea 是纯文本头,.dat 是二进制波形;全部记录共用一张 subject-info.csv。没有目录分层,没有分组子文件夹,没有额外的标注目录。解压后所有文件平铺在同一层。

文件 数量 内容 是否必需
NNNN.hea 与记录数相同 ASCII 头:信号条数、采样率、采样点数、每路增益与基线 必需,缺了无法还原物理单位
NNNN.dat 与记录数相同 16 位无符号整数序列,按采样点交错存放各路信号 必需
subject-info.csv 1 六列人口学与记录属性,含表头共一千一百二十二行 强烈建议,缺了没有年龄与分组
项目说明页 1 HTML,非文件 协议、排除标准、年龄组定义

编号 0001 至 1121 是随机重排后的伪名,与入组顺序无关,也不含任何地理或时间信息。这一点在合并外部数据时要注意:不能假设编号相邻的人采集时间也相邻。

2.2 六列元数据与两路信号的完整字典

subject-info.csv 只有六列,是整个数据集全部的结构化信息。官方项目页给出的码表与文件实际内容一致,逐列如下。

列名 类型 取值 含义与注意点
ID 四位字符串 0001–1121 与 .hea/.dat 文件名一致,前导零有意义
Age_group 整数 1–15 年龄组编号,非年龄。1 组为 18–19 岁,中间各组跨五岁,15 组为 85–92 岁
Sex 整数 0 或 1 0 为男性,1 为女性。注意与常见编码相反
BMI 整数或小数 十几到三十几 体质指数,单位 kg/m²,由现场身高体重计测得
Length 整数 8–45 记录时长,单位分钟,取整
Device 整数 0 或 1 0 为 Task Force Monitor,1 为 CNAP 500 联合 MP150

年龄组与岁数的对应关系是这份数据里最容易被记错的一张表。它不是等宽的:首组只有两岁,末组跨八岁,中间十三组各五岁。

组号 岁数区间 组宽 备注
1 18–19 2 岁 唯一位于成年前后的窄组
2 20–24 5 岁 样本最密集的区间之一
3 25–29 5 岁 —
4 30–34 5 岁 —
5 35–39 5 岁 —
6 40–44 5 岁 —
7 45–49 5 岁 —
8 50–54 5 岁 —
9 55–59 5 岁 —
10 60–64 5 岁 —
11 65–69 5 岁 —
12 70–74 5 岁 —
13 75–79 5 岁 —
14 80–84 5 岁 —
15 85–92 8 岁 唯一的宽尾组

信号本身没有列名表,通道名写在 .hea 里。两套设备产生的通道不完全相同,这是必须提前知道的事。

通道名 出现条件 物理量 单位 采样率
ECG1 仅 TFM 记录 心电 I 导联 mV 1000 Hz
ECG2 仅 TFM 记录 心电 II 导联 mV 1000 Hz
ECG 仅 MP150 记录 心电 II 导联 mV 1000 Hz
NIBP 全部记录 指端连续动脉压 mmHg 1000 Hz(原始 100 Hz 插值)

通道命名的不一致看着是小问题,实际会绊人:写通用读取脚本时如果按名字取 ECG2,遇到 MP150 记录就会直接报通道不存在。稳妥的写法是按位置取第二路之前的全部信号,或者先读头文件再决定。

2.3 一条记录的完整解剖

以 0001 号记录为例,头文件只有四行,却把重建物理量所需的信息全写齐了。

0001 3 1000 900401
0001.dat 16 23356.8192(1481)/mV 16 0 5833 -20492 0 ECG1
0001.dat 16 50596.9407(-13216)/mV 16 0 -15951 -13487 0 ECG2
0001.dat 16 936.0181(-126035)/mmHg 16 0 -20028 -6578 0 NIBP

第一行四个数依次是记录名、信号条数、采样率、采样点数。900401 个采样点在 1000 Hz 下等于 900.4 秒,约十五分钟,与人口学表里 Length 的 15 对得上。

后三行是信号描述,字段顺序固定:文件名、存储位宽、增益(基线)/单位、位宽、零值、首采样整数、校验和、零值、信号名。换算回物理量的公式是 (原始整数 − 基线) / 增益。以第二路为例,增益 50596.9407、基线 −13216,意味着一个毫伏对应约五万个整数单位,量化分辨率约 0.02 微伏——这个精度远高于临床需要,是为后续做高频心电分析留的余量。

对应的表行同样简短:

0001,2,1,23,15,0

组号 2 表示 20–24 岁,性别 1 表示女性,BMI 23,时长 15 分钟,设备 0 表示 Task Force Monitor。把这两段文本拼起来,就构成了这份数据能告诉你的全部——没有诊断、没有用药、没有吸烟史、没有采血结果。

再看 0006 号,它是另一套设备的样本,结构差异一眼可见:

0006 2 1000 920744
0006.dat 16 27857.7948(-14289)/mv 16 0 -12240 -31852 0 ECG 
0006.dat 16 1141.6364(-89938)/mmHg 16 0 -18274 1585 0 NIBP

只有两路信号,心电通道直接叫 ECG,单位写成小写 mv。920744 个采样点折合 920.7 秒,而表里 Length 记的是 15——说明这一列是取整后的分钟数,不能反推精确时长。要精确秒数,永远从头文件的首行去算。

2.4 两套采集设备的对照

设备差异不只是通道数,它贯穿了整个测量链路。理解这张表,才能理解为什么设备编码必须进模型。

维度 TFM(编码 0) CNAP 500 联合 MP150(编码 1)
全称 CNSystems Task Force Monitor CNSystems CNAP 500 + BIOPAC MP150
电极数 4 枚,右臂、左臂、左腹、右腹 3 枚,右锁骨下、左胸第七肋间、胸骨
心电导联 I 导联与 II 导联同步,两路 仅 II 导联,一路
心电采样 1000 Hz 1000 Hz
血压通路 主机内置连续血压模块 外接监护仪,经 MP150 数字化
血压原始采样 100 Hz 100 Hz
标定方式 初始化时一次示波法肱动脉测量 同左,精度标注 ±3 mmHg
样本量 六百二十一名 五百名

两套系统都出自同一家奥地利厂商,血压都是血管卸载法——指端袖带被伺服控制维持恒定压力,光电容积描记的容积变化在恒压下正比于指动脉压力,再按初始化的肱动脉读数映射成绝对血压。方法相同,但模拟前端、滤波器、数模转换路径不同,逐拍波形的细节会有系统性差异。

2.5 与同类资源的字段差异

把它和库里其他心电、血压类资源摆在一起,字段层面的差别很直观。

资源 人数量级 每段时长 血压 标注 年龄粒度
本库 一千一百余 平均十九分钟 连续无创,逐拍 无 十五个组
Fantasia 四十 两小时 无 无 青年/老年两组
INCART 三十二 三十分钟 无 逐搏 逐岁
PTB-XL 两万余 十秒 无 诊断语句 逐岁
PulseDB 五千余 数十秒至数分钟 有创或袖带校准 分段标签 逐岁
丙泊酚自主神经库 九 分阶段 无 阶段标签 逐岁

差别集中在三处:一是它把"连续血压"当成一等公民,而不是附带;二是它的年龄是区间而非数值;三是它没有任何标注。这三点决定了它只能进"指标计算"这条流水线,进不了"波形分类"那条。

§3 它站在哪条学术脉络上

3.1 把衰老变成一个可测量的数

心血管自主神经功能这个词听着抽象,量化路径其实很收敛:看心率在时间上的波动有多大(时域),看在哪些频率上波动(频域),看血压升高时心率是否跟着降(压力反射),看血压自身的波动(血压变异性)。这四五类指标合起来,就是一份自主神经的体检报告。

这份数据的设计逻辑正是围绕这条路径。它选静息、选长段、选高采样率,都是为了把这几个量算准:静息保证不受体位与运动干扰,长段保证频域分析有足够的分辨率(十分钟以上的稳定段才能把低频段分清楚),高采样率保证 R 峰定位足够精确(RR 间期误差直接进入所有时域指标)。

3.2 为什么静息一段就够了

这句话只对一半。静息一段能回答"基线调节能力有多强",回答不了"面对扰动时调节有多快"。前者是增益,后者是动态响应。衰老同时影响两者,但影响的方式不同:增益随年龄单调下降,动态响应的退化更复杂,往往要到一定年龄才显现。

作者的取舍是明确的:宁可要一千人的基线,不要一百人的全套。这个取舍让数据在"画曲线"这件事上很强,在"刻画动态"这件事上很弱。使用前想清楚自己要的是哪一个。

3.3 它继承的测量传统

血管卸载法不是新技术,1970 年代就有了原型,1990 年代随 Finapres 系列进入研究现场。它的价值在于逐拍——袖带法几十秒才出一个数,逐拍法能看到每一搏的波动,这是压力反射与血压变异性研究的前提。代价是指端血管的收缩状态会影响读数,天冷、紧张、手没放平都会引入偏差。

心电侧的传统更老:II 导联、埃因托芬三角、银氯化银一次性电极,这套配置几十年没变过。1000 Hz 的采样率是个偏高的选择,多数 Holter 是 200 到 400 Hz。高采样率对 RR 间期精度有实际好处——R 峰定位误差与采样间隔成正比,1000 Hz 下理论分辨率是 1 毫秒,250 Hz 下是 4 毫秒。对 SDNN 这类毫秒级指标,这个差别不可忽略。

3.4 与生物年龄研究的关系

这批数据在 2022 年之后被反复用于一个具体问题:能不能用心血管指标反推年龄。逻辑很直白——如果自主神经功能随年龄稳定退化,那么从功能指标应该能估出年龄;估出来的值与真实年龄之差,就是所谓的"自主神经年龄差",可以当作加速衰老的代理指标。

研究 样本 指标数 方法 主要结论
Scientific Data 2022 数据描述 一千一百二十一 三项示例 工具箱计算 SDNN 随年龄下降,RMSSD 与减速容量在五十岁后趋平
Frontiers in Aging Neuroscience 2022 八百八十四入模,七十二肥胖者留出 二十九项 四种回归对比 高斯过程回归最优,相关系数 0.81,平均绝对误差 5.6 岁
AJP-Heart 2025 一千零六十 二十九项 高斯过程回归 提出自主神经年龄差,高风险组差值约十一年

这张表说明一件事:数据本身不含指标,但指向的指标空间是明确的、可复现的。二十九项这个数字来自下游论文,不是官方字段清单,用它当特征模板要注明出处。

§4 信号质量与协议约束

4.1 干净到什么程度

采集环境被控制得比多数临床研究严:室温 22 摄氏度、完全遮光、间接光源恒定照度、绝对安静。受试者平卧后,操作者先等几分钟让其平静,检查信号质量,电极或袖带位置不佳就重贴,确认可用才开始记录。记录全程有人值守。

这套流程换来的是低噪声的静息段。把它和 Holter 类数据比,差别是数量级的:没有走动、没有翻身、没有电极牵拉,基线漂移主要来自呼吸,肌电干扰主要来自偶尔的吞咽。对需要长稳定段的频域分析,这是实打实的优势。

4.2 协议约束带来的三个限制

第一,没有扰动。受试者被要求避免移动、打哈欠、咳嗽,也就意味着没有体位改变、没有等长握力、没有节律呼吸。经典的压力反射敏感度测定里,最常用的两种激发是药物法(静脉给苯肾上腺素或硝普钠)与倾斜法,这里都做不了。能做的只有自发序列法——从自然的血压波动里挑出"血压升、RR 延长"的连续三拍以上序列,用斜率当增益估计。自发法的数值通常低于激发法,跨研究比较时口径必须统一。

第二,没有昼夜。所有记录都在白天实验室完成,最长四十五分钟。夜间血压下降、清晨血压 surge 这些现象完全看不到,做昼夜节律或动态血压研究的人不用考虑它。

第三,没有状态标记。记录中不标注受试者何时入睡、何时深呼吸、何时说话。虽然协议要求安静平卧,实际记录里仍会有零星的动作与吞咽,而没有任何事件标记可以定位它们。做伪迹剔除只能靠信号本身。

4.3 案例:0001 与 0006 这对镜像记录

把 0001 与 0006 放在一起看,能一次性看清这份数据的两副面孔。两段都是十五分钟、都是女性、BMI 都在二十出头,唯一的大差别是设备:0001 走 TFM,两路心电加一路血压;0006 走 MP150,一路心电加一路血压。

对照项 0001 0006
年龄组 2(20–24 岁) 4(30–34 岁)
性别 1(女) 1(女)
BMI 23 21
时长 15 分钟 15 分钟(表内取整)
设备 0(TFM) 1(CNAP 500 + MP150)
信号条数 3 2
采样点数 900401 920744
心电通道名 ECG1、ECG2 ECG
心电增益(单位/毫伏) 约 2.3 万与 5.1 万 约 2.8 万
血压增益(单位/mmHg) 936 1142

§4.3 的案例最实用的地方在于它暴露了一个常被忽略的事实:同一份数据里,心电的量化分辨率可以差一倍以上。0001 的 II 导联每毫伏约五万一千个单位,0006 只有约两万八千个。对形态学分析这无关紧要,但对需要亚毫秒级 R 峰定位的研究,两组的等效噪声底不同,混在一起做统计时应当把设备当协变量。

§4.3 的案例还说明时长字段不可尽信。0001 的 900401 点正好是 15.0 分钟,0006 的 920744 点是 15.3 分钟,两者在表里都记 15。做按秒计的负荷统计(比如"每分钟早搏数")时,用表里的整分钟会带入百分之二左右的误差,用头文件点数才准。

4.4 缺失与断点

官方明确说明了一种缺失:记录过程中系统会为重新标定而再次测量肱动脉血压,这段时间连续血压信号中断,缺失点被置为 NaN。也就是说,NIBP 通道里存在成段的全 NaN 区间,长度从几秒到十几秒不等。

这个设计对分析的影响分两种。做全程平均血压,NaN 段直接忽略即可,影响很小;做血压变异性或压力反射,NaN 段必须整段剔除,否则插值会凭空造出一段平直的假信号,把变异性压低。更稳妥的做法是把 NaN 段当作断点,切成若干连续子段,每段单独算再按长度加权合并。

人口学侧的缺失以 NaN 填充。官方论文的统计表给出了缺失计数:年龄缺 25 例,性别缺 2 例,BMI 无缺失。这些数字来自论文表格,不是从数据里数出来的。

4.5 两套设备能不能混

能混,但要分层。设备差异体现在至少三个层面:心电导联数(两路对一路)、心电增益(相差一倍)、血压模拟前端(内置模块对外接监护仪)。前两个影响特征提取,第三个影响血压波形形态。

最稳的做法是把 Device 当成一个必进的协变量。做组间比较时按设备分层;做回归时把设备作为哑变量;做机器学习时把它当特征——虽然它在生理上没有意义,但它在统计上携带了系统性偏移的信息,丢掉它等于把偏移塞进残差。

一个反向的诱惑是"只用一套设备的数据求干净"。这在方法上没错,但会砍掉近一半样本,而且被砍掉的那一半不是随机的一半——两套设备的使用时段不同,可能与招募年份相关。真要这么做,得先验证设备与年龄组之间没有系统性关联。

§5 从波形到指标:一条完整的取数路径

5.1 先把目录拉下来

全量 5.9 GB,整包 ZIP 5.2 GB。只想看结构的话,先取头文件和那张表就够了,几百 KB 的事。

#-- 建立工作目录
mkdir -p aging/data && cd aging/data

#-- 只取元数据表与两条样例记录的头文件,约几 KB
BASE=https://physionet.org/files/autonomic-aging-cardiovascular/1.0.0
curl -sL "$BASE/subject-info.csv" -o subject-info.csv
curl -sL "$BASE/0001.hea" -o 0001.hea
curl -sL "$BASE/0006.hea" -o 0006.hea

#-- 确认行数与列名
head -1 subject-info.csv
wc -l subject-info.csv

#-- 需要全量时再整包下载
curl -sL "https://physionet.org/content/autonomic-aging-cardiovascular/get-zip/1.0.0/" -o aging.zip

如果机器上装了 AWS 命令行工具,走开放存储桶通常比 HTTP 稳:

#-- 无需凭证,直接从开放桶同步
aws s3 sync --no-sign-request \
  s3://physionet-open/autonomic-aging-cardiovascular/1.0.0/ ./aging/

5.2 读一段波形

WFDB 官方 Python 包能直接读,也能直接按项目名从云端取,不必先下全量。

#-- 依赖:pip install wfdb numpy
import wfdb
import numpy as np

#-- 直接按项目名远程读取,只拉这一段的 .hea 与 .dat
rec = wfdb.rdrecord('0001', pn_dir='autonomic-aging-cardiovascular/1.0.0')

print(rec.fs)                 # 1000
print(rec.sig_name)           # ['ECG1', 'ECG2', 'NIBP']
print(rec.units)              # ['mV', 'mV', 'mmHg']
print(rec.p_signal.shape)     # (900401, 3),已按增益换算成物理量

ecg = rec.p_signal[:, rec.sig_name.index('ECG2')]
nibp = rec.p_signal[:, rec.sig_name.index('NIBP')]

#-- 统计 NaN 占比,定位血压断点
nan_ratio = float(np.isnan(nibp).mean())
print(round(nan_ratio, 4))

两点要留意。第一,p_signal 已经把整数按增益与基线换算成毫伏与毫米汞柱,别再做一次换算,否则数值会离谱。第二,sig_name 在不同记录里不一样,TFM 记录有 ECG2,MP150 记录只有 ECG,写死会崩。

5.3 把表读进来并对上号

#-- 读人口学表,注意 ID 是字符串,前导零不能丢
import pandas as pd

info = pd.read_csv('subject-info.csv', dtype={'ID': str})
info = info.set_index('ID')

print(info.columns.tolist())      # ['Age_group', 'Sex', 'BMI', 'Length', 'Device']
print(info.shape)                 # (1121, 5)

#-- 年龄组换算成区间中点,供粗略回归使用
edges = {1: (18, 19)}
for g in range(2, 15):
    lo = 20 + (g - 2) * 5
    edges[g] = (lo, lo + 4)
edges[15] = (85, 92)

info['age_mid'] = info['Age_group'].map(lambda g: sum(edges[g]) / 2)
print(info['age_mid'].describe().round(2))

组中点是近似,不是还原。18–19 岁组的真正中点 18.5,把 18 和 19 的人各算一半,误差半岁;末组 85–92 的中点 88.5,误差可达四岁。做逐岁回归时,这个误差会直接变成标签噪声,把模型的决定系数压下来。

5.4 自己找 R 峰

数据没有心拍位置,第一步得自己检测。1000 Hz 下用 Pan-Tompkins 类检测器足够稳,PhysioNet 心血管信号工具箱里的 jqrs 是作者自己在技术验证时用的实现。

#-- 用 scipy 做一个够用的 R 峰检测,仅供流程演示
import numpy as np
from scipy.signal import butter, filtfilt, find_peaks

def detect_r(ecg, fs=1000):
    b, a = butter(3, [5, 30], btype='band', fs=fs)
    x = filtfilt(b, a, np.nan_to_num(ecg))
    #-- 以 0.3 秒为最小间距,避免把 T 波当 R 波
    peaks, _ = find_peaks(x, distance=int(0.3 * fs), height=np.percentile(x, 75))
    return peaks

rr = np.diff(detect_r(ecg)) / 1000.0   # 秒
print(len(rr), round(float(rr.mean()), 3))

这段代码能跑,但不要把它当最终方案。简易阈值法在基线漂移明显的段会漏检,漏一拍会让 RR 序列出现一个双倍长的间期,直接把 SDNN 拉高。生产流程里要做异位搏动剔除,常用做法是把偏离局部中位数超过一定倍数的间期标记出来,再用插值或直接删除。

5.5 时域与频域指标

#-- 时域:SDNN 与 RMSSD
sdnn = float(np.std(rr, ddof=1))
rmssd = float(np.sqrt(np.mean(np.diff(rr) ** 2)))
print(round(sdnn, 2), round(rmssd, 2))

#-- 频域:把 RR 按时间戳重采样成等间隔序列再做 Welch
from scipy.signal import welch
from scipy.interpolate import interp1d

t_rr = np.cumsum(rr)
f_interp = interp1d(t_rr, rr, kind='cubic', fill_value='extrapolate')
t_uni = np.arange(t_rr[0], t_rr[-1], 0.25)
rr_uni = f_interp(t_uni)

f, pxx = welch(rr_uni, fs=4.0, nperseg=256)
lf = pxx[(f >= 0.04) & (f < 0.15)].sum()
hf = pxx[(f >= 0.15) & (f < 0.40)].sum()
print(round(float(lf / hf), 3))       # LF/HF 比

LF/HF 这个比值的解释在文献里一直有争议,用它的时候最好同时报告 LF 与 HF 的绝对值,不要只给一个比值。另外频段边界不统一:有人把 LF 下界设在 0.04 Hz,有人设在 0.03 Hz,跨研究比较前先对齐。

5.6 压力反射敏感度

自发序列法的思路简单:找连续三拍以上,血压持续升(或降)且 RR 持续延长(或缩短)的片段,对每段做线性回归,斜率即该段的 BRS,单位毫秒每毫米汞柱。全部合格段的斜率取中位数,就是这一段的 BRS 估计。

#-- 序列法估计 BRS:扫描连续三拍以上的同向片段
import numpy as np

def brs_sequence(sbp, rr, min_len=3, min_slope=0.0):
    slopes = []
    n = min(len(sbp), len(rr))
    i = 0
    while i < n - min_len:
        for L in range(min_len, 9):
            if i + L >= n:
                break
            d_bp = np.diff(sbp[i:i + L + 1])
            d_rr = np.diff(rr[i:i + L + 1])
            up = (d_bp > 0).all() and (d_rr > 0).all()
            dn = (d_bp < 0).all() and (d_rr < 0).all()
            if not (up or dn):
                break
            k = np.polyfit(sbp[i:i + L + 1], rr[i:i + L + 1], 1)[0]
            if k > min_slope:
                slopes.append(k)
        i += 1
    return float(np.median(slopes)) if slopes else float('nan')

print(brs_sequence(nibp_sys, rr))

这段代码演示的是骨架,三点必须补齐才能用于研究:一是 nibp_sys 要自己从连续血压波形里取每一搏的收缩压,需要先做逐拍分割;二是要设置最小血压变化幅度(常见阈值是 1 mmHg)过滤噪声触发的假序列;三是要把 RR 与收缩压按同一搏对齐,早一拍晚一拍都会让斜率符号翻转。

还有一层精度问题藏在前面。§4.3 的案例里两段记录的心电增益相差近一倍,等效的量化噪声底不同,R 峰时刻的抖动幅度也不同。BRS 是斜率,斜率的方差对自变量的测量误差很敏感——自变量是收缩压,因变量是 RR,两者都有误差时斜率会被系统性地压低,这在统计上叫回归稀释。序列法里的收缩压来自指端波形,本身带有血管卸载法的固有偏差,再叠上 R 峰抖动,单段 BRS 的不确定度可以相当大。所以单段 BRS 只适合做组内比较,跨组比较必须用同一套预处理与同一批参数,否则组间差异里会混进流水线差异。

5.7 五个最容易出错的地方

位置 错误写法 后果 正确做法
单位换算 对 p_signal 再除一次增益 数值小几个数量级 p_signal 已是物理量,直接用
通道取值 写死 ECG2 MP150 记录直接报错 按设备或按 sig_name 动态取
时长统计 用表里 Length 的整分钟 百分之二左右的负荷误差 用头文件采样点数除以采样率
血压缺口 对 NaN 直接插值 造出平直假信号,压低变异性 按 NaN 段切分,分段计算
年龄回归 把组号当逐岁年龄 标签带半组宽的量化误差 用组中点并声明误差,或做有序分类

§6 与库内其他记录的关系

6.1 关系图谱

在心电与血压这片区域里,它的位置可以用"是否有连续血压"与"年龄跨度"两个轴定位。

库内资源 连续血压 年龄跨度 与本库的关系
Fantasia 无 青年与老年两组 最近的邻居:同为健康静息 HRV,但只有四十人、两小时、无血压
INCART 无 18–80 岁 互补:它有逐搏标注与十二导联,本库有血压与全年龄段
PTB-XL 无 逐岁 互补:它规模大、有诊断标签,但每段十秒
PulseDB 有,含动脉压参考 逐岁 部分重叠:它为无袖带血压算法设计,本库为自主神经设计
CardioWave-Portable 有,袖带校准 逐岁 部分重叠:可穿戴场景,本库是实验室高保真
丙泊酚自主神经库 无 成人 主题最近:同为自主神经动态,但只有九人、有药物干预
WESAD 无 青年 场景不同:可穿戴压力检测,非衰老主题

和 Fantasia 的关系最值得展开。两者都是"健康人静息长段心电",都被用来研究心率变异性的年龄依赖,但设计目标不同:Fantasia 要的是分形动力学,两小时的超长段、四十人、青年与老年各二十,适合做长程相关分析;这份库要的是横断面覆盖,一千余人、十五个年龄组,适合做趋势估计。做分形指数用 Fantasia,画年龄曲线用本库。

6.2 检索路径

你要找的东西 检索词 会落到哪里
健康人 HRV 参考 healthy, normal sinus rhythm, HRV Fantasia、本库
连续无创血压 continuous non-invasive blood pressure, CNAP, vascular unloading 本库、PulseDB
压力反射 baroreflex, baroreflex sensitivity, BRS 本库(PhysioNet 主题标签含此项)
生物年龄与衰老 biological age, aging, autonomic age 本库及三篇下游论文
逐搏标注 beat annotation, atr INCART、MIT-BIH 系列
无袖带血压算法 cuffless blood pressure PulseDB、CardioWave-Portable
体位与激发试验 tilt, head-up tilt, Valsalva 本库不覆盖,需另找倾斜试验库

6.3 与其他库的分工判据

任务 主力该用什么 本库的位置 原因
HRV 随年龄的趋势估计 本库 主力 全年龄段加严格健康筛选,别处难找
HRV 的分形与长程相关 Fantasia 辅助 两小时段才够算长程指数
心拍分类与节律检测 MIT-BIH 系列、INCART 不适用 无标注
无袖带血压回归 PulseDB、CardioWave 可当外部集 有真实血压参考,但设备固定
压力反射的激发态测定 倾斜或药物试验库 不适用 只有静息
生物年龄建模 本库 主力 二十九项指标的原始素材齐全
可穿戴算法验证 WESAD 类 不适用 实验室高保真,与腕式设备域差大
信号质量算法 BUT QDB 类 部分可用 噪声类型单一,缺真实劣质样本

这张表最容易被看错的是第二行与第六行。分形与长程相关看起来只是"更复杂的 HRV",实际上它对段长的要求是硬约束:去趋势波动分析要看到跨多个时间尺度的幂律,最短也得几十分钟,十五分钟往往只能覆盖两三个尺度,指数估出来很不稳。同样,激发态的压力反射不是"更准的 BRS",而是另一个生理量——它测的是闭环增益在扰动下的表现,与静息自发的斜率没有换算关系,用静息数据去替代激发试验,得到的结论方向可能一致、数值却无法对比。

反过来,第一行与第六行的不可替代性也是真的。全年龄段加严格健康筛选这个组合,在公开库里极少见;二十九项指标的原始素材齐全,意味着你可以自己定义特征集,而不是被动接受别人算好的那一套。这两点是它区别于"又一个心电库"的根本。

一个实际的组合策略是把它当"标尺"而不是"粮仓":用大库做训练,用它的年龄曲线校准模型的输出,看模型在某一年龄段是否系统偏离。这种用法对样本量要求不高,对人群纯度要求很高,正好对上它的长处。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

先纠正一个容易发生的误判:不要用"标注完整度"这把尺子量它。这份数据从设计上就没有标注,也不打算有。拿"没有心拍标注所以质量差"来评价,等于拿鱼会不会爬树来评价鱼。

正确的读法是把它当成一份原始测量记录来评:环境控制得怎么样、设备标定得怎么样、人群筛得怎么样、区间给得够不够。这四个维度上它的表现都在中上,但每一条都带着明确的、可枚举的代价——而这些代价恰恰决定了它不能用在哪些任务上。

7.1 DAIMS 五维评分

按 DAIMS 常用的五个维度打分,每项 1 到 5 分,针对"作为心血管自主神经研究数据"这个用途。

维度 分数 理由
数据规模 3 一千一百余人,在严格健康筛选条件下不算少,但训练深度学习仍偏小
标注质量 1 无任何标注,这是设计选择而非缺陷,但评分只能按标注维度给
任务适配 4 自主神经与衰老主题上几乎无可替代,其他主题上用途有限
文档完整 4 协议、排除标准、码表、匿名化方法都写清楚了,缺的是派生指标口径
可获取性 5 免注册、ODC-ODbL、HTTP 与开放桶双通道

合计十七分(满分二十五)。分数结构很清楚:可获取性与任务适配拉高,标注一项拉到底。这不是一份"通用"数据,是一份"专用"数据。

7.2 信号质量的两层判断

第一层是采集层面。室温、照度、噪声、体位、电极型号、标定方式都在论文里写死,属于可复现的实验室条件。这一层的质量明显高于临床随手记录。

第二层是可用性层面。官方没有给出逐段的信噪比、伪迹比例、可分析时长占比。也就是说,哪一段能用、哪一段需要剔除,得自己判断。这对批量处理是个实际负担:一千多段,人工看不现实,必须写自动质控。

质控项 官方是否提供 自建方法 阈值建议
心电信噪比 否 带通后比较 QRS 频段与基线频段能量 按分位数剔除尾部
R 峰漏检率 否 用两个检测器交叉验证,比对不一致处 不一致率高于百分之五则人工复核
血压缺口长度 否 统计 NaN 连续段长度 超过十秒的段整段剔除
血压异常值 否 收缩压超出 70–200 mmHg 视为可疑 结合相邻拍判断
全程漂移 否 分段均值的一阶差分 突跳超过 10 mmHg 复查

7.3 已知的、可枚举的偏差

偏差 表现 对结论的影响
年龄重心偏轻 平均 32.5 岁,青年占多数 曲线在高龄端不稳,拟合斜率对末端点敏感
单一中心 全部来自耶拿 人群遗传背景、饮食、体力活动模式单一
招募来源混合 社区招募加医院职工 医院职工的健康素养与作息可能不同于一般人群
健康筛选偏严 排除任何可能影响心血管功能的疾病与用药 得到的是"理想健康"人群,与真实老年人群差距大
设备混用 两套系统、两种导联配置 设备效应与年龄效应可能部分混淆
静息单状态 只有平卧 无法外推到日常活动状态
年龄区间化 十五个组 逐岁回归的标签噪声下限为半个组宽
无随访 每人一次 无法区分队列效应与年龄效应

最后一条值得多说一句。横断面设计的固有问题是:七十岁组的人和二十岁组的人,不只是年龄不同,他们出生的年代也不同。营养、医疗、职业暴露、体力活动模式在两代人之间差异很大。把这些差异全部归因于"衰老",是横断面研究无法完全排除的系统性误差。这份数据没有 longitudinal 设计,也就无法自证这一点。

7.4 外部验证矩阵

这份数据在文献里的角色,可以从三篇核心论文看出轮廓。

验证角色 做法 讲得通的地方 风险
指标—年龄关系的基准 用 SDNN、RMSSD、减速容量对年龄做趋势 信号干净、年龄跨度大,趋势稳健 只有三项示例,不能代表全部指标
生物年龄模型的训练集 二十九项指标加高斯过程回归 健康人群混杂少,模型学的是生理而非病理 高龄样本少,模型在高龄端外推能力弱
肥胖与风险分层的对照 留出肥胖组做外部验证 有 BMI 字段,可直接分层 BMI 是整数或一位小数,分层边界敏感
算法复现的公共底料 直接下载原始波形重算 免注册、格式标准、工具链成熟 预处理口径不统一会导致数字对不上

第二行那条尤其要注意。论文报告的平均绝对误差是 5.6 岁,这个数字在健康人群里算出,换到有合并症的人群会明显变大。把它当成"模型精度"引用,会高估实际可用性。

7.5 它为何能持续:稀缺的是入组条件,不是数据量

一千多段十五分钟的记录,存储上只有几个 GB,任何一家有科研经费的实验室都攒得出。真正稀缺的是"十年、全年龄段、严格健康筛选、心电与逐拍血压同步"这个组合。要复现它,得有一间恒温遮光的自主神经实验室、一套指端连续血压设备、一套能坚持十年的招募流程,还要有伦理批件允许把原始波形公开。

这套前提在全世界并不多。所以它不会因为新库出现而被替代——新库要么规模更大但健康筛选松,要么筛选严但年龄集中,要么有血压但没有十年跨度。只要这个组合仍然稀缺,它就会持续被引用。

§8 生态位与历史

8.1 十年采集,一次发布

时间线很清楚:2010 年开始入组,持续到 2020 年;2021 年 7 月以版本 1.0.0 发布到 PhysioNet;2022 年 3 月在 Scientific Data 发表数据描述论文。发布后没有再出过新版本,最新 DOI 指向的仍是同一批文件。

时间 事件
2010 开始招募与采集
2020 采集结束
2021-06-14 数据文件最后修改日期(据文件列表)
2021-07-30 PhysioNet 发布 v1.0.0
2022-02-10 数据描述论文接收
2022-03-23 论文正式发表

这个节奏说明它是"先攒后发"型:数据在抽屉里放了十年,等样本量与年龄覆盖都够了才整理公开。这和很多"边采边发"的库不同,好处是一次性给全,坏处是没有增量版本,后续修订只能等大版本。

8.2 论文与数据的分工

数据描述论文承担了三件数据本身不做的活:定义排除标准、报告人口学统计、做技术验证。技术验证用的是三个指标——SDNN、RMSSD、减速容量,全部用 PhysioNet 心血管信号工具箱里的公开函数算出,代码在论文的可用性声明里逐一点名。

这带来一个实用的推论:如果你想复现论文里的图,就得用同一套工具链(jqrs 做 QRS 检测、ada_f 做自适应滤波、runrmssd 与 prsa 做指标)。换成自己写的检测器,趋势方向不会变,但绝对数值会有系统偏差——尤其是减速容量,它对相位重建的细节很敏感。

8.3 生态位:横断面的标尺

角色 纵向队列 本库这类横断面
回答的问题 同一个人的功能怎么变 不同年龄的人功能差多少
主要偏倚 失访、练习效应 队列效应、选择性存活
样本成本 极高,要等很多年 中等,一次采完
适合的建模 混合效应、生存分析 趋势拟合、年龄预测

它坐在右边这一列。用它做纵向问题会立刻碰壁——每人只有一次测量,连个体内的重复都没有。

8.4 谁在用它,用来做什么

从公开文献看,使用者集中在三类。做自主神经与衰老机制的研究组,把它当横断面基准,验证某个指标是否真随年龄变化。做生物年龄与风险分层的建模组,把它当训练底料,因为健康人群的标签噪声小。做信号处理方法的研究组,把它当高采样率、双模态的测试床,验证新算法在心电与血压上的表现。

第三类最少但很有意思:因为心电与血压严格同步、采样率高、噪声低,它很适合验证跨模态方法,比如心电与血压的相位耦合、逐拍传递函数估计。这类方法在噪声大的数据上根本跑不通,必须先有一个干净的实验台。

§9 使用指引

9.1 三种角色的路径

角色 第一天 第一周 注意事项
生理信号研究者 读项目页与论文方法,取两条样例记录跑通读取 建质控流水线,算出二十六项指标的基线分布 先定预处理口径再算,否则数字不可比
算法工程师 确认设备编码与通道名的对应关系 做一个年龄组分类基线,记录混淆矩阵 设备效应必须显式建模
教学与临床工程 用一段干净记录演示 RR 序列与功率谱 做年龄分组的对照图,讲清趋势与个体差异 强调组中点是近似,不要当精确年龄

9.2 一条最短的可用流程

#-- 1. 取元数据
curl -sL https://physionet.org/files/autonomic-aging-cardiovascular/1.0.0/subject-info.csv -o subject-info.csv

#-- 2. 取若干条记录的头文件,确认通道配置
for r in 0001 0002 0006; do
  curl -sL "https://physionet.org/files/autonomic-aging-cardiovascular/1.0.0/${r}.hea" -o "${r}.hea"
  head -1 "${r}.hea"
done

#-- 3. 按设备分组,统计两组的通道数
awk -F, 'NR>1 {print $6}' subject-info.csv | sort | uniq -c

#-- 4. 按年龄组统计人数,确认高龄段是否够用
awk -F, 'NR>1 {print $2}' subject-info.csv | sort -n | uniq -c

第 4 步的输出会直接告诉你高龄段能不能支撑分层分析。这是使用这份数据前最该先看的一张表,比任何文档都直观。

9.3 引用方式

官方给出的引用格式是作者加年份加版本号,落到具体写法:

场景 引用对象 标识
引用数据本身 Schumann 与 Bär,2021,版本 1.0.0 DOI 10.13026/2hsy-t491
引用方法学描述 Scientific Data 论文,2022 DOI 10.1038/s41597-022-01202-y
引用平台 PhysioNet 平台论文 RRID SCR_007345
版本更新后的引用 最新 DOI 10.13026/mwad-va85

规范做法是两个都引:数据给 DOI,方法给论文。只引论文不引数据,使用者找不到原始文件;只引数据不引论文,排除标准与协议细节无从查证。

§10 AI 使用声明

项目 说明
数据来源 PhysioNet 项目页与 Scientific Data 论文,均为公开可访问文本
采集方式 人工阅读官方页面与论文全文,未使用自动抓取工具做批量统计
数字口径 只采用官方公布的规模、结构、边界三类数字,未自行计算分布
派生数字 凡由官方数字推算者,文中均标注为折算
未核实项 逐段信噪比、可分析时长占比、各年龄组确切人数,官方未公布
内容生成 正文由 AI 辅助撰写,事实核对以官方文本为准
局限声明 本页不构成对数据质量的背书,使用前请自行验证
更新策略 官方出新版本时,本页需重新核对版本号与文件体量

常见误读(避坑清单)

常见说法 实际 证据
这是带标注的自主神经数据库 没有任何标注,连 R 峰都没有 项目页文件列表只有 .hea 与 .dat,无 .atr 或注释目录
年龄是精确岁数 泛化为十五个组 项目页年龄组定义与 ARX 匿名化说明
里面有 HRV 和 BRS 的算好结果 只有原始波形,指标需自算 论文中 SDNN 等是技术验证示例,不在数据文件内
时长上限四十五分钟 论文写的是 8 到 35 分钟 项目页与论文两个口径并存,差额官方未说明
每人有多次随访 每人一次,横断面 文件编号与 ID 一一对应,无重复 ID
可以做倾斜试验分析 全部平卧静息,无体位改变 方法部分只描述平卧一段
血压是袖带间断测量 指端连续逐拍,经肱动脉标定 血管卸载法描述与 100 Hz 原始采样
两套设备数据可以无差别混用 导联数、增益、血压通路都不同 头文件中 TFM 三通道、MP150 两通道
采样率 250 Hz 级 心电 1000 Hz,血压插值后同为 1000 Hz 头文件首行与论文重采样说明
这是普通人群样本 严格健康筛选后的理想健康人群 排除标准:任何影响心血管功能的疾病与用药

FAQ

Q1:它的年龄是精确值还是区间?
是区间。官方为满足匿名化要求,用 ARX 工具把年龄泛化成十五个组,首组 18–19 岁,中间十三组各跨五岁,末组 85–92 岁。做回归时应把组编号当区间中点或有序变量,不要当逐岁年龄。

Q2:为什么官方页面和论文写的时长上限不一样?
项目页写平均 19 分钟、区间 8 到 45 分钟;Scientific Data 论文写 8 到 35 分钟。两个口径都出自官方文本,差额构成官方未说明。引用时以项目页为准,并注明另一口径。

Q3:数据里带 HRV 和压力反射指标吗?
不带。仓库只有原始波形与一张六列的表。论文里的 SDNN、RMSSD、减速容量是作者用公开工具箱算出的验证示例,属于论文结果。二十九项指标出现在后续下游研究里,不是官方字段。

Q4:能做倾斜试验或深呼吸试验的分析吗?
不能。全部记录都是平卧静息,受试者被要求避免移动、打哈欠与咳嗽,没有体位改变也没有节律呼吸指令。压力反射只能从自发波动里用序列法估计。

Q5:两套设备的数据可以直接混吗?
可以混,但必须把设备编码作为特征或分层变量。TFM 记两个心电导联、走院内模块;CNAP 500 联合 MP150 只记一个 II 导联、走外接监护仪。两组血压通路与滤波器不同。

Q6:为什么女性比男性多这么多?
官方论文的统计表给出女性 670、男性 433,性别缺失 2 例。招募来源是社区加医院职工,医院职工中女性比例偏高,这是最可能的原因,但官方未就此做说明。

Q7:八百八十四和一千零六十这两个数是怎么回事?
它们来自不同的下游研究。2022 年的建模论文报告八百八十四份数据满足入模条件,另有七十二名肥胖者被留作评估;2025 年的论文报告一千零六十份。都是研究者的筛选结果,不是数据集的记录总数。

Q8:血压信号里为什么有整段空缺?
记录过程中系统会为重新标定再测一次肱动脉血压,这段时间连续血压中断,缺失点置为 NaN。处理时要按 NaN 段切分,不要直接插值。

Q9:一千赫兹的采样率有必要吗?
对 RR 间期精度有必要。R 峰定位误差与采样间隔成正比,1000 Hz 下理论分辨率 1 毫秒,250 Hz 下是 4 毫秒。SDNN 这类指标的差异常在毫秒级,这个精度不是浪费。

Q10:能用来训练心电分类模型吗?
技术上可以,但没有标签。全部样本都是健康人静息心电,没有心律失常、没有诊断,做分类只能做自监督预训练或无监督表征学习。要监督分类,得另找带标注的库。

Q11:这份数据会更新吗?
自 2021 年 7 月发布 1.0.0 以来没有新版本。采集已于 2020 年结束,官方未公布扩样计划。最新 DOI 指向同一批文件,说明当前没有增量。

Q12:只想要一小部分数据,必须下 5 GB 吗?
不必。WFDB 的 Python 包支持按项目名远程读取单条记录,只拉那一条的 .hea 与 .dat。样本文件从几 MB 到十几 MB 不等,取决于时长与通道数。

术语表

术语 英文 释义
自主神经 autonomic nervous system 不受意识控制的神经系统分支,调节心率、血压、消化等
心率变异性 heart rate variability, HRV 相邻心拍间期长短的波动程度,反映自主神经调节能力
SDNN standard deviation of NN intervals 全部正常心拍间期的标准差,衡量整体变异性
RMSSD root mean square of successive differences 相邻间期差值的均方根,主要反映副交感活动
减速容量 deceleration capacity, DC 基于相位重建的减速事件指标,与迷走张力相关
压力反射 baroreflex 血压升高时反射性减慢心率的负反馈环路
压力反射敏感度 baroreflex sensitivity, BRS 血压每变化 1 mmHg 对应的心拍间期变化量,单位毫秒每毫米汞柱
序列法 sequence method 从自发血压与间期波动中挑同向连续片段估计 BRS
血管卸载法 vascular unloading technique 指端袖带伺服恒压,由容积变化推算逐拍动脉压
连续无创血压 continuous non-invasive blood pressure 逐拍输出的动脉压波形,区别于袖带间断测量
光电容积描记 photoplethysmography, PPG 用光吸收变化记录血容积的方法
示波法 oscillometry 袖带充放气测肱动脉压的常规方法,用于本库的初始标定
埃因托芬三角 Einthoven triangle 双上肢加左下肢构成的标准心电导联几何
II 导联 lead II 右臂至左腿方向的电位差,心律判读最常用
低频 low frequency, LF 0.04 至 0.15 Hz 频段,混合交感和副交感成分
高频 high frequency, HF 0.15 至 0.40 Hz 频段,主要反映呼吸性窦性心律不齐
衰老 aging 随年龄累积的功能性下降,本库关注其中的心血管调节部分
生物年龄 biological age 由生理指标反推的年龄估计,与实际年龄之差可作风险代理
队列效应 cohort effect 不同出生年代的人在营养、医疗、环境上的系统差异
横断面设计 cross-sectional design 同一时点测不同个体,用组间差异代替时间变化
匿名化 anonymization 去除或泛化可识别个体身份的信息
k 匿名 k-anonymity 保证任一记录至少与 k−1 条其他记录不可区分
WFDB Waveform Database PhysioNet 沿用的生理信号存储格式
增益与基线 gain and baseline 头文件中把整数还原成物理量的两个参数
NaN not a number 缺失值标记,本库用于血压断点与缺失的人口学项

附录 A:核心数字核对表

项 值 来源 来源层级
受试者数 1,121 项目页摘要与论文摘要 官方页面
年龄均值 32.5 ± 14.7 岁 论文表 1 论文全文
年龄缺失 25 例 论文表 1 论文全文
性别构成 女 670、男 433、缺 2 论文表 1 论文全文
BMI 均值 23.7 ± 4.5 论文表 1 论文全文
年龄组数 15 项目页 官方页面
年龄跨度 18–92 岁 项目页组定义 官方页面
心电采样率 1000 Hz 项目页与头文件 官方页面
血压原始采样率 100 Hz 论文方法 论文全文
血压存档采样率 1000 Hz(插值) 论文数据记录节 论文全文
单段时长(口径一) 平均 19 分钟,8–45 分钟 项目页 官方页面
单段时长(口径二) 8–35 分钟 论文方法 论文全文
TFM 样本 621 论文表 1 论文全文
MP150 样本 500 论文表 1 论文全文
解压总体量 5.9 GB 项目页文件汇总 官方页面
ZIP 体量 5.2 GB 项目页 官方页面
采集年份 2010–2020 论文方法 论文全文
许可 ODC-ODbL 1.0 项目页 官方页面
DOI 10.13026/2hsy-t491 项目页 官方页面

附录 B:数字的来源分层

层级 含义 本文涉及的数字
官方页面 PhysioNet 项目页直接写明 受试者数、年龄组定义、时长两口径之一、采样率、体量、许可、DOI
论文摘要与全文 Scientific Data 论文写明 年龄均值与缺失、性别构成、BMI、两套设备样本量、采集年份、血压重采样、排除标准
下游研究 其他已发表论文报告 二十九项指标、八百八十四与一千零六十的筛选样本、5.6 岁误差
官方未公布 页面与论文都没给 各年龄组确切人数、总时长、逐段信噪比、可分析时长占比、男女在各组内的分布

第四行是使用前必须自己补的功课。官方不给分布,意味着任何按年龄分层的分析都要先做一次样本量检查,否则会出现某组只有个位数、统计量剧烈波动的情形。

附录 C:完整参考文献

序号 文献 用途
1 Schumann A, Bär K. Autonomic Aging(版本 1.0.0). PhysioNet, 2021. DOI 10.13026/2hsy-t491 数据本体
2 Schumann A, Bär K. Autonomic aging — A dataset to quantify changes of cardiovascular autonomic function during healthy aging. Scientific Data, 2022. DOI 10.1038/s41597-022-01202-y 方法、人群、技术验证
3 同组作者. Using machine learning to estimate the calendar age based on autonomic cardiovascular function. Frontiers in Aging Neuroscience, 2022. DOI 10.3389/fnagi.2022.899249 二十九项指标与建模基线
4 同组作者. Quantifying cardiovascular autonomic aging with machine learning. AJP-Heart and Circulatory Physiology, 2025. DOI 10.1152/ajpheart.00693.2025 自主神经年龄差
5 Fortin J 等. Continuous non-invasive blood pressure monitoring using concentrically interlocking control loops. Comput Biol Med, 2006 血管卸载法原理
6 Prasser F 等. Flexible data anonymization using ARX. J Software Pract Exper, 2020 匿名化工具
7 Goldberger A 等. PhysioBank, PhysioToolkit, and PhysioNet. Circulation, 2000 平台与格式
8 Vest A 等. An open source benchmark for cardiovascular signal processing(PhysioNet 心血管信号工具箱) 技术验证所用工具链

附录 D:任务代码与复现清单

步骤 命令或动作 预期产出
取表 curl 下载 subject-info.csv 六列、一千一百二十二行
验通道 读若干 .hea 首行 确认三通道与两通道两种配置
分组 按 Device 分列 两组样本量与通道数
分层 按 Age_group 计数 十五行的人数表,用来判断高龄段是否够用
质控 统计 NaN 段与 R 峰一致性 可分析片段清单
指标 时域、频域、BRS 三套 逐段指标表
复现 对齐论文的工具链 SDNN、RMSSD、DC 的对照值

附录 E:如果只记五件事

序号 要点
1 一千一百余名严格筛选的健康志愿者,18 到 92 岁,2010 到 2020 年采集于耶拿
2 每段是平卧静息的心电加连续逐拍血压,1000 Hz 同步,平均十九分钟
3 零标注、零派生指标,HRV 与 BRS 全部要自己算
4 年龄是十五个组不是岁数,末组 85 到 92 岁,高龄样本稀少
5 两套设备混用,导联数与增益不同,设备必须进模型

编辑说明

本页事实核对以 PhysioNet 项目页(版本 1.0.0)与 Scientific Data 论文全文为准,核对时间为 2026 年 10 月 28 日。项目页与论文在记录时长上限上存在两个口径(45 分钟与 35 分钟),本页两处并列,不作判断。

未覆盖的内容包括:各年龄组确切人数、逐段信号质量指标、男女在各年龄组内的分布、总记录时长。这些官方均未公布,本页不做推算。

页面中的代码块为流程演示,参数按 1000 Hz 采样率设定,换用其他采样率时需同步调整滤波截止与最小峰间距。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • shareedb — 共享标签:生理信号 / 心电信号 / 心血管疾病 / 队列研究
  • music-sudden-cardiac-death — 共享标签:生理信号 / 心电信号 / 心血管疾病 / 队列研究
  • norwegian-athlete-ecg — 共享标签:生理信号 / 心电信号 / 心血管疾病 / 队列研究
  • fantasia — 共享标签:生理信号 / 心电信号 / 心血管疾病 / 队列研究
  • ecgcipa — 共享标签:生理信号 / 心电信号 / 心血管疾病 / 队列研究
  • brugada-huca — 共享标签:生理信号 / 心电信号 / 心血管疾病 / 队列研究
  • wctecgdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • ahadb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • chfdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • crisdb — 共享标签:生理信号 / 心电信号 / 心血管疾病

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集