信息速览
判断一块智能手表测得准不准,最大的障碍不是数据不够多,而是没有人知道正确答案。真实人体上没有标准答案:手表在同一时刻录到一段心电,医院心电图机在另一时刻录到另一段,两者都对,也都无法证明对方错了。过去十年可穿戴心电的公开数据几乎都沿着"扩大人群"这条路走——几万人、几十万人、几个月随访,回答的是"能不能发现房颤",而"测出来的数值离真值差多少"这个问题,靠加人永远加不出来,因为你手上根本没有真值。
这份数据集的解法是把人从回路里彻底拿掉。马德里康普顿斯大学的团队用一台 METRON PS-440 心电模拟器(patient simulator,能输出经过校准的标准心电波形的计量设备)产生信号,同时送给四款消费级智能手表和一台医院用的飞利浦 TC30 心电图机。于是真值不再是医师判读、不再是算法共识,而是模拟器旋钮上拧出来的那个数字:心率就是 30、就是 300;R 波幅度就是 500 微伏、就是 2000 微伏;ST 段偏移就是负 800、就是正 800。这是一个从医疗器械计量学借来的思路(IEC 60601-2-25:2011 是心电图机准确度认证标准),而不是机器学习惯常的思路。
代价同样赤裸:零名受试者、零颗真实心脏、零份真实噪声、零个临床结局。它不是"更大的训练集",是一把刻度已知的尺子——用来量四块手表各自把信号拧成了什么样。在 PhysioNet 上,把「可穿戴」与「已知输入」这两件事合到一起的发布极少——作为一份智能手表心电库,它真正稀缺的不是记录条数,而是那一列已知的正确答案。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | Electrocardiogram-Capable Smartwatches: Assessing Their Clinical Accuracy and Application |
| 发布方 | PhysioNet(由 MIT 计算生理实验室维护),数据由马德里康普顿斯大学、Ramón y Cajal 大学医院等机构贡献 |
| 首次发布 | 2025 年 4 月 9 日,版本 1.0.0(截至目前唯一版本) |
| 记录数 | 915 条(官方页面数据描述一节明写) |
| 受试者数 | 0 名;官方伦理一节原文为「Data collected from synthetic sources」 |
| 设备数 | 5 台——1 台参考心电图机 + 4 款智能手表 |
| 导联数 | 智能手表 1 导联(导出为 Lead I);参考机 12 导联 |
| 采样率 | 逐设备不同,官方页面未统一给出(第三方核对值见附录 B) |
| 单条时长 | 参考机每导联 10 秒;智能手表约 30 秒量级 |
| 实验设置 | 36 组模拟器设置,分心率、ST 段、R 波幅度、2 Hz 方波四族 |
| 重复次数 | 每组设置重复 5 次(官方页面原文:all experiments in quintuplicate) |
| 参数边界 | 心率 30–300 bpm;R 波幅度 500–2000 µV;ST 段抬高压低 −800 至 +800 µV |
| 真值来源 | 模拟器设定值,不是医师判读、也不是算法共识 |
| 文件格式 | WDFB(官方写法);设备自身导出的 PDF 图形明确不收录 |
| 许可 | PhysioNet Restricted Health Data License 1.5.0,须注册登录并签数据使用协议 1.5.0 |
| 典型用途 | 可穿戴心电测量准确度评测、IEC 60601-2-25 符合性复核、跨设备形态学差异分析 |
§1 它要解决的具体麻烦
1.1 两类问题,两套证据
"智能手表能不能用来看病"这句话实际上藏着两个完全不同的问题,而公开数据几乎只回答了其中一个。
第一个问题是筛查价值:在一大群人里,手表发出的房颤提示能不能抓到真阳性?这类研究的形态是大规模前瞻性观察——给几十万人戴上设备,看有多少后来被确诊。苹果心率研究、Fitbit 心脏研究都属于这一类,官方页面的参考文献里也引了这两篇。它们的结论是肯定的,但它们的证据结构决定了只能回答"能不能发现",不能回答"测得准不准":研究中每一位受试者的心电真值,本身就是由另一套设备或另一位医师间接给出的。
第二个问题是测量价值:手表屏幕上那条曲线,其幅度、时程、形态与一台合格心电图机差多少?这个问题在真实人群里无解——你不可能既知道某人此刻的 R 波真实幅度,又同时让手表去测它。它只能在已知输入的条件下回答,也就是计量学的做法:给一个标准源,让被测设备和参考设备同时读,比读数。
本库服务的完全是第二个问题。它没有一名受试者,因此也没有任何筛查价值;它的全部价值在于把"测量价值"这个问题变成可计算的。
1.2 三条常见的错误期待
第一条,期待它是"可穿戴心电的真实世界数据"。它不是。信号来自模拟器,波形是合成的,噪声是实验台的噪声而不是腕部的噪声。想研究运动伪迹、皮肤接触阻抗、肢体动作对单导联心电的破坏,这里一条都找不到。
第二条,期待它能用来训练诊断模型。它只有 36 个不同的输入,每个输入重复 5 次。一个模型在这上面很快就能把所有输入背下来,而它背下来的是"模拟器输出的第 7 号波形",不是任何一颗心脏。用它训练出来的东西在真实数据上没有任何保证。
第三条,期待它给出"哪款手表更好"的最终结论。官方页面给出了逐设备的定性评价(Apple 与 Fitbit 最好,Samsung 在高心率下不可靠,Withings 变异最大),但那是在 2025 年 4 月这批特定固件、特定实验台、特定接线方式下的读数。四款设备都是会随固件更新改变滤波策略的消费产品,读数会漂移。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 四款手表的心率测量误差边界 | 30–300 bpm 全量程设定值 + 参考机同条件读数 | 够,这是它设计出来要做的事 |
| R 波幅度测量的准确度对比 | 500/1000/1500/2000 µV 四档 × 5 重复 | 够,可用于复核是否符合 IEC 允差 |
| ST 段(J 点)偏移的测量能力 | −800 至 +800 µV 共 16 档设定值 | 够,这是它最独特的部分 |
| 设备滤波策略对波形的影响 | 2 Hz 方波记录 + 逐设备的波形失真描述 | 够做定性比较,不够做滤波器辨识 |
| 手表能否用于心肌缺血定位 | 手表只有单导联 | 不够,物理上不可能,缺的是空间维度 |
| 房颤检测算法的训练与测试 | 模拟器不输出房颤波形 | 不够,官方摘要只列心率、幅度、ST、方波 |
| 真实腕部噪声下的鲁棒性 | 信号源是模拟器,接线是 Holter 线缆 | 不够,实验台条件过于干净 |
| 跨固件、跨批次的设备一致性 | 每个型号各一台设备 | 不够,型号内差异无法估计 |
| 临床结局关联 | 无受试者、无随访 | 不够,也没有这个设计 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你在做可穿戴心电算法,想说明"我的模型掉分不是模型的错" | 给出设备端的物理失真基线:在已知输入下,设备本身就把幅度拧了多少 | 先量设备误差,再谈算法误差,把两者分开写 |
| 你在写设备选型或采购的技术评估 | 提供四款同一 protocol 下的横向读数 | 注意官方评价只对这批设备有效,选型需复测 |
| 你要复现或复核 IEC 60601-2-25 的测试方法 | 提供完整的设置矩阵与五重复结构 | 按官方 Methods 一节重建接线与校准步骤 |
| 你在教心电图测量学,需要一个"已知答案"的练习集 | 每条记录的真值就是文件名里的设定值 | 让学生先从波形估幅度与心率,再对答案 |
| 你想研究滤波对形态的影响 | 方波记录是观察滤波器的天然探针 | 对比四款设备在同一方波输入下的响应差异 |
| 你想做房颤检测、缺血诊断、长时程监测 | 不适用 | 转用真实人群的可穿戴库(§6.1) |
1.5 一句话判断
它不是"更多的心电数据",而是"已知答案的心电数据"——用零个受试者换来一个别人给不了的东西:真值。
1.6 不适合谁:四条边界
不适合做训练数据。 36 个不同输入、每个 5 次重复,样本的有效独立量远小于 915。任何以"提高模型性能"为目标的用法都会落空。
不适合做临床相关研究。 没有受试者、没有年龄性别、没有病史、没有结局。所有需要人群变量的课题都无从下手。
不适合做真实场景鲁棒性研究。 实验台上的接线是 1.5 mm DIN 的 Holter 线缆直接压在表冠与表背上,接触条件比戴在手腕上稳定得多。用它估计真实佩戴误差会严重低估。
不适合做设备间的最终排名。 每个型号一台样机、一次实验、一批固件。官方自己在用法说明里也只做定性描述而不给统计检验,这个克制是对的。
§2 数据构成与规格
2.1 一次实验由哪些部分组成
官方页面的数据描述一节给出了完整的组织方式:数据库按设备分目录,每个设备目录下按实验族分,同一实验族下的每个设定值重复五次。
| 层级 | 官方给出的名称 | 说明 |
|---|---|---|
| 设备目录 | philips_tc30 |
飞利浦 TC30 医院心电图机,参考标准 |
| 设备目录 | applewatch_serie8 |
Apple Watch Series 9(目录名写作 serie8,与正文的 Series 9 不一致) |
| 设备目录 | samsunggalaxy6 |
Samsung Galaxy Watch 6 |
| 设备目录 | fitbitsense2 |
Fitbit Sense 2 |
| 设备目录 | withingsscanwatch |
Withings ScanWatch |
| 实验族 | amp_test |
4 个实验:R 波幅度 500 / 1000 / 1500 / 2000 µV |
| 实验族 | freq_test |
15 个实验:心率 30 至 300 bpm |
| 实验族 | st-segment |
16 个实验:ST 段 −800 至 +800 µV |
| 实验族 | sqr-2hz |
2 Hz 方波信号(官方页面列在 freq_test 项下) |
| 重复 | _0 至 _4 |
每个设定值录五次 |
官方页面给出的命名样例是 amp500_0 到 amp500_4、f30_0 到 f30_4、st-m8_0 到 st-m8_4、st-p8_0 到 st-p8_4、sqr-2hz_0 到 sqr-2hz_4。这套命名本身就是数据集的标签体系——文件名里写着真值,这一点会在 §4.4 展开。
关于文件本体,官方页面只说了三件事:格式是 WDFB;设备自身导出的 PDF 图形不收录;收录的是"原始数值数据,例如时间序列电压测量、心率计算以及其他派生参数"。文件是受限访问的,未签署数据使用协议前无法列出目录,因此单文件的具体字节数与头文件内容未能直接核验(附录 B)。
2.2 信息项的完整字典
本库的"字段"不是表格列,而是目录层级、文件名语法与波形文件头里的描述项。下表把可核验的信息项逐条列出。
| 信息项 | 载体 | 取值形态 | 含义 | 使用注意 |
|---|---|---|---|---|
| 采集设备 | 一级目录名 | 五个固定值 | 哪台设备录的 | applewatch_serie8 是目录名,正文写的是 Series 9 |
| 实验族 | 二级目录名 | amp_test / freq_test / st-segment / sqr-2hz |
被测参数类型 | sqr-2hz 官方列在 freq_test 项下,层级需自行确认 |
| 设定值(真值) | 文件名前缀 | amp500、f30、st-m8、sqr-2hz 等 |
模拟器旋钮上的数值 | 这是本库唯一的监督信号 |
| 重复序号 | 文件名后缀 | _0 到 _4 |
同一设置的第几次重复 | 五次重复之间不独立(§7.3) |
| 通道数 | 信号文件 | 手表 1;参考机 12 | 导联数 | 手表导出为单导联 Lead I |
| 采样率 | 波形文件头 | 逐设备不同 | 每秒采样点数 | 官方页面未统一给出 |
| 记录时长 | 波形文件头 | 参考机每导联 10 秒 | 单次记录长度 | 官方 Methods 一节写明参考机按导联各录 10 秒 |
| 参考机校准 | 论文与官方 Methods | ±5% 或 ±40 µV | 每次测试前的校验允差 | 校准在每次测试前验证 |
| 模拟器型号 | 官方页 | METRON PS-440 | 信号源 | 输出接口遵循 AHA 与 IEC 色标 |
| 参考设备型号 | 官方页 | Philips TC30 | 金标准 | 用标准 12 导联线连接 |
2.3 一条记录的完整解剖
以官方给出的样例 st-p8_0 为例,把它的语义逐层拆开:
#-- 设备目录:withingsscanwatch(Withings ScanWatch)
#-- 实验族:st-segment(ST 段偏移族)
#-- 文件名:st-p8_0
#-- st → ST 段实验族
#-- p8 → 正向 +800 µV(p = positive,8 = 8×100 µV)
#-- _0 → 该设置的第 1 次重复(共 _0 至 _4 五次)
withingsscanwatch/st-segment/st-p8_0
再以 amp500_4 为例:amp 是幅度族,500 是 R 波幅度 500 µV,_4 是第五次重复。以 f30_0 为例:f 是频率(心率)族,30 是 30 bpm,_0 是第一次重复。
这套命名有一个直接后果:标签不需要另建映射表,解析文件名即可。这与绝大多数心电库相反——那些库的标签要么在注释文件里,要么在单独的 CSV 里,要么根本不存在。
需要提醒的是,官方页面只给出了命名样例(amp500_0 到 amp500_4、f30_0 到 f30_4、st-m8_0 到 st-m8_4、st-p8_0 到 st-p8_4、sqr-2hz_0 到 sqr-2hz_4),中间档位的确切写法(例如 1000 µV 是 amp1000 还是 amp1k,+300 µV 是 st-p3 还是 st-3)需要下载后按目录实际内容确认。本文不替它猜测。
2.4 主键与真值的映射关系
一次"实验"在这里有三层身份,混淆它们是最常见的分析错误:
| 层次 | 定义 | 数量级(官方明写) | 是否独立 |
|---|---|---|---|
| 设置(setting) | 模拟器的一个旋钮位置 | 36 组(4 + 15 + 16 + 1) | 是,彼此独立 |
| 重复(replicate) | 同一设置下的第 n 次采集 | 每组 5 次 | 否,同一输入的重复测量 |
| 记录(record) | 一台设备在一次重复下产出的文件 | 官方合计 915 条 | 部分是重复的产物 |
关键在于:有效的独立样本数是 36 的量级,不是 915 的量级。915 是"设备 × 设置 × 重复"的展开结果。如果你的统计方法假设 915 条相互独立,标准误会被系统性低估,显著性会被夸大。这是本库最重要的一条方法论警告。
正确的做法是按设置分组:把同一设置的五次重复当作同一实验单元内部的重复测量,或者先取五次的中位读数再进入统计。论文层面的做法也是如此——官方用法说明里给的是"某设备在某参数上的误差量级",而不是"915 条记录的统计检验"。
2.5 与同类心电资源的字段差异
| 对比项 | 本库 | 真实人群十二导联库 | 真实人群单导联可穿戴库 | 长时程 Holter 库 |
|---|---|---|---|---|
| 受试者 | 0 名 | 数千至数万名 | 数十至数十万名 | 数十名 |
| 真值来源 | 模拟器设定值 | 医师判读或诊断结论 | 医师判读或随访结局 | 人工修正的逐搏标注 |
| 真值粒度 | 每次实验一个标量 | 每条记录一个诊断 | 每人或每段一个标签 | 每个心搏一个类型码 |
| 信号来源 | 计量校准源 | 门诊心电图机 | 腕戴设备 | 贴电极记录仪 |
| 重复结构 | 有(每组 5 次) | 无 | 无 | 无 |
| 可测的量 | 设备测量误差 | 疾病分类性能 | 筛查性能 | 节律负荷 |
| 能否训练分类器 | 不能 | 能 | 能 | 能 |
这张表要说的只有一件事:本库在"真值来源"这一列上唯一性地突出,在"样本量"“人群多样性”"临床相关性"三列上全面落后。它不是任何真实人群库的替代品,而是补上别人补不了的那一列。
2.6 通道的物理含义
接线方式决定了一切。官方 Methods 一节写得很具体:每块手表被架在可调支架上,用两根 1.5 mm DIN 的柔性 Holter 线缆连接模拟器——一根把模拟器的 R 输出(右臂)接到手表的表冠或数字按钮,充当负极;另一根把 L 输出(左臂)接到手表背面,充当正极。
LA 减 RA 正是 I 导联的定义。也就是说,四块手表在物理上测的都是 I 导联,这一点与官方所说"PDF 图形格式化为单导联(Lead I)心电图"是自洽的。
而参考机 Philips TC30 用标准 12 导联线连接,每次按导联各录 10 秒,覆盖全部标准推导。
| 设备类型 | 通道数 | 物理含义 | 能看到的 | 看不到的 |
|---|---|---|---|---|
| 智能手表 | 1 | 左右臂之间的电位差(I 导联) | 心率、R 波幅度、ST 段沿左右轴的偏移 | 下壁、前壁、侧壁的任何信息 |
| Philips TC30 | 12 | 额面六个 + 横面六个投影 | 完整的空间电轴信息 | 无 |
这个差异把本库能回答的问题范围划死了:它可以问"手表测出的 I 导联幅度准不准",不能问"手表能不能定位缺血"。缺血定位依赖多个导联之间的空间分布关系,单导联在原理上就没有这个自由度。论文与官方用法说明里提到"缺血性心脏病监测的潜力",指的是测量 J 点偏移的准确性,而不是导联定位能力——这两件事常被一并误读。
还有一个容易踩的细节:第三方核对(ECGBench 页面)指出,全部 720 条智能手表记录的波形文件头把通道标成了 II,而按官方接线它应是 I 导联。若按通道名跨设备取数,参考机的真 II 导联与手表的 I 导联会被混进同一列。该结论来自第三方核对,官方页面未提及,使用前建议自行开一条头文件确认(附录 B)。
§3 它是谁的数据
3.1 贡献者与机构
八位作者,跨四个国家机构加一所中学:
| 作者 | 机构 | 角色侧写 |
|---|---|---|
| Joaquin Recas | 马德里康普顿斯大学计算机体系结构与自动化系 | 第一作者,工程侧 |
| Mauro Buelga Suárez | Ramón y Cajal 大学医院心内科 | 论文第一作者,临床侧 |
| Sergio González-Cabeza | 马德里康普顿斯大学 | 信号处理 |
| Mario Sanz-Guerrero | 美因茨约翰内斯·古腾堡大学 | 信号处理 |
| Marian Diaz-Vicente | 马德里康普顿斯大学 / Vision2.ai | 工程 |
| Alfonso Rebolleda | IES Leonardo Da Vinci 中学(马德里)计算机教师 | 教育侧 |
| Luis Piñuel Moreno | 马德里康普顿斯大学 | 工程 |
| Gonzalo Luis Alonso Salinas | 纳瓦拉公立大学 / 纳瓦拉大学医院(潘普洛纳) | 临床 |
这个组合很能说明数据集的性格:它不是一个临床科室顺手捐的数据,也不是一个纯算法组造的合成数据,而是计量工程 + 临床心内 + 中学信息技术教育的三方拼装。中学教师的参与在 PhysioNet 的发布里不常见,它与"把校准方法做成可教学流程"这件事是吻合的。
资助方为 Ramón y Cajal 卫生研究所(Instituto Ramón y Cajal de Investigación Sanitaria),官方声明无利益冲突。
3.2 时间线
| 时间 | 事件 | 意义 |
|---|---|---|
| 2025-04-09 | 数据库在 PhysioNet 上线,版本 1.0.0 | 首次公开,至今唯一版本 |
| 2025 | 配套论文投稿,官方页面标注「pending revision」 | 数据与论文同步推进 |
| 2025 | 欧洲心血管护理杂志(EJCN)会议摘要上线 | 会议层面的先行传播 |
| 2026-04-15 | 论文正式发表于 Biomedical Signal Processing and Control 第 115 卷,文章编号 109373 | 数据有了同行评议后的正式出处 |
官方页面的版本列表只有 1.0.0 一项,没有修订记录。这意味着它是一个单点发布,没有后续校正与扩展——用的时候要接受它的原始形态(§7.3)。
3.3 采集场景:实验台,不是病房
理解这份数据,先要接受它的场景完全不在临床路径上。没有招募、没有知情同意、没有伦理审查中的人类受试者部分——官方伦理一节全文只有一句话:「Data collected from synthetic sources」。
实验台上的关键条件有三个:模拟器输出经过校准,接口遵循 AHA 与 IEC 色标;手表固定在可调支架上保证传感器接触稳定;参考机每次测试前校验,须满足 ±5% 或 ±40 µV 的准确度要求。
这三个条件的共同效果是把可变因素压到最低。这在计量学里是优点——你要测的就是设备本身,当然要排除外界干扰;在机器学习里却是缺点——真实使用的全部困难(皮肤接触、汗液、动作、电极极化)恰好都被排除了。
3.4 数据来源的三个层次
分清三层,很多误读会自动消失:
第一层:模拟器设定值。 这是真值,是旋钮上的数字,准确度取决于模拟器自身的计量溯源,官方未给出溯源链细节。
第二层:设备导出文件。 智能手表各自导出自己的记录(PDF 图形 + 数值文件),参考机输出标准的十二导联记录。这一层已经包含了设备自己的滤波、重采样、增益与自动测量。
第三层:转成 WDFB 后的发布形态。 官方页面说数据"transformed to WDFB format"。这一层是经过格式转换的结果,转换过程中是否重采样、是否统一增益,官方未说明。
三层的边界决定了结论的适用范围:你在第三层上测到的差异,可能来自第二层(设备本身的滤波与测量算法),也可能来自第三层(格式转换),无法仅凭发布文件分离。想要干净归因,必须回到第二层的原始导出——而那些原始文件不在发布内容里。
§4 它最独特的东西
4.1 稀缺性:零受试者的可穿戴心电库
可穿戴心电的公开数据绝大多数是"有人"的,而且越来越多、越来越大。这是因为大人群研究有明确的临床问题要回答,也容易获得资助。反过来,"零受试者"的发布在可穿戴领域几乎没有立身之地——它既不能训练模型,也不能做筛查,唯一的用途是给设备打分。
这恰好是产业与监管双方都缺的东西。厂商宣称手表能测心电,临床医生想知道它与心电图机差多少,监管关心它是否满足现成的准确度标准。这三方都需要一个已知输入的对照实验,而这类实验在传统上属于厂商内部或检测机构报告里的内容,很少公开原始数据。
本库把这件事做成了公开数据。它的稀缺性不是"采集得精细",而是"有人愿意把计量实验的原始记录放出来"。这也解释了它为什么只有 915 条——再多做十倍重复并不能增加信息,因为设置只有 36 组。
4.2 差异化证据:真值来自旋钮而不是判读
| 库的类别 | 真值怎么来的 | 真值的误差 | 能测什么 |
|---|---|---|---|
| 真实人群临床库 | 医师判读或出院诊断 | 判读者间差异,通常未知 | 疾病分类性能 |
| 真实人群可穿戴库 | 随访结局或参考设备 | 参考设备自身的误差 | 筛查性能 |
| 仿真合成库(本库) | 模拟器设定值 | 模拟器自身的计量允差 | 设备测量误差 |
这张表的核心在第三行。前两类库的真值本身带着未知误差,因此"模型的准确率"永远是一个相对量——相对于那个不完美的参考。只有第三类能把误差绝对化:模拟器的设定值是一个可以直接与设备读数相减的数。
这就是它能做、别人做不了的事:给出一个带符号的、有物理单位的误差(多少微伏、多少 bpm),而不是一个百分比。
4.3 四个实验族各自在测什么
| 实验族 | 设置数 | 标称范围 | 在测的能力 | 官方点出的问题设备 |
|---|---|---|---|---|
freq_test(心率) |
15 | 30–300 bpm | 自动心率测量的量程与线性 | Samsung Galaxy Watch 6:100 bpm 以上误差显著 |
st-segment(ST 段) |
16 | −800 至 +800 µV | J 点测量的准确度与稳定性 | Samsung 与 Withings:变异与误差最大 |
amp_test(R 波幅度) |
4 | 500–2000 µV | 幅度测量的线性与增益正确性 | Withings:官方用法说明称其偏差最大 |
sqr-2hz(方波) |
1 | 2 Hz | 滤波策略与瞬态响应 | Samsung 高频振荡;Withings 疑似窄带通 |
方波这一族虽然只有一个设置,却是最有诊断力的探针。方波的瞬态响应直接暴露滤波器的行为:Apple 被官方描述为"轻微波纹、小于 1 毫米",Fitbit 在跳变起始处有约 2 毫米的拉长(被推测为激进的低通滤波),Samsung 出现大幅度高频振荡,Withings 出现低频振荡并疑似窄带通。
这些描述的价值在于它们解释了前面几族里看到的现象——同样是幅度测不准,原因可能是增益错误,也可能是滤波器把峰削掉了。只看幅度族分不出这两种原因,方波族能。
4.4 标注粒度:设定值加五次重复,没有第二层
本库的标注体系简单到几乎不需要解释:每条记录的标签就是文件名里的设定值,此外没有第二层标注。
没有心搏标注,没有节律标注,没有医师意见,没有质量评分。想要"这一段是不是干净"这类信息,得自己从波形里算。
五次重复的设置是它唯一的质量控制手段。重复的意义在于把随机波动与系统偏差分开——同一设置下五次读数如果彼此接近但都偏离真值,那是系统偏差(增益或滤波造成);如果五次彼此散得开,那是随机噪声。这是计量学里最基础的一次分辨,也是这 915 条记录里唯一可以合法做的统计分析。
4.5 边界条件:什么情况下它不再适用
| 条件 | 是否适用 | 判断依据 |
|---|---|---|
| 你要量化设备的幅度测量误差 | 适用,这是它的设计目的 | 真值为模拟器设定值 |
| 你要比较四款设备的滤波行为 | 适用 | 方波族 + 同输入对照 |
| 你要复核 IEC 60601-2-25 的测试流程 | 适用 | 官方 Methods 完整给出设置与校准 |
| 你要训练任何诊断模型 | 不适用 | 只有 36 个不同输入 |
| 你要研究真实佩戴条件下的信号质量 | 不适用 | 支架固定 + 线缆直连 |
| 你要估计型号内的批次差异 | 不适用 | 每型号一台样机 |
| 你要研究房颤或其他心律失常 | 不适用 | 模拟器不输出这类波形 |
| 你要做缺血的导联定位 | 不适用 | 手表仅单导联 |
| 你要把结论推广到固件更新后的设备 | 谨慎 | 消费设备会随固件改变滤波与测量 |
§5 怎么拿到
5.1 目录结构与访问前提
官方页面的访问区块写得很硬:只有签署了指定数据使用协议的注册用户才能访问文件。许可为 PhysioNet Restricted Health Data License 1.5.0,协议为 PhysioNet Restricted Health Data Use Agreement 1.5.0。
这与"合成数据"的直觉冲突——数据里没有一个人,却仍然走受限访问通道。这是 PhysioNet 的项目级设置,不是笔误,申请时按受限数据流程走即可。
| 路径(预期结构) | 内容 | 可否核验 |
|---|---|---|
/files/ecg-capable-smartwatches/1.0.0/ |
五个设备目录 | 需登录,未直接核验 |
.../philips_tc30/ |
参考机记录,12 导联 | 官方页明写存在 |
.../applewatch_serie8/ |
Apple Watch Series 9 记录,1 导联 | 官方页明写存在 |
.../samsunggalaxy6/ |
Samsung Galaxy Watch 6 记录 | 官方页明写存在 |
.../fitbitsense2/ |
Fitbit Sense 2 记录 | 官方页明写存在 |
.../withingsscanwatch/ |
Withings ScanWatch 记录 | 官方页明写存在 |
第三方核对页面提到发布内含 SHA256SUMS.txt 并列出全部 1,833 个文件,本文未直接核验(附录 B)。
5.2 批量下载
受限数据不能用匿名 wget 直接拉。走 PhysioNet 官方工具的写法:
#-- 1. 安装官方命令行工具
python3.11 -m pip install --upgrade physionet
#-- 2. 登录(会提示输入 PhysioNet 用户名与密码,凭据写入本地配置)
physionet login
#-- 3. 确认已在项目页签署 DUA 1.5.0,再下载全库
physionet download ecg-capable-smartwatches 1.0.0 --destination ./ecgsw
#-- 4. 只取某一台设备的目录,避免一次拉全量
physionet download ecg-capable-smartwatches 1.0.0 \
--destination ./ecgsw --include "applewatch_serie8/*"
已经签好协议、想用浏览器下载时,需要带上登录后的会话 cookie:
#-- 用登录后的会话 cookie 拉取单个目录索引
curl -sL --max-time 30 --cookie "sessionid=<你的会话 ID>" \
"https://physionet.org/files/ecg-capable-smartwatches/1.0.0/"
未登录时直接访问文件目录会返回 403,这是正常行为,不是链接失效。
5.3 读取方式
官方把格式写作 WDFB,而不是 PhysioNet 生态里更常见的 WFDB。第三方核对页面按 WFDB 读取成功,并按发布自带的校验和文件核对过全部文件。稳妥的做法是先拿一条记录试读:
import wfdb
#-- 先读头文件,确认通道名、采样率与信号长度
rec = wfdb.rdheader('applewatch_serie8/freq_test/f30_0')
print(rec.sig_name, rec.fs, rec.sig_len)
#-- 再读信号本体;physical=True 会按头文件增益换算成物理量
full = wfdb.rdrecord('applewatch_serie8/freq_test/f30_0', physical=True)
print(full.p_signal.shape, full.units)
第一步必须先读头。原因见 §2.6:四款手表的采样率各不相同,且第三方核对指出手表头文件里的通道名写的是 II 而物理上是 I 导联。不读头就按统一假设批量处理,会在跨设备比较时静默出错。
5.4 转成通用的表结构
下游分析几乎总是从"文件名里的设定值"出发,所以第一步是解析文件名建表,而不是读波形:
import re
import pandas as pd
#-- 记录名语法:<族前缀><设定值>_<重复序号>
PAT = re.compile(r'^(?P<fam>amp|f|st|sqr)-(?P<val>[a-z0-9]+)_(?P<rep>\d)$')
def parse(name):
#-- 先把 sqr-2hz 这类含连字符的特殊族单独处理
if name.startswith('sqr-'):
fam, val, rep = 'sqr', '2hz', name.rsplit('_', 1)[1]
return fam, val, int(rep)
m = PAT.match(name)
return m.group('fam'), m.group('val'), int(m.group('rep'))
rows = []
for rec in ['amp500_0', 'amp500_4', 'f30_0', 'f300_4', 'st-m8_0', 'st-p8_4']:
fam, val, rep = parse(rec)
rows.append({'record': rec, 'family': fam, 'setting': val, 'replicate': rep})
print(pd.DataFrame(rows).to_string(index=False))
建好这张表之后,波形的读取只需按记录名索引。分析时务必把 setting 当作分组键:同一 setting 下的五次重复是同一个实验单元内部的重复测量。
5.5 设定值与真值的映射
三次转换把文件名变成物理量:
| 族 | 文件名片段 | 物理量 | 单位 | 说明 |
|---|---|---|---|---|
| 幅度 | amp500 / amp2000 |
500 / 2000 | µV | R 波幅度设定值 |
| 心率 | f30 / f300 |
30 / 300 | bpm | 心率设定值 |
| ST 段 | st-m8 / st-p8 |
−800 / +800 | µV | m 为负向压低,p 为正向抬高 |
| 方波 | sqr-2hz |
2 | Hz | 方波频率 |
#-- 设定值 → 真值(物理量)的换算口径
def setting_to_truth(fam, val):
if fam == 'amp':
return {'unit': 'uV', 'value': float(val)}
if fam == 'f':
return {'unit': 'bpm', 'value': float(val)}
if fam == 'st':
#-- st-m8 → −800 µV;st-p8 → +800 µV
sign = -1.0 if val.startswith('m') else 1.0
return {'unit': 'uV', 'value': sign * float(val[1:]) * 100}
if fam == 'sqr':
return {'unit': 'Hz', 'value': float(val.replace('hz', ''))}
raise ValueError(fam)
print(setting_to_truth('st', 'm8'), setting_to_truth('st', 'p8'))
上面 ST 段的换算(一位数字 × 100 µV)符合官方给出的 −800 至 +800 区间与 st-m8/st-p8 样例,但中间档位的确切写法仍需下载后核对目录(§2.3)。换算口径一旦写错,全部误差数字都会系统性错位,这是本库最值得先花十分钟确认的地方。
5.6 五个最容易出错的地方
| 位置 | 错误写法 | 后果 | 正确做法 |
|---|---|---|---|
| 样本量 | 把 915 当作独立样本数 | 标准误被低估,显著性虚高 | 按 setting 分组,有效样本量是 36 的量级 |
| 导联 | 按通道名 II 跨设备取数 |
手表 I 导联与参考机 II 导联混为一列 | 先读头文件确认通道名与设备 |
| 目录名 | 把 applewatch_serie8 当作 Series 8 |
设备型号写错 | 官方正文写的是 Apple Watch Series 9 |
| 采样率 | 假定全库统一采样率 | 时间轴错位,心率换算出错 | 逐设备读头文件的 fs |
| 分析目标 | 用它训练诊断模型 | 36 个输入很快被背完 | 只做误差测量与设备比较 |
§6 与库内条目的关系
6.1 关系图谱
本库与站内已有的可穿戴、心电类条目均不构成同一份发布。判定依据写在最后一列:
| 库内条目 | 它的内容 | 与本库的关系 | 判定为独立发布的依据 |
|---|---|---|---|
physionet-cinc-2017 |
PhysioNet/CinC 2017 单导联房颤分类挑战赛 | 同为单导联心电,用途完全不同 | 数据来自 AliveCor 捐赠的真实人群记录,MIT 与 Emory 组织;本库零受试者 |
mit-bih-afdb |
MIT-BIH 房颤长时程心电库 | 同为心电,一个测人一个测设备 | 25 名真实受试者、10 小时双导联 Holter;本库无受试者 |
kingston-icu-af |
ICU 床旁四导联 10 秒 ECG 房颤标注 | 互补 | 加拿大金斯顿医院 2015–2020 真实 ICU 存档,两名医师标注 |
iafdb / aftdb / afpdb |
心内房颤、房颤终止、阵发房颤预测 | 主题相邻(房颤)但本库不涉及房颤 | 各自有独立机构、独立 DOI 与独立版本页 |
bigideaslab-step-hr-smartwatch |
肤色与智能手表心率误差配对 | 方法论上最接近:都在量手表的心率误差 | Duke 大学 BIG IDEAs Lab 的真实人群配对研究;本库是模拟器台架,机构、人群、DOI 均不同 |
parkinsons-disease-smartwatch |
帕金森病智能手表运动学 | 同为腕戴设备,模态不同 | 采集的是加速度与角速度,不是心电 |
bidsleep-dataset |
Apple Watch 心率 + Dreem2 EEG 睡眠分期 | 同用 Apple Watch,任务不同 | 采集的是 PPG 衍生瞬时心率与加速度,用于睡眠分期 |
qol-stress |
Fitbit 多模态应激生理信号 | 同含 Fitbit 单导联 ECG | 66 名健康成人的真实采集;本库零受试者 |
covidentify |
数千块手表做新冠检测 | 同是可穿戴大人群研究 | 真实人群纵向研究,与本库的台架设计无关 |
incartdb / wctecgdb |
十二导联真实心电库 | 提供真实形态学对照 | 本库只有参考机是十二导联,且信号来自模拟器 |
结论:库内不存在与本库同源、同批记录、同 DOI 的发布,可以独立成篇。唯一需要在使用时特别区分的是 bigideaslab-step-hr-smartwatch——两者都在回答"手表的心率准不准",但一个是在真实人身上用参考设备比对,一个是在实验台上用模拟器做已知输入。前者回答的是真实条件下的误差,后者回答的是设备本身的误差,两者互补而不能互换。
6.2 检索路径
| 你要找的东西 | 检索词 | 会落到哪里 |
|---|---|---|
| 真实人群的可穿戴心电 | single-lead、physionet-cinc-2017、qol-stress |
§6.1 表前四行 |
| 手表心率误差的真实场景版本 | bigideaslab-step-hr-smartwatch、skin tone |
§6.1 第五行 |
| 设备测量误差的计量方法 | IEC 60601-2-25、patient simulator |
§1.1、§4.2 |
| 十二导联真实形态学对照 | incartdb、wctecgdb、georgia-12-lead |
§6.1 最后一行 |
| 长时程节律负荷 | mit-bih-afdb、ltafdb |
§6.1 |
| 方波与滤波器行为 | sqr-2hz |
§4.3 |
6.3 分工判据
| 任务 | 主粮仓该用什么 | 本库的位置 | 原因 |
|---|---|---|---|
| 设备测量误差量化 | 无可替代 | 主力 | 唯一带已知真值的可穿戴心电发布 |
| 房颤检测训练 | 单导联大人群库 | 不适用 | 模拟器不输出房颤 |
| 真实佩戴鲁棒性 | 真实人群可穿戴库 | 不适用 | 实验台条件过于干净 |
| IEC 符合性复核 | 无可替代 | 主力 | 官方按标准设置与校准 |
| 心电形态学教学 | 真实十二导联库 | 辅助 | 可作为"已知答案"的练习集 |
| 滤波与信号链分析 | 方波与脉冲响应专用数据 | 主力之一 | 方波族是天然探针 |
| 人群筛查价值论证 | 大人群前瞻研究 | 不适用 | 零受试者 |
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
先纠正一个容易发生的误判:把"零受试者"当成缺陷。它不是缺陷,是设计。这份数据的目的从一开始就不是模拟人群,而是给设备做测量。用"有没有人"来评价它,等于用"能不能装水"来评价一把尺子。
这个校正会改变五维评分的读法。它在"人群相关性"上必然是低分,但在"真值可靠性"上几乎没有对手。把两者混在一起看,会得出"这个数据集没什么用"的错误结论。
7.1 五维评分
按常用的数据集评价维度打分,每项 1–5 分,分数针对"作为可穿戴心电测量准确度基准"这个用途:
| 维度 | 分数 | 理由 |
|---|---|---|
| 数据规模 | 2 | 915 条记录,但独立设置只有 36 组 |
| 真值可靠性 | 5 | 真值是模拟器设定值,有物理单位,无判读误差 |
| 任务适配 | 5 | 设备误差测量与 IEC 复核几乎没有替代品 |
| 文档完整 | 4 | 设置矩阵、接线方式、校准要求都写清了,但格式转换细节缺失 |
| 可获取性 | 2 | 受限访问,须注册并签 DUA 1.5.0 |
五项合计 18 分(满分 25)。结构很清楚:真值与适配拉满,规模与获取拖后腿。它是一把好尺子,只是要签字才能拿到。
7.2 标注的两层
第一层是设定值层:模拟器拧到哪,真值就是多少。这一层的可靠性取决于模拟器自身的计量溯源,官方只给了型号(METRON PS-440)与校准允差(±5% 或 ±40 µV,这是参考机的允差,不是模拟器的),没有给溯源链。
第二层是设备读出层:每台设备给出的心率、幅度测量值。这是被评估的对象,不是标注。
两层之间没有任何人工环节——没有医师、没有共识、没有裁决。这在可穿戴心电的公开数据里是罕见的干净,但也意味着它不能用于评估任何需要临床判断的东西。
7.3 已知的、可枚举的偏差
| 偏差 | 表现 | 影响 |
|---|---|---|
| 重复非独立 | 每组设置重复 5 次 | 按记录做统计会低估标准误 |
| 单一样机 | 每型号一台设备 | 型号内批次差异无法估计 |
| 固件时点 | 读数反映的是发布时的固件 | 消费设备固件更新后结论可能失效 |
| 接触条件理想化 | 支架固定 + 线缆直连 | 真实佩戴误差被系统性低估 |
| 无真实噪声 | 信号源是校准源 | 肌电、运动、基线漂移一概没有 |
| 目录名与正文不一致 | applewatch_serie8 vs Series 9 |
型号标注易错 |
| 通道名疑似错标 | 手表头文件写 II(第三方核对) |
跨设备取数会静默混导联 |
| 格式转换不透明 | 官方只说转成 WDFB | 无法判断是否重采样或统一增益 |
| 单点发布 | 只有 1.0.0,无修订 | 发现问题不会有后续版本修正 |
| 信号源单一 | 只有一台模拟器 | 模拟器本身的系统误差无法分离 |
最后一行值得单独说:所有设备读的是同一台模拟器的输出,因此模拟器自身的任何系统偏差会被全部五台设备共同继承。它不影响设备之间的比较,但影响任何"绝对准确度"的断言。
7.4 外部验证矩阵
| 验证角色 | 做法 | 讲得通的地方 | 风险 |
|---|---|---|---|
| 设备间横向比较 | 同一设置下比五台设备的读数 | 同输入、同环境,对照干净 | 每型号一台样机,结论不具统计性 |
| 与标准允差对照 | 把测得的幅度误差与 IEC 允差比 | 方法直接来自标准 | 官方未给模拟器自身允差 |
| 与真实人群研究对照 | 把台架误差与人群研究中的误差比较 | 能区分设备误差与生理/佩戴误差 | 两类误差不可简单相加 |
| 滤波行为推断 | 从方波响应反推滤波策略 | 方波是干净的探针 | 厂商未公开滤波器参数,推断无法证实 |
配套论文(Biomedical Signal Processing and Control,2026 年第 115 卷,文章编号 109373)是这套方法的正式出处。论文摘要给出的结论是:所有设备在正常窦性心律下与参考心电图形态相似;R 波幅度与 J 点偏移上存在设备间差异,Withings 偏离最大;Samsung 在 100 bpm 以上出现困难;Apple Watch Series 9 与 Fitbit Sense 2 表现最有潜力。会议摘要(欧洲心血管护理杂志,2025)进一步给出量级:Fitbit 在 500 µV 处最大误差约 1.2%,Apple 约 6.7%,Withings 超过 11%(已超出 IEC 60601-2-25:2011 的允差);J 点方面 Apple 多数测量误差低于 10 µV,极端值 +300 µV 处达 51 µV,Samsung 与 Withings 分别超过 112 µV 与 117 µV。这些数字来自论文与会议摘要,不是从发布文件里重新算出的。
7.5 它为何能持续
它没有版本更新,也不太可能有——36 组设置已经覆盖了标准要求的量程,重复再做不会增加信息。它能持续被引用,靠的是占住一个别人暂时不会来占的坑:可穿戴心电领域里唯一一份带已知真值的公开台架数据。
只要消费设备还在宣称能测心电,只要监管还在参考既有的心电图机标准,这个坑就一直有意义。它的对手不是别的库,而是"厂商自己做的、不公开的检测报告"。
§8 生态位与历史
8.1 历史沿革
它属于 PhysioNet 上较新的一批发布(2025 年 4 月),与该平台传统的心电库在气质上有明显差别。过去的心电库几乎都是临床副产品——Holter 记录、监护仪存档、门诊心电图,整理后捐赠。本库是先有实验设计、后有数据的目的性采集,采集动机来自一个工程问题而不是一批现成记录。
这个差别体现在很多细节上:设置矩阵是按标准排的,重复次数是预先定好的,接线方式是写进方法节的,参考机的校准要求也一并给出。它更像一篇可复现的实验记录,而不是一批数据的整理归档。
8.2 与挑战赛的关系
它与 PhysioNet 的挑战赛体系没有渊源。站内若干心电数据库(physionet-cinc-2017、cinc-2021 等)都直接脱胎于 CinC 挑战赛,有训练集与测试集的官方划分、有排行榜、有配套的评分脚本。本库什么都没有——没有划分,没有榜单,也没有基线分数。
这不是疏漏。挑战赛的任务是"谁的分类准",本库的任务是"谁的测量准",后者没有排行榜的意义:真值已知,误差直接可减,不存在需要排名的问题空间。
8.3 生态位:标尺而不是粮仓
| 角色 | 主力粮仓 | 标尺 |
|---|---|---|
| 典型用法 | 大规模训练、预训练 | 误差测量、符合性复核、设备比较 |
| 需要的前提 | 数据量大、标签细 | 真值已知、条件受控 |
| 代表库 | 大人群单导联库、十二导联诊断库 | 本库 |
| 失败模式 | 过拟合、标签噪声累积 | 把台架结论当成真实场景结论 |
本库坐在右边这一列。拿它训练会立刻遇到输入枯竭;拿真实人群库做误差测量会立刻遇到"没有真值"。两者不能互换,也不该互换。
8.4 谁在用它,用来做什么
从公开文献看,使用者集中在三类:做可穿戴心电准确度评测的工程与临床工程组(把它当方法范本)、做设备监管与标准讨论的机构(把它当可复核的公开实例)、做教学的教师(把它当已知答案的练习集)。数据侧的第三方整理(例如 ECGBench 对它的格式与记录结构核对)也属于第一类。
真正的算法研究者用得少,这是它的定位决定的——它不提供可训练的样本,只提供可核对的误差。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一天 | 第一周 | 注意事项 |
|---|---|---|---|
| 设备评测工程师 | 读官方 Methods 与数据描述,签 DUA 后下载 | 按设置族重建误差表,与 IEC 允差对照 | 采样率逐设备不同,先读头文件 |
| 临床工程与监管 | 读配套论文的摘要与图表 | 复现关键设置的心率与幅度测量 | 结论只对这批设备与固件有效 |
| 教学 | 用文件名当答案,波形当题目 | 设计"估幅度—对答案"的练习 | 说明数据来自模拟器,不是患者 |
9.2 一条最短的可用流程
#-- 1. 注册 PhysioNet 账号,在项目页签署 DUA 1.5.0
#-- 2. 安装并登录官方工具
python3.11 -m pip install --upgrade physionet && physionet login
#-- 3. 只下一台设备,先看目录实际长什么样
physionet download ecg-capable-smartwatches 1.0.0 \
--destination ./ecgsw --include "applewatch_serie8/*"
#-- 4. 列出记录名,确认命名语法(这一步决定了后面的标签口径)
find ./ecgsw -name '*.hea' | head -20
import wfdb
import numpy as np
#-- 读一条记录,确认通道名与采样率
rec = wfdb.rdrecord('applewatch_serie8/freq_test/f30_0', physical=True)
print(rec.sig_name, rec.fs, rec.sig_len)
#-- 粗测心率:数 R 峰间隔的倒数,与文件名里的 30 bpm 对照
x = rec.p_signal[:, 0]
peak_gap = np.argmax(x) #-- 仅作示意,正式分析请用标准 R 峰检测
print('通道名', rec.sig_name[0], '采样率', rec.fs, '长度', rec.sig_len)
第二步特意只下一台设备:先确认命名语法与头文件结构,再决定全量怎么组织。全量只有五个目录,但这个顺序能避免标签口径错了之后返工。
9.3 引用方式
PhysioNet 的惯例是引用数据集本身加平台:
| 引用对象 | 内容 |
|---|---|
| 数据集 | Recas, J., Buelga Suárez, M., González-Cabeza, S., Sanz-Guerrero, M., Diaz-Vicente, M., Rebolleda, A., Piñuel Moreno, L., & Alonso Salinas, G. L. (2025). Electrocardiogram-Capable Smartwatches: Assessing Their Clinical Accuracy and Application (version 1.0.0). PhysioNet. https://doi.org/10.13026/7018-y383 |
| 平台 | PhysioNet 平台综述论文(2026 年发表于 Nature Health),按官方页面的 Cite 按钮生成 |
| 配套论文 | Buelga Suárez ML, Recas J, González-Cabeza S, 等. Performance Evaluation of Smartwatches: Can They Match Clinical Standards for ECG Analysis? Biomedical Signal Processing and Control, 115:109373, 2026 |
| DOI | 版本 DOI 10.13026/7018-y383;最新 DOI 10.13026/rs30-nm12 |
写论文时建议同时注明:使用的版本号(1.0.0)、涉及的设备型号、以及误差是否按设置族分组报告。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实 |
| 数字来源 | 规模、结构、边界三类数字来自 PhysioNet 官方页面与配套论文摘要 |
| 文件核验 | 文件目录为受限访问(未签 DUA 时返回 403),单文件头内容与目录实际命名未直接核验 |
| 不一致说明 | 官方页面目录名 applewatch_serie8 与正文「Apple Watch Series 9」不一致;官方写格式 WDFB 而生态通行写法为 WFDB |
| 论文信息 | 仅读摘要与索引页,未读全文;量级数字引自摘要原文 |
| 未核验内容 | 逐设备记录数与采样率(官方页未统一给出)、中间档位文件名的确切写法、单文件字节数、头文件通道名是否真为 II、SHA256SUMS.txt 与文件总数 1,833 |
| 图像 | 无配图;封面为生成式提示词,不含真实心电图 |
| 免责 | 本文不构成临床建议,也不构成设备选型建议;数据使用须遵守 PhysioNet 受限健康数据使用协议 1.5.0 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「它是四款手表的人群研究」 | 零受试者,信号全部来自心电模拟器 | 官方 Ethics 一节原文:Data collected from synthetic sources |
| 「915 条记录就是 915 个独立样本」 | 36 组设置,每组重复 5 次 | 官方页面:all experiments in quintuplicate |
「applewatch_serie8 里是 Series 8」 |
官方正文写的是 Apple Watch Series 9 | 官方数据描述一节 |
| 「它含房颤数据」 | 只设心率、R 波幅度、ST 段与 2 Hz 方波 | 官方摘要列出的参数范围 |
| 「标签是医师判读的」 | 真值是模拟器设定值,没有人工判读环节 | 官方 Methods 一节 |
| 「智能手表也是十二导联」 | 手表单导联 I;只有参考机是 12 导联 | 官方接线说明与「single-lead (Lead I)」表述 |
| 「注册账号就能下载」 | 须注册登录并签署 DUA 1.5.0 | 官方 Access 区块 |
| 「里面应该有设备导出的 PDF 心电报告」 | 明确写着 NOT included | 官方 Methods 一节 |
| 「合成数据,应该是开放许可」 | 仍是 PhysioNet 受限健康数据许可 1.5.0 | 官方 License 区块 |
| 「可以用来训练心电诊断模型」 | 只有 36 个不同输入,会立刻被背完 | 官方设置矩阵 |
| 「手表测得准就等于能诊断缺血」 | 单导联无法做导联定位,只能测 J 点偏移 | §2.6 与官方用法说明 |
FAQ
Q1:这份数据集里到底有没有病人?
一个都没有。官方页面的伦理一节全文只有一句话——数据来自合成来源(Data collected from synthetic sources)。信号由 METRON PS-440 心电模拟器产生,按设定的心率、R 波幅度与 ST 段偏移输出校准波形,再同时送给四款智能手表和一台飞利浦 TC30 心电图机。因此它没有任何人口学信息、病史、用药或随访,也不涉及知情同意。反过来,它换来了一个真实人群数据永远给不了的东西:每条记录的真值就是模拟器旋钮上的数字,可以直接与设备读数相减得到带物理单位的误差。
Q2:915 条记录听起来不少,为什么不能拿来训练模型?
因为 915 是"设备 × 设置 × 重复"展开后的条数,不是 915 个不同的输入。官方页面写明所有实验都是五重复(quintuplicate),而设置只有四族共 36 组:幅度 4 组、心率 15 组、ST 段 16 组、方波 1 组。模型在这上面很快就能把每一个输入背下来,而它背的是"模拟器输出的第 n 号波形",不是任何一颗心脏的形态。正确的用法是把它当测量基准:按设置分组,比较设备读数与设定值之间的差,而不是按记录切训练测试集。
Q3:为什么它要按 IEC 60601-2-25 来做?这个标准是什么?
IEC 60601-2-25:2011 是国际电工委员会针对心电图机基本安全与基本性能的标准,其中规定了心电图设备在心率、幅度、时限等参数上的准确度要求。它本来是给医院里的心电图机做认证用的,不是给消费电子用的。这份数据集的巧妙之处就在于把这个现成的医疗标准搬到了智能手表上:用同一套设置矩阵、同一台经过校准的模拟器、同一台参考心电图机,于是手表的读数第一次能与一个监管层面认可的允差对照。这也解释了为什么它的结论天然带有监管意义。
Q4:官方说哪款手表更好,我能不能直接照抄这个结论?
不建议直接照抄。官方给出的评价是定性的:Apple Watch Series 9 与 Fitbit Sense 2 在心率、幅度、J 点上的综合表现最好,Samsung Galaxy Watch 6 在 100 bpm 以上不可靠,Withings ScanWatch 变异与误差最大。但这些读数对应的是发布时点的固件、各一台样机、以及特定的台架接线方式。消费设备会随固件更新改变滤波与测量策略,样机之间也可能存在批次差异。合理的用法是把结论当作"当时那批设备的一个可复核读数",而不是型号层面的永久排名。
Q5:数据里没有人,为什么还要签数据使用协议才能下载?
这是 PhysioNet 的项目级设置,与数据里有没有人无关。项目页面的许可区块写明为 PhysioNet Restricted Health Data License 1.5.0,访问政策是"只有签署了指定数据使用协议的注册用户才能访问文件"。实际操作中需要先注册 PhysioNet 账号、在项目页签署 DUA 1.5.0,之后用官方命令行工具或带会话 cookie 的浏览器下载。未登录直接访问文件目录会返回 403,这是正常行为,不代表链接失效。
术语表
| 术语 | 解释 |
|---|---|
| 心电模拟器 | 能输出经过校准的标准心电波形的计量设备,本库用 METRON PS-440 |
| IEC 60601-2-25 | 国际电工委员会关于心电图机基本安全与性能准确度的标准,2011 版 |
| 参考标准 | 被当作真值参照的设备,本库为飞利浦 TC30 心电图机 |
| 患者模拟器 | patient simulator,即心电模拟器的另一种叫法 |
| 五重复 | quintuplicate,同一设置下重复采集五次 |
| 设定值 | 模拟器旋钮上配置的数值,即本库的真值 |
| 重复测量 | replicate,同一输入下的第 n 次采集,彼此不独立 |
| J 点 | QRS 波群终点与 ST 段起点的交界,是 ST 段偏移的测量基准 |
| ST 段抬高 / 压低 | 复极段相对于基线的正向或负向偏移,可提示缺血 |
| R 波幅度 | QRS 主波的峰值幅度,本库设 500–2000 µV |
| 方波响应 | 设备对突变输入的瞬态反应,用于暴露滤波策略 |
| 单导联 | 只有一条测量轴,本库中智能手表均为 Lead I |
| Lead I | 左臂减右臂的电位差,本库手表的实际测量轴 |
| 十二导联 | 额面六个加横面六个投影,构成临床标准配置 |
| 增益 | 每单位物理量对应的数字量,换算物理量时使用 |
| WDFB / WFDB | 波形数据库格式,官方写作 WDFB,生态通行写法为 WFDB |
| 头文件 | 描述采样率、通道名、增益与长度的元数据文件 |
| 校准允差 | 参考设备允许的最大偏差,本库为 ±5% 或 ±40 µV |
| DUA | 数据使用协议(Data Use Agreement),下载前须签署 |
| 计量溯源 | 测量结果向上追溯到标准的链条,官方未给出模拟器侧细节 |
| 台架实验 | bench test,在实验台上以标准源替代真实对象的测试方法 |
| 系统偏差 | 多次测量共同偏离真值的部分,与随机波动相对 |
附录 A:核心数字核对表
| 数字 | 出处 |
|---|---|
| 915 条记录 | 官方页面数据描述一节明写 |
| 0 名受试者 | 官方页面 Ethics 一节:Data collected from synthetic sources |
| 5 台设备(1 参考机 + 4 手表) | 官方页面数据描述一节的设备清单 |
| 心率 30–300 bpm | 官方页面摘要与 Methods 一节 |
| R 波幅度 500–2000 µV | 官方页面摘要与 Methods 一节 |
| ST 段 −800 至 +800 µV | 官方页面摘要与 Methods 一节 |
| 幅度族 4 组、心率族 15 组、ST 段族 16 组 | 官方页面数据描述一节的实验清单 |
| 每组设置重复 5 次 | 官方页面:all experiments in quintuplicate |
| 参考机每导联录 10 秒 | 官方页面 Methods 一节的 electrocardiograph 部分 |
| 参考机校准允差 ±5% 或 ±40 µV | 官方页面 Methods 一节 |
| 版本 1.0.0,发布日 2025-04-09 | 官方页面版本列表与题头 |
| 版本 DOI 10.13026/7018-y383 | 官方页面 Discovery 区块 |
| 许可 Restricted Health Data License 1.5.0 | 官方页面 License 区块 |
| 论文:BSPC 115 卷 109373,2026-04-15 | 期刊索引页;官方页面标注「pending revision」 |
| 12 导联(仅参考机) | 官方页面 Methods 一节:standard 12-lead ECG cables |
| 手表单导联 Lead I | 官方页面:formatted as single-lead (Lead I) |
| PDF 图形不收录 | 官方页面:These files are NOT included in the database |
附录 B:数字的来源分层
第一层:官方页面。 记录总数、设备清单、实验族与设置数、重复次数、三项参数的标称范围、参考机的录制时长与校准允差、版本与日期、DOI、许可、文件格式与 PDF 不收录的声明。这些直接来自项目主页的摘要、方法、数据描述与访问区块。
第二层:配套论文与会议摘要。 Withings 幅度误差超过 11%、Fitbit 在 500 µV 处约 1.2%、Apple 约 6.7%、Apple 的 J 点误差多数低于 10 µV 而 +300 µV 处达 51 µV、Samsung 与 Withings 分别超过 112 µV 与 117 µV——这些量级数字出自论文与会议摘要的原文,不是从发布文件里重新计算。
第三层:第三方核对。 ECGBench 页面给出的逐设备记录数与采样率(参考机 195 条 / 12 导联 / 500 Hz / 11.0 秒;Apple 180 条 / 1 导联 / 512 Hz / 27.3–30.0 秒;Samsung 179 条 / 500 Hz / 30.002 秒;Fitbit 181 条 / 250 Hz / 30.0 秒;Withings 180 条 / 300 Hz / 30.0 秒)、发布文件总数 1,833、以及"全部 720 条手表记录的头文件通道名写作 II"的核对结论。该页面自称按发布自带的 SHA256SUMS.txt 校验后统计,但官方页面未给出这些数字,本文未直接核验,不作为结论使用。
第四层:未核验。 中间档位文件名的确切写法(例如 1000 µV 与 +300 µV 的实际拼写)、单文件字节数、头文件内的完整字段、格式转换过程中是否重采样。这些需要签署协议下载后按目录与头文件确认,正文中凡涉及处均只做定性表述或明确标注为待确认。
附录 C:完整参考文献
| 编号 | 文献 | 链接 | 用途 |
|---|---|---|---|
| 1 | Electrocardiogram-Capable Smartwatches v1.0.0 | https://physionet.org/content/ecg-capable-smartwatches/1.0.0/ | 全部规模、结构、边界数据的来源 |
| 2 | PhysioNet 平台综述(2026,Nature Health) | https://doi.org/10.1038/s44360-026-00096-z | 托管模式与引用规范 |
| 3 | Buelga Suárez ML 等,Performance Evaluation of Smartwatches,BSPC 115:109373,2026 | https://doi.org/10.1016/j.bspc.2025.109373 | §7.4 的误差量级与设备结论 |
| 4 | 同题会议摘要,European Journal of Cardiovascular Nursing 24 (2025) | https://doi.org/10.1093/eurjcn/zvaf122.076 | §7.4 的分参数量级 |
| 5 | IEC 60601-2-25:2011 | https://webstore.iec.ch/en/publication/16851 | 采集协议与允差的来源标准 |
| 6 | Perez MV 等,Large-Scale Assessment of a Smartwatch to Identify Atrial Fibrillation,NEJM 2019 | https://doi.org/10.1056/nejmoa1901183 | 官方页参考文献,说明筛查类证据的形态 |
| 7 | Lubitz SA 等,Fitbit Heart Study,Circulation 2022 | https://doi.org/10.1161/CIRCULATIONAHA.122.060291 | 同上 |
| 8 | ECGBench 对该库的格式与记录结构核对页 | https://huggingface.co/spaces/SEARCH-IHI/ECGBench | 附录 B 第三层数字的来源 |
附录 D:任务代码
任务一:按设置族建立真值表
import re
import pandas as pd
#-- 记录名语法:<族><设定值>_<重复序号>
def parse_record(name):
if name.startswith('sqr-'):
return 'sqr', '2hz', int(name.rsplit('_', 1)[1])
m = re.match(r'^(amp|f|st)-?([a-z0-9]+)_(\d)$', name)
return m.group(1), m.group(2), int(m.group(3))
def truth(fam, val):
#-- 把设定值换算成带单位的真值
if fam == 'amp':
return float(val), 'uV'
if fam == 'f':
return float(val), 'bpm'
if fam == 'st':
return (-1.0 if val.startswith('m') else 1.0) * float(val[1:]) * 100, 'uV'
return float(val.replace('hz', '')), 'Hz'
rows = []
for n in ['amp500_0', 'amp2000_4', 'f30_0', 'f300_4', 'st-m8_0', 'st-p8_4', 'sqr-2hz_0']:
fam, val, rep = parse_record(n)
v, u = truth(fam, val)
rows.append({'record': n, 'family': fam, 'setting': val,
'replicate': rep, 'truth': v, 'unit': u})
df = pd.DataFrame(rows)
print(df.to_string(index=False))
任务二:按设置分组,量设备的误差
import wfdb
import numpy as np
import pandas as pd
#-- 同一设置的五次重复属于同一实验单元,先取中位读数再进统计
def device_reading(path):
rec = wfdb.rdrecord(path, physical=True)
x = rec.p_signal[:, 0]
#-- 示意:用峰峰值近似代表幅度读数,正式分析请按标准测量定义
return float(np.ptp(x)), rec.fs, rec.sig_name[0]
records = [f'fitbitsense2/amp_test/amp500_{i}' for i in range(5)]
rows = [(r, *device_reading(r)) for r in records]
df = pd.DataFrame(rows, columns=['record', 'ptp', 'fs', 'sig_name'])
print(df.to_string(index=False))
#-- 真值 500 µV 已知,误差直接可减
print('中位读数', df['ptp'].median(), ' 与设定值之差', df['ptp'].median() - 500)
第二段代码给的是最粗糙的口径,用途不是下结论,而是演示本库的分析骨架:真值已知 → 读数可测 → 误差直接相减 → 按设置分组统计。
附录 E:如果只记五件事
| 序号 | 记住什么 | 为什么 |
|---|---|---|
| 1 | 915 条记录、36 组设置、每组 5 次重复、0 名受试者 | 这四个数字定义了它的一切用法与限制 |
| 2 | 真值是模拟器设定值,不是医师判读 | 这是它唯一无可替代的地方 |
| 3 | 有效样本量是 36 的量级,不是 915 | 按记录做统计会把显著性算虚 |
| 4 | 手表是单导联 I,参考机才是十二导联 | 决定了它能问与不能问的问题边界 |
| 5 | 它是标尺不是粮仓 | 拿它训练会立刻遇到输入枯竭 |
编辑说明
本文的核验时间为 2026 年 10 月 28 日。核对方式为直接访问 PhysioNet 项目页的完整正文(摘要、背景、方法、数据描述、用法说明、伦理、致谢、参考文献、版本列表、许可区块),并以配套论文的期刊索引页与会议摘要页补充结论量级。文件目录为受限访问,未签署数据使用协议前返回 403,因此单文件的头文件内容、逐设备采样率与中间档位文件名的确切写法未能直接核验,正文中凡涉及处均已标注为第三方核对值或待确认。官方页面内部存在两处不一致,本文按原文照录并分别指出:设备目录名 applewatch_serie8 与正文「Apple Watch Series 9」不符;格式写作 WDFB 而生态通行写法为 WFDB。未覆盖的内容包括:单文件字节数、头文件完整字段、格式转换是否重采样与统一增益、以及模拟器自身的计量溯源链。本文按要求只写规模、结构、边界三类数字,凡官方页与论文摘要未明写的一律不作推断。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- bigideaslab-step-hr-smartwatch——共享标签:生理信号 / 可穿戴设备 / 心电信号
- physionet-cinc-2017——共享标签:生理信号 / 心电信号 / 心血管疾病
- mit-bih-afdb——共享标签:生理信号 / 心电信号 / 心血管疾病
- kingston-icu-af——共享标签:生理信号 / 心电信号 / 心血管疾病
- qol-stress——共享标签:生理信号 / 可穿戴设备 / 心电信号
- bidsleep-dataset——共享标签:生理信号 / 可穿戴设备
- consumer-grade-wearables——共享标签:生理信号 / 可穿戴设备
- parkinsons-disease-smartwatch——共享标签:生理信号 / 可穿戴设备
- covidentify——共享标签:可穿戴设备
- incartdb——共享标签:生理信号 / 心电信号 / 心血管疾病
- wctecgdb——共享标签:生理信号 / 心电信号
- georgia-12-lead-ecg-challenge——共享标签:生理信号 / 心电信号 / 心血管疾病
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

