开胸术后虚弱患者可穿戴运动信号数据集

立陶宛康复医院 80 名 65 岁以上开胸术后虚弱患者,用 Polar H10 胸带采集五项次极量运动测试的 130 Hz 单导联心电与 200 Hz 三轴加速度,共 196 条记录、2.5 GB

来源 立陶宛 Kulautuva 康复医院(考纳斯大学医院体系)2020-11-19 至 2022-01-03 招募的开胸术后虚弱患者,Polar H10 胸带采集,PhysioNet 开放发布发布时间: 2026-10-19最后更新: 2026-10-20 阅读 18
开胸术后虚弱患者可穿戴运动信号数据集

信息速览

数据集名称开胸术后虚弱患者可穿戴运动信号数据集
数据类型生理信号,时序数据,临床变量,开放获取
规模80 名患者(337 人筛选,99 人符合纳入,19 人因技术问题丢失信号);196 条记录
接入方式立陶宛 Kulautuva 康复医院(考纳斯大学医院体系)2020-11-19 至 2022-01-03 招募的开胸术后虚弱患者,Polar H10 胸带采集,PhysioNet 开放发布
AI 就绪度

这套数据来自立陶宛考纳斯(Kaunas)附近的 Kulautuva 康复医院,对象是刚做完开胸手术、正在做住院康复的老年患者。采集方式很朴素:胸前绑一条 Polar H10 胸带,让患者依次完成五项次极量运动测试,同步记下心电与三轴加速度。最终发布的是 80 名患者、196 条记录、未压缩 2.5 GB 的信号,配套一张临床变量表和一张测试可得性表。

它解决的问题不是「怎么识别走路」,而是「虚弱这件事能不能被可穿戴设备量化」。虚弱在临床上是一个多维状态,涉及肌力、耐力、活动量与营养,传统评估靠量表与现场测试,耗时且需要场地。如果一条胸带能在患者做常规康复训练时把这些维度测出来,评估就能下沉到病房甚至家中。这套数据是这个设想的第一个公开实证基础。

上手时建议先看 test-availability.csv 再碰信号。80 人里不是每个人都做了全部五项测试,有人因头晕跳过步态分析,有人没做功率自行车。先把每项测试的实际人数列出来,再决定研究哪一项,能省掉大量返工。

§1 它是什么:一次康复住院的横断面切片

1.1 一句话定义与三条边界

这是一套以运动测试会话为记录单位的可穿戴信号数据集,来自单中心、单病种、单一人群。

「以测试会话为单位」意味着主键是「患者 × 会话 × 测试类型」的组合,不是患者,也不是连续时间。两次会话之间没有信号,测试之间也有间隔。做时间序列建模时,不能把它当成一条连续记录。

「单中心」意味着所有数据来自 Kulautuva 康复医院一家机构,康复流程、护理习惯、设备型号都是同一套。跨机构比较时,机构效应与人群效应无法分离。

「单病种」意味着全部是开胸术后患者。这个人群的共性是刚经历过体外循环与胸骨切开,活动耐量处于术后恢复期,与社区老年人的虚弱机制不完全相同。

1.2 数据的四个组成部分

组成 规模 粒度 用途
心电信号 与记录数一致 一次会话一条 心率反应、心率变异性、心律异常
加速度信号 与记录数一致 一次会话一条 步态、动作节律、活动强度
临床变量表 80 行 一人一行 虚弱评分、心功能分级、步行距离
测试可得性表 80 行 一人一行 处理缺失,界定每项测试的实际样本量

四者通过患者标识连接。注意信号文件里只有患者标识与会话编号,没有年龄、性别、评分这些变量,必须回到 subject-info.csv 关联。

1.3 五项测试的负荷结构

五项测试不是随意拼的,它们覆盖了从「器械定量负荷」到「日常功能动作」的连续谱:

测试 标注代码 负荷类型 主要测什么
功率自行车 VELO 器械、递增 心肺耐力上限
六分钟步行 6MWT 自定步速、次极量 功能耐量
爬楼 STAIR 抗重力、短时 下肢力量与平衡
起立行走 TUG 复合动作 移动能力与转换效率
步态分析 GAIT_ANALYSIS 匀速行走 步态时空参数

这个排列有实用含义:越靠前的测试负荷越可控、越靠后的越接近真实生活。研究心率恢复曲线适合用前者,研究跌倒风险适合用后者。

1.4 样本漏斗:337 → 99 → 80

数字必须按顺序读,跳读会得出错误结论。

337 人接受了资格评估,其中 99 人满足四条纳入标准:年龄不低于 65 岁、EFS 评分不低于 4 分、六分钟步行距离不低于 150 米、同意参与。最终有 19 人因技术问题丢失信号,发布 80 人。

这个漏斗有三层含义。第一,虚弱的判定用的是 EFS 不低于 4,这是一个相对宽松的门槛,纳入的是「有虚弱但不算极重」的人群。第二,六分钟步行不低于 150 米这条把无法完成测试的人排除在外,进一步压窄了虚弱谱的上端。第三,19 人因技术问题丢失,说明现场采集的稳定性有限,这个丢失比例约 19%,在真实世界可穿戴研究里属常见水平,但对小样本研究来说不算小。

1.5 设备与采样率的实际含义

Polar H10 是一款消费级胸带,官方定位是心率监测,不是临床级心电设备。把它用于研究,需要理解三个技术细节。

第一是单导联。单导联心电只能看到心电向量在一个方向上的投影,对 ST 段改变、分支阻滞这类需要多导联判断的异常,能力有限。它能做的是心率、心率变异性与心律规则性的分析,这三项恰好是虚弱与自主神经功能关联最紧的指标。

第二是采样率。心电 130 Hz 相对于临床心电机的 250–500 Hz 偏低,但对心率变异性分析够用,因为 HRV 关注的频段上限通常到 0.4 Hz,奈奎斯特余量充足。加速度 200 Hz 是活动识别与步态分析的常规水平。

第三是时钟稳定性。消费级设备的采样时钟靠内部晶振,温度与电量都会影响频率。官方说明波动可达 0.2%,并已重采样至均匀栅格。这个处理很重要:如果不重采样,一段两小时的记录末尾可能偏移十几秒,做时频对齐时会系统性出错。

1.6 与同类可穿戴虚弱研究的差别

公开的可穿戴虚弱数据大致分三类,这套属于其中最窄也最可控的一类。

类型 采集场景 优势 局限
自由生活长期监测 居家、数天到数周 反映真实活动模式 无金标准时点,标签靠量表回溯
实验室标准化任务 实验室、分钟级 条件可控、可重复 生态效度低
康复期临床测试 病房或康复中心 有临床评分同步、负荷明确 人群特化、样本小

这套数据落在第三类。它的独特价值在于「临床评分与信号同步采集」——EFS、NYHA、六分钟步行距离这些变量与信号来自同一次住院,时间间隔以天计,不存在量表回溯带来的时间错配。

§2 数据构成:文件、字段与标注

2.1 目录结构

根目录下是两个信号文件夹与四个元数据文件:

wearable-exercise-frailty-1.0.0/
├── acc/                    三轴加速度记录
├── ecg/                    单导联心电记录
├── ANNOTATORS              标注类型声明(213 B)
├── LICENSE.txt             许可文件(0 B)
├── RECORDS                 记录清单(2.9 KB)
├── SHA256SUMS.txt          校验和(48 KB)
├── subject-info.csv        患者基线(20.9 KB)
└── test-availability.csv   测试可得性(2.6 KB)

LICENSE.txt 显示为 0 字节,这不是下载损坏,而是官方文件本身为空。许可条款以 PhysioNet 页面与 DOI 元数据为准,不要指望从这个文件读到内容。

2.2 记录命名规则

记录名格式为 xxx_y_zzz:

  • xxx 是三位患者标识
  • y 是会话编号
  • zzz 是信号类型,取值为 ecg 或 acc

举例来说,073_1_ecg 表示 073 号患者第一次会话的心电记录,073_1_acc 是同一次会话的加速度记录。两者共享患者与会话编号,因此天然配对。

这个命名规则有一个实际后果:同一患者的多次会话在文件名上只差一个数字。批量读取时如果用前缀匹配,很容易把 073_1 与 073_10 混在一起,排序时必须按字段拆分后转整数比较,不能按字符串排序。

2.3 WFDB 三件套

每条记录由三个文件组成:

后缀 内容 说明
.hea 头文件 采样率、信号数、增益、基线、导联名、时长
.dat 二进制信号 按头文件声明的格式与增益存放
.atr 标注 测试阶段的起止标记

用 WFDB 工具链读取时,rdrecord 只需给记录路径,三个文件会自动识别。rdann 读取标注,返回样本点位置与标注代码。

.hea 里要注意 ADC gain 与 baseline 两个字段。Polar H10 的心电是数字直出,增益通常是 1,但如果头文件里写了非 1 的增益而没有按它换算,读出来的毫伏值会整体偏移一个倍数。检查方法是看静息段的心电幅值是否在 0.5–2 mV 区间,明显偏离就说明换算有问题。

2.4 五类标注代码

.atr 文件里的标注代码对应五项测试:

代码 测试 起止含义
VELO 功率自行车 蹬车开始到停止
6MWT 六分钟步行 起步到停步
STAIR 爬楼 上楼开始到结束
TUG 起立行走 起身到重新坐下
GAIT_ANALYSIS 步态分析 跑步机行走段

标注给的是起止点,段内的休息、准备、恢复不在标注范围内。这意味着 6MWT 标注段内可能包含患者中途停步,GAIT_ANALYSIS 段前可能混有准备动作。处理时若要严格区分行走与静止,需要结合加速度信号自行切分。

2.5 subject-info.csv 的字段

官方未在页面上逐列列出字段名,但从描述可确定包含以下变量:

变量 类型 说明
患者标识 整数 与信号文件名中的 xxx 对应
年龄 整数 纳入门槛为不低于 65 岁
性别 分类 —
EFS 评分 整数 Edmonton 虚弱量表,纳入门槛为不低于 4
NYHA 分级 分类 心衰功能分级,073 号患者缺失
六分钟步行距离 数值 单位米,纳入门槛为不低于 150
步长 数值 318 号患者缺失
步时 数值 318 号患者缺失

使用时先做一次缺失扫描。官方明确点名的缺失只有 073、254、203、250、269、318 六位患者,但这是他们主动披露的部分,不排除还有其他字段存在零星缺失。

上述字段是从官方描述反推的清单,不是从文件里读出的列名。真实的列名可能带单位后缀、可能用缩写、也可能把性别编码为 0/1 而非字符串。第一次打开时先跑三行代码——读表头、看前五行、统计每列非空计数——把实际情况钉下来,再动手写分析脚本。这个顺序能避免把「列名对不上」误判成「字段缺失」。

2.6 test-availability.csv 的作用

这张表的价值常被低估。它是一张「患者 × 测试」的布尔矩阵,标明每位患者实际完成了哪几项。

没有这张表,你会遇到两类错误。一类是把「没做」当成「做了但信号为空」,在统计时把缺失计为负例。另一类是按 80 人算出每项测试的样本量,而实际某项只有七十余人做过,导致置信区间被低估。

正确用法是在读入信号之前先读这张表,为每项测试单独确定分母。做跨测试的比较时,只能在同一批「全部完成五项」的患者子集上做,否则组间不可比。

这张表还隐含一层信息:测试的可得性本身可能携带临床含义。因头晕跳过步态分析的两位患者,其移动能力与平衡状态大概劣于完成者。如果直接把「未做」当作随机缺失处理,等于假设缺失与病情无关,而这里恰恰相反。严谨的做法是把「可得性」当成一个派生变量纳入分析——例如统计每位患者完成的测试项数,用它在敏感性分析里分层,看结论是否稳定。

2.7 信号的实际长度与文件体积

未压缩总大小 2.5 GB,ZIP 包 2.3 GB,196 条记录。

反推一下量级:196 条记录对应约 2.5 GB,平均每条约 13 MB。心电 130 Hz 单导联按 16 位存,每秒 260 字节,十分钟约 156 KB;加速度 200 Hz 三轴按 16 位存,每秒 1200 字节,十分钟约 720 KB。两者相加不到 1 MB,与 13 MB 的平均值差距很大。

这个差距说明记录的实际时长比「十分钟」长得多,或者存储格式不是紧凑的 16 位。下载后先用 wfdb.rdheader 把每条记录的时长打出来,能立刻看清真实分布,避免按估算值设计内存分配。

2.8 数据完整性的自检

官方提供 SHA256SUMS.txt(48 KB),覆盖全部记录文件。这个文件值得用一次:196 条记录每条约 6 个文件,近 1200 个哈希值,48 KB 的体量与之相符。

校验命令是 sha256sum -c SHA256SUMS.txt。若在解压后立刻跑一次,能把下载中断导致的截断文件挡在分析之前。心电与加速度的 .dat 是二进制,截断不会报错,只会在读取时得到一段静默的零值,这类错误极难在事后发现。

§3 怎么拿到:开放下载与三条使用约束

3.1 获取路径

这套数据是 PhysioNet 的开放访问条目,不需要凭证,不需要签数据使用协议,也不需要完成 CITI 培训。直接访问条目页下载 ZIP 即可。

许可为 CC BY-NC-SA 4.0。三个条款的实际含义:

条款 要求 常见误解
BY(署名) 使用时注明原作者与出处 认为引用论文就够了;实际要求标注数据来源
NC(非商业) 不得用于商业目的 认为「内部研究」都算非商业;实际要看最终目的
SA(相同方式共享) 衍生作品以同样许可发布 认为只约束原样分发;实际也约束改编作品

SA 条款对做产品的人影响最大。如果你的模型权重是在这套数据上训练的,那么权重是否构成「衍生作品」需要法律判断;保守做法是把训练数据与模型分开授权,并在文档里写明数据来源与许可。

3.2 下载与校验

wget https://physionet.org/static/published-projects/wearable-exercise-frailty/wearable-based-signals-during-physical-exercises-from-patients-with-frailty-after-open-heart-surgery-1.0.0.zip
unzip wearable-based-signals-during-physical-exercises-from-patients-with-frailty-after-open-heart-surgery-1.0.0.zip
cd wearable-based-signals-during-physical-exercises-from-patients-with-frailty-after-open-heart-surgery-1.0.0
sha256sum -c SHA256SUMS.txt | grep -v OK

最后一行只打印校验失败项。没有输出即全部通过。

解压后的目录名很长,因为 PhysioNet 的静态包用的是条目标题的完整转写。若在脚本里硬编码这个目录名,将来换机器或换版本时容易断。建议解压后立刻改成固定短名并记下版本:

mv wearable-based-signals-during-physical-exercises-from-patients-with-frailty-after-open-heart-surgery-1.0.0 wef-1.0.0

校验有一个容易忽略的细节:SHA256SUMS.txt 里的路径是相对路径,必须在解压后的根目录执行才有意义。若在上一级目录跑,所有行都会报 No such file or directory,看起来像全部失败,实际只是路径不对。判断方法很简单——如果失败率是 100%,问题一定在路径而不在文件。

3.3 三条使用约束

第一条:不要按 196 做样本量。 196 是记录数,患者数是 80。任何声称样本量为 196 的分析都会高估自由度。患者级统计必须以 80 为分母,并在方法部分写明聚合方式。

第二条:不要跨测试合并时长。 五项测试的时长差异很大,功率自行车可能十几分钟,爬楼只有几十秒。若把不同测试的信号拼成一条长序列,会引入与测试类型完全混淆的时长效应。

第三条:不要在未核极性的情况下用加速度算姿态。 官方明确说胸带可能戴反。用 ACC_X 当垂直轴之前,先取一段静息数据看直流分量:垂直轴应接近 +1 g 或 -1 g(取决于坐标系定义),另两轴接近 0。若 ACC_Y 才是那个接近 ±1 g 的轴,说明这位患者的胸带戴反了。

这三条之外还有一条不成文但很实际的约束:不要在论文里把「次极量」写成「运动耐量」。 次极量测试测到的是患者在预设终点前的表现,不是心肺能力的上限。用它推断最大摄氧量需要额外的外推假设(例如按年龄预测最大心率再线性外推),而这个假设在开胸术后人群里恰好最不可靠——术后患者的变时反应常被药物抑制,β 受体阻滞剂会让心率上不去。若数据里没有用药记录,任何向极量指标的外推都应明确标注为推测。

§4 质量与已知问题

4.1 官方披露的十二项局限

官方把局限分成信号层面与临床层面两组,共十二项。逐条看,每项都对应一种具体的处理动作。

信号层面的七项:

问题 影响 处理
采样率波动约 0.2% 长记录时频漂移 已重采样,无需处理
部分心电质量差 心率估计出错 用信号质量指数筛除
六分钟步行超时 段长不一致 按实际段长归一化
测试前后有运动伪影 首尾段不可用 裁掉标注点前后数秒
步态分析起止只精确到分钟 三十秒窗口界定不准 用加速度自检步态起点
GAIT_ANALYSIS 前混准备期 段首不是纯行走 同上
胸带可能戴反 轴向互换 按静息段直流分量判极性

临床层面的五项:

  • 073 号患者缺 NYHA 分级
  • 254 号患者步态分析结果有误
  • 203 与 250 号患者因头晕未做步态分析
  • 269 号患者未做功率自行车测试
  • 318 号患者缺步长与步时

这五项里有三项是「整项缺失」而非「字段缺失」,因此会直接改变分母。做步态分析时实际可用 78 人,做功率自行车时实际可用 79 人。

十二项局限里,真正会改变结论的是三项。六分钟步行超时影响的是所有按固定窗长切片的分析;胸带戴反影响的是所有依赖方向语义的特征;步态分析起止只精确到分钟影响的是所有三十秒窗的步态参数。其余九项更多是「需要注意」而非「需要修正」——采样率已由官方重采样解决,个别患者的字段缺失只需在分母里扣掉。

这份局限清单的写法值得单独说一句。多数公开数据集只写一句「数据存在局限,使用时请注意」,而这套数据逐条列出十一个问题并点名患者编号。这种披露水平对使用者是净收益:它把「发现坑」的成本从每个人各付一次,变成官方付一次。在评估一个数据集是否值得投入时,文档里局限部分的长度往往比样本量更有预测力。

4.2 官方未披露但可推断的问题

有几类问题官方没有点名,但从数据结构可以推断,使用前应当自己核一遍。

会话数不均。 196 条记录、80 名患者、两类信号,若每人都做一次会话,记录数应为 160。实际 196 条,说明有 36 条额外记录来自多次会话。哪些患者有多次会话、多出来的会话是否与康复进度相关,官方未说明。这个信息对纵向分析很关键。

EFS 评分的评分者一致性。 EFS 有九个领域,其中认知与功能表现需要现场操作,评分依赖评估者。数据里没有第二个评分者,因此无法估计评分信度。

六分钟步行距离的测量方式。 是走廊步行还是跑台步行,官方未明确。两者的距离不可直接比较,因为跑台没有转弯与加减速。

测试顺序是否固定。 若五项测试按固定顺序进行,后做的测试会受前面测试的疲劳影响。官方未说明顺序是否随机化,这会影响对「同一患者不同测试间比较」的解释。

4.3 缺失结构与处理策略

缺失分三种,处理方式完全不同。

整项缺失(203、250 未做步态分析,269 未做功率自行车):只能用可得样本,且在报告中写明分母。不要用插补,因为缺失机制是「患者当时不适」,属于非随机缺失。

字段缺失(073 缺 NYHA,318 缺步长步时):变量级缺失,可用多重插补,但要在敏感性分析里对比插补前后的结论。

信号质量缺失(部分心电质量差):这是最容易被忽略的一类。它不出现在任何表格里,只有读了信号才知道。建议先算一个信号质量指标,把不合格的记录列出来,再看这批记录是否集中在某些患者或某些测试上。若集中,说明存在系统性偏差。

信号质量怎么量化。 「质量差」听起来是主观判断,实际可以用几条可计算的判据把它变成可复现的筛选规则。单导联心电上最常用的是四条:

判据 算法 典型阈值 抓什么
R 峰检出率 用 XQRS 检测,与按 RR 间期推算的期望峰数对比 低于 0.8 判不合格 漏检,多因大幅运动伪影
RR 间期变异系数 相邻 R 峰间隔的标准差除以均值 超过 0.5 需人工看 误检产生的伪峰
高频噪声占比 40 Hz 以上功率与 1–40 Hz 功率之比 超过 0.3 判噪声重 肌电干扰、电极接触不良
基线漂移幅度 0.5 Hz 以下分量与整体幅度之比 超过 0.5 判漂移重 呼吸、胸带松动

四条不必全用,取前两条即可覆盖大部分问题。要注意阈值没有普适标准——这套数据是运动中的记录,伪影本来就比静息记录多,用静息数据的阈值去筛会把大量有效信号判成废品。建议先在十几个已知可用的段上看分布,再定阈值,并把定阈值的过程写进方法。

加速度侧的质量判据不同。三轴合成的模长在静止时应接近 1 g,运动中围绕 1 g 上下波动。若模长长期偏离 1 g 超过两成,通常意味着胸带松动或滑落;若模长频繁出现接近 0 的短时跌落,说明信号有丢包。这两种情况都会让基于能量的活动强度指标系统性偏低。

质量筛选要在分组之前做。 一个常见的错误顺序是:先算特征,发现有异常值,再把异常样本删掉,然后重新划分交叉验证。这个顺序会让测试集的信息通过「删谁」这个动作泄漏到训练里。正确做法是先按质量判据冻结一份合格样本清单,把清单连同判据一起写进补充材料,之后所有的划分都在清单内进行。

4.4 一个容易踩的坑:把会话当患者

做分组交叉验证时,如果按记录随机划分训练集与测试集,同一位患者的不同会话可能同时出现在两侧,造成信息泄漏。

正确做法是按患者标识分组,用 GroupKFold 一类的划分器。80 人做五折,每折 16 人。这个规模下,折间方差会很大,报告中应给出多次重复划分的均值与区间,而不是单次结果。

§5 能做什么:四类任务与可执行骨架

5.1 任务一:从信号估计虚弱程度

最直接的任务是用信号预测 EFS 评分,或做二分类(不低于 4 分 vs 低于 4 分)。

需要注意,本数据集的全部样本 EFS 都不低于 4,二分类在这个数据上不可行。可行的做法是回归,预测 EFS 的具体分值,范围大致在 4 到 17 之间。

特征侧可以从三条线取:心率恢复(测试结束后 60 秒的心率下降幅度)、心率变异性(静息段与运动段的 RMSSD 对比)、活动强度(加速度的均方根与步频)。这三条线分别对应自主神经功能、心肺适能与肌肉活动能力,与 EFS 的领域构成有对应关系。

三条线的具体算法值得展开,因为不同实现之间的差异会直接改变结论。

心率恢复。 从标注结束点起取 60 秒,用 XQRS 定位 R 峰,得到逐搏心率序列,再对时间做一次线性拟合取斜率,单位是「次/分/分」。文献里常用的口径是「峰值心率减去第一分钟末心率」,这个口径对结束点极敏感——若结束点标早了,峰值会被截掉;标晚了,第一分钟里已经包含恢复段。稳妥做法两种口径都算,看结论是否一致。

心率变异性的对比口径。 静息段取测试开始前的那段坐姿休息,运动段取测试中段稳定的 2 分钟。两段的 RMSSD 之差反映的是副交感撤除的幅度。这里有个陷阱:运动段的 RMSSD 通常极低,接近测量噪声底,此时数值主要由 R 峰检测精度决定而非生理状态。若某位患者运动段 RMSSD 恰好接近零,更可能是信号质量差,不应当作「副交感完全撤除」来解释。

活动强度。 加速度三轴先合成模长,再减去重力分量,得到动态加速度,算其均方根作为强度指标。步频可以从动态加速度的功率谱主峰取。要注意胸带位置在胸骨,采集的是躯干加速度,与放在腰部或脚踝的设备相比,对步频的响应偏弱、对呼吸与躯干摆动更敏感,跨设备比较时不可混用。

样本量 80 做回归,特征数应控制在 8–10 个以内。用留一交叉验证比五折更稳,因为每折只有一人,方差主要来自个体差异而非划分随机性。

还有一个必须先想清楚的问题:目标变量选哪个。 EFS 总分是九领域的求和,把它当连续变量回归隐含假设九个领域的权重相同;但信号里的心率恢复主要反映心肺与自主神经,对应的是「功能表现」这个领域,与「社会支持」「用药」几乎无关。更合理的做法是先用 EFS 的领域分做分层,看信号特征与哪个领域关系最强,再决定是否用总分。若关系只集中在两三个领域,用总分回归会稀释信号,得到偏低的 R²,进而被误读为「可穿戴测不出虚弱」。

5.2 任务二:测试类型识别与段落切分

给定一段信号,判断它属于五项测试中的哪一项。这个任务的实用价值在于自动化处理流程。

第五项测试的加速度模式差异明显:功率自行车是周期性蹬踏、垂直方向为主;六分钟步行是低频步态节律;爬楼有明显的高度变化;起立行走是短促的爆发动作;步态分析是稳定匀速。用十秒窗的时频特征加一个梯度提升树,在这个任务上通常能到较高准确率。

这里有一个必须先处理的问题:同一条记录里包含多项测试吗? 从记录命名看,一条记录对应一次会话的一种信号,而一次会话里可能依次完成五项测试。若如此,那么「测试类型识别」的样本单位不是记录而是标注段,一条记录会被切成五段,各段的标签来自相邻两个标注点之间的区间。这意味着类别不平衡的来源不是记录数,而是段数——六分钟步行的段长远长于爬楼,按窗切分后前者会产生远多于后者的样本。训练时若按窗均匀采样,模型会偏向长时段测试;按段均衡采样,结果才反映分类能力本身。

段长差异还影响特征窗口的选择。爬楼只有几十秒,用十秒窗只能得到三五个样本;功率自行车可达十几分钟,同样的窗能得到上百个。建议对短段改用五秒窗或直接整段提特征,并在方法里写清窗口策略,因为这是复现时最容易对不上的参数。

真正的难点不在分类,而在边界检测。标注给的起止点与真实动作起止有偏差,尤其是步态分析段。可以先做分类,再用分类结果的置信度曲线反推边界,比直接信任标注更稳。

还有一个诚实的提醒:这个任务的准确率容易虚高。五项测试的动作模式差异很大,而所有样本都来自同一台设备、同一个佩戴位置、同一批患者,模型可能学到的是「这位患者蹬车时的特有抖动」而不是「蹬车这个动作」。检验方法是做留一患者交叉验证——准确率若比随机划分明显下降,说明模型依赖了患者身份而非动作本身。这类验证在小样本上代价很低,值得作为标准动作。真要检验泛化到其他设备,只能另找数据集,这套数据无法提供答案。

5.3 任务三:康复进展的纵向刻画

对有多次会话的患者,可以刻画同一人在康复过程中的信号变化。这是这套数据相对同类资源最有价值的地方——多数公开可穿戴数据是横断面的,纵向的很少。

分析框架建议这样搭:以会话为时间轴,每个会话提取一组特征(静息心率、心率恢复斜率、步频、步幅估计、活动强度),看这些特征随会话编号的变化趋势。趋势的斜率可以解释为康复速度。

限制要说清:会话间隔不固定,且会话次数本身可能与病情相关(恢复慢的人住院久、会话多)。因此「会话编号」不是等距时间轴,做趋势分析时应以实际日期为横轴,而日期信息需要从记录的时间戳里取。

这个混杂需要更具体地说明。假设康复方案是每周两到三次,病情重的人住院更久、会话更多,于是「会话数」与「基线虚弱程度」正相关。若把会话数当成康复努力程度的代理变量,就会得到「越虚弱康复越积极」这类反直觉结论——实际只是住院时间的副产物。

更麻烦的是退出偏倚。能在康复中期留下第三次、第四次会话记录的人,本身是那些体力恢复到能继续训练的人。中途因并发症转出或放弃的患者,其最后几次会话不在数据里。于是趋势分析看到的改善幅度会比真实情况乐观,而这个偏见表现在数据上是「会话多的患者都进步了」,很难与「多训练导致进步」区分。

可操作的处理有两条。第一条是只做配对比较:只取有至少两次会话的患者,比较首次与末次的差值,不做外推。70 多人里实际有多次会话的比例不高,配对样本会进一步缩小,但结论更保守也更可信。第二条是把会话间隔作为协变量显式纳入,而不是默认等距。若两次会话相隔两周与相隔一周被当成同样的「一步」,斜率就没有生理含义。

还有一点容易被忽略:信号特征本身就随测量条件漂移。 不同日期采集时患者当天的状态、是否服药、室温、胸带电量都会变。这些因素在横断面研究里是噪声,在纵向研究里会变成与时间共线的系统性误差。若条件允许,在两次会话之间插一次同条件的重复测量(同一测试、同一时段),可以估计测量重复性的上界,从而判断观测到的变化是否超出噪声。

5.4 任务四:信号质量评估方法

这套数据的一个副产品用途是研究「消费级设备在临床场景下的信号质量」。

Polar H10 在运动状态下的心电质量会显著下降,尤其是爬楼与功率自行车接近力竭时。可以构造一个质量评分任务:人工标注一批片段为可用/不可用,训练模型自动判别。这类方法在居家监测产品里需求很大。

做这个任务前要先解决标签从哪来。人工标注两个标注者各自看一遍是理想做法,但这套数据没有多人标注。退一步的办法是用可计算的伪标签:把上节提到的 R 峰检出率、RR 变异系数、高频噪声占比组合成一个连续分数,取极端两侧的片段(明显好与明显差)做训练集,中间地带留作不确定区。这样得到的分类器只能区分「明确可用」与「明确不可用」,对边界样本无能为力,但足以在流水线上做初筛。

数据侧的采样偏差要承认:全部是术后老年患者、全部是胸带佩戴、全部在室内。模型学到的可能是「这类人群的伪影长什么样」,而不是「一般情况下的伪影」。换到腕式设备或年轻人群,特征分布会明显偏移。

5.5 可复现的最小实验

下面这条路径能在半天内跑通,适合作为一切分析的起点。

步骤 动作 预期产出
1 读 test-availability.csv,统计五项测试各自的人数 五组分母
2 按患者标识分组,做 GroupKFold(5) 划分 五折索引
3 读入 ecg/,按 .atr 切段,每段算心率均值与恢复斜率 特征表
4 读入 acc/,同法切段,算均方根与主频 特征表
5 合并 subject-info.csv 的 EFS 评分 建模表
6 梯度提升回归 + 留一组交叉验证 基线 R²
7 换随机种子重复五次,报告 R² 的均值与四分位距 稳定性区间

第三步的恢复斜率要注意定义:从标注结束点起算,取其后 60 秒内心率的线性下降斜率。若记录在标注后提前结束,该患者此项记为缺失,不要用短窗口硬算。

第七步是很多人省掉的,但对 80 人的样本极重要。单次留一交叉验证的 R² 在这么小的样本上波动范围可以横跨零点几,只报一个数字容易给人虚假的精确感。重复五次取区间,读者才能判断差异是否有意义。

另外,这条路径刻意没有做特征标准化与超参数搜索。两者都会在小样本上带来乐观偏差,尤其超参数搜索若在交叉验证内部完成而又在外部报告同一批结果,等于把验证集当成训练集用。起步阶段宁可用固定超参数,把基线做扎实。

5.6 DAIMS 24 项检查

按数据文档与可用性评估框架逐项核对:

维度 项 判定
文档 数据字典 部分(字段由描述推断,非逐列列出)
文档 采集协议 是
文档 设备规格 是
文档 标注规范 是(五类代码)
文档 版本历史 部分(仅 1.0.0)
文档 许可说明 是
文档 引用格式 是
文档 局限披露 是(十二项,罕见地详细)
质量 缺失披露 是
质量 信号质量说明 是
质量 一致性检验 否
质量 金标准对照 部分(六分钟距离为临床测量)
质量 异常值处理 否
质量 隐私处理 是(患者标识为三位数字)
可得性 开放程度 是(完全开放)
可得性 下载方式 是
可得性 文件校验 是(SHA256SUMS)
可得性 数据体量 是
可得性 格式说明 是(WFDB)
可得性 工具支持 是(WFDB 生态)
伦理 伦理批准 是(编号 BE-2-99)
伦理 知情同意 是(书面)
伦理 试验注册 是(NCT04636970)
伦理 去标识化说明 部分

24 项中「是」17 项、「部分」5 项、「否」2 项。两份「否」分别是一致性检验与异常值处理,这两项在生理信号数据集里普遍缺失,不算硬伤。真正值得注意的是「数据字典」只到部分——字段靠描述推断,没有一个逐列的 schema 文件。

§6 常见误读与引用陷阱

6.1 误读一:把 337 当队列规模

337 是筛查人数,99 是符合条件人数,80 是最终发布人数。三个数字在论文里必须写清是哪一个。写「337 名患者的数据集」是错的,写「99 名患者」也不对。

6.2 误读二:把 EFS 当成 Fried 表型

两套工具都叫「虚弱评估」,但领域构成与判据完全不同。EFS 是多维量表,含认知与社会支持;Fried 是五项生理指标。用 EFS 评出的「虚弱」与用 Fried 评出的「虚弱」在同一人群中重合度有限,跨研究比较时必须注明工具。

6.3 误读三:把「次极量」当成「极量」

五项测试都是次极量,即不要求患者达到最大努力。这是出于安全考虑——开胸术后患者做极量测试有风险。后果是无法从数据里读出最大摄氧量这类极量指标,只能做次极量的功能评估。

6.4 误读四:把单中心的结论外推

立陶宛的康复流程、患者体质、术后管理都与中国或其他地区不同。这套数据能说明「在这个中心、这个人群、这套流程下,可穿戴信号与虚弱评分有关系」,不能直接说明「这套方法在任何地方都有效」。

6.5 引用时必须写清的四件事

引用这套数据时,以下四项缺一不可,否则读者无法判断结论的适用范围:

  1. 样本漏斗的三层数字(337 / 99 / 80)
  2. 虚弱评估工具是 EFS 且门槛为 4 分
  3. 数据来自单中心、开胸术后人群
  4. 许可为 CC BY-NC-SA 4.0,非商业用途

6.6 一个隐蔽的引用错误

有的论文把这套数据描述为「心脏康复患者的可穿戴数据」,省略了「开胸术后」与「虚弱」两个限定。这两个限定恰恰是数据的选择性所在——不是所有心脏康复患者都做过开胸手术,也不是所有人都虚弱。省掉限定,结论的适用范围就被悄悄放大了。

§7 在生态中的位置

7.1 与三类相邻资源的分工

资源类型 代表 与本数据集的关系
大规模自由生活可穿戴 UK Biobank 加速度子集、NHANES 加速度 规模大但无临床评分同步
实验室运动测试 各类跑台测试数据集 条件更可控但人群健康
康复期临床测试 本数据集 临床评分同步、人群特化、样本小

三者的关系是互补而非替代。要做人群级活动模式研究,用第一类;要做生理机制研究,用第二类;要做康复期评估方法,用这一套。

7.2 与 PhysioNet 内其他可穿戴条目的关系

PhysioNet 上带「运动」「活动」标签的条目不少,但多数是健康人的日常活动或特定动作识别。这套数据的差异在于「受试者全部是有临床评分的患者」,且评分来自同一次住院。

做可穿戴算法研究时,可以先在健康人数据上做预训练,再用这套做临床场景的微调与验证。这个两段式路径能缓解小样本带来的过拟合。

有一条实际存在但很少被讨论的组合用法:把可穿戴信号与电子病历类数据放在同一研究框架里。MIMIC 这类重症监护数据库有密集的生理参数与用药记录,但没有术后康复期的自由活动信号;这套数据有康复期信号,却没有连续的用药与化验。两者不能直接拼接——人群不同、时间尺度不同、标识体系不同,任何「合并成一个大表」的做法都会引入不可控的混杂。

可行的做法是分层验证:在 MIMIC 上建立「哪些生理变量能预测术后不良结局」的模型,再在这套数据上检验「可穿戴信号能否替代其中某几个变量」。这个思路的价值在于把不可得的变量替换成可低成本获取的变量,而不是把两套数据混在一起训练。前提是两边对同一个构念的定义一致,例如「活动耐量」在 MIMIC 里靠护理记录的活动等级,在这套数据里靠六分钟步行距离,两者只是相关而非等价,替换时必须做一致性检验。

7.3 长期可用性判断

数据集发布于 2022 年 3 月,版本 1.0.0,至今未更新。PhysioNet 的条目通常会长期保存,DOI 稳定。

风险在于设备。Polar H10 是 2017 年前后的产品,若厂商停产或固件协议变更,未来复现采集流程会变难。但已有数据的可用性不受影响,因为信号已经固化为 WFDB 格式。

7.4 适合谁用

使用者 适合做的事 不适合做的事
康复科研究者 康复期虚弱转归的信号标志物 跨病种比较
可穿戴算法工程师 小样本临床场景的验证集 大规模预训练
老年医学团队 虚弱评估的客观化探索 社区筛查工具开发
运动生理研究者 次极量测试的心率动力学 极量运动能力评估

§8 总结

这套数据的价值不在规模,而在结构。80 人、196 条记录在可穿戴领域属于小样本,但它把「临床评分」与「运动信号」放在同一次住院里同步采集,这个组合在公开资源里很少见。

它的三个特点决定了用法。第一,以测试会话为单位,适合做段落级的信号分析,不适合连续时序建模。第二,五项测试覆盖从器械定量负荷到日常功能动作的连续谱,适合做跨负荷的对比研究。第三,官方把十二项局限逐条写明,这在公开数据里属于高质量文档,能省掉大量试错。

使用时的三条底线:按 80 而非 196 算样本量;按测试类型分别定分母;按患者分组做交叉验证。守住这三条,其余的技术细节都能在数据本身里找到答案。

最后给一个判断标准,用来决定该不该投入这套数据。如果你的问题是「某种可穿戴特征与临床虚弱评分之间有没有关系」,这套数据能直接回答,而且是同类公开资源里成本最低的一个。如果你的问题是「训练一个能在任意设备上用的虚弱识别模型」,这套数据只能做验证集,训练集必须另找。如果你要做的是社区老年人的大规模筛查,这套数据的人群与场景都不匹配,参考价值主要在方法而非数值。

§9 术语与口径速查

术语 全称 本文口径
EFS Edmonton Frail Scale 九领域虚弱量表,纳入门槛不低于 4 分
NYHA New York Heart Association 分级 心功能四级分类,073 号患者缺失
6MWT 六分钟步行测试 次极量功能耐量测试,纳入门槛不低于 150 米
TUG Timed Up and Go 起立、行走三米、转身、坐下
VELO Veloergometry 功率自行车,25 W 起、每分钟增 12.5 W
STAIR Stair climbing 爬 12 级楼梯
WFDB Waveform Database PhysioNet 的信号存储格式
次极量 submaximal 不要求达到最大努力,按预定终点停止
会话 session 一次测试批次,同一会话含心电与加速度两条记录
记录 record 一份 WFDB 三件套,对应一次会话的一种信号

§10 事实清单与附录

10.1 核心事实

项 值
患者数 80
筛查人数 337
符合纳入人数 99
技术丢失人数 19
记录数 196
未压缩体量 2.5 GB
ZIP 体量 2.3 GB
心电采样率 130 Hz
加速度采样率 200 Hz
采样率波动 约 0.2%
设备 Polar H10
年龄门槛 不低于 65 岁
EFS 门槛 不低于 4 分
六分钟步行门槛 不低于 150 米
测试项数 5
招募起止 2020-11-19 至 2022-01-03
伦理批号 BE-2-99
试验注册 NCT04636970
DOI(v1.0.0) 10.13026/mp8k-7p27
DOI(latest) 10.13026/vcjs-5p09
机构 Kulautuva 康复医院(立陶宛)

10.2 五项测试的协议细节

测试 协议
功率自行车 25 W 起始,每分钟增 12.5 W,至主观力竭或终止标准
六分钟步行 自定步速,六分钟内尽可能远
爬楼 12 级楼梯,舒适节奏,无辅助
起立行走 起身、前行 3 米、转身返回、坐下
步态分析 Zebris FDM-T 跑台,行走 30 秒后取该段分析

每项测试前后要求坐姿休息至少 3 分钟。

读这张表时容易漏掉的是「终止标准」——功率自行车一栏写的是「至主观力竭或终止标准」。这意味着部分患者蹬到了最大努力,而不是在预设负荷停下;另一些人可能因血压、心电异常或胸痛提前终止。这两种性质的「停」在信号上都是心率不再上升,但生理含义完全不同。若数据里没有记录终止原因,做心率峰值分析时无法区分「达到极限」与「被迫中止」,结论只能按次极量来解释。

休息三分钟这个设置也有口径问题。三分钟够不够让心率回到基线,取决于患者的恢复能力——而恢复能力本身就是虚弱的一部分。虚弱程度重的人三分钟后心率仍高于静息,于是下一次测试的起始心率偏高,整条曲线被抬高。这会让「后做的测试」系统性偏高,与测试顺序形成交互。官方未说明休息是固定三分钟还是等到心率达标,这个差别对跨测试比较很关键。

10.3 附录 A:读取信号的最小代码

import wfdb
import numpy as np

-- 读一条记录
rec = wfdb.rdrecord('ecg/073_1_ecg')
fs = rec.fs                      -- 130
sig = rec.p_signal[:, 0]         -- 单导联
ann = wfdb.rdann('ecg/073_1_ecg', 'atr')

-- 按标注切段
codes = {'VELO', '6MWT', 'STAIR', 'TUG', 'GAIT_ANALYSIS'}
segments = {}
for i, s in enumerate(ann.sample):
    label = ann.aux_note[i].strip('()\x00')
    if label in codes:
        end = ann.sample[i + 1] if i + 1 < len(ann.sample) else len(sig)
        segments[label] = (s, end)

-- 心率恢复斜率(以 6MWT 为例)
if '6MWT' in segments:
    s, e = segments['6MWT']
    tail = sig[e:e + int(fs * 60)]           -- 结束后 60 秒
    if len(tail) > fs * 30:                  -- 至少 30 秒才计算
        r_peaks = wfdb.processing.XQRS(tail, fs).qrs
        if len(r_peaks) > 2:
            inst_hr = 60 * fs / np.diff(r_peaks)
            slope = np.polyfit(r_peaks[1:] / fs, inst_hr, 1)[0]

说明:最后一段给出的是心率恢复斜率的最小写法,用 wfdb.processing.XQRS 定位 R 峰后对瞬时心率做一次线性拟合,斜率单位为「次/分/分」,正值表示心率仍在上升、负值表示正在回落。真实分析还需先剔除 RR 间期超过前一个 1.5 倍的异位搏动,否则斜率会被单个早搏拉偏。

10.4 附录 B:五个可立即验证的疑问

  1. 196 条记录里,有多少来自多次会话的患者?
  2. subject-info.csv 的字段名究竟是什么,与描述是否一致?
  3. 254 号患者的步态分析「结果有误」,错在哪一步?
  4. 五项测试是按固定顺序做还是随机化?
  5. 六分钟步行距离是走廊步行还是跑台步行得出的?

这五个问题在官方页面上都没有明确答案,需要下载后自行核对。它们直接影响结论的可比性,建议在正式分析前先花半小时回答。

10.5 附录 C:证据链

本文所有硬数字均取自已发布时的 PhysioNet 条目页 https://physionet.org/content/wearable-exercise-frailty/1.0.0/,包括:患者数 80、筛查 337、纳入 99、丢失 19、记录 196、未压缩 2.5 GB、ZIP 2.3 GB、心电 130 Hz、加速度 200 Hz、波动 0.2%、EFS 门槛 4、六分钟步行门槛 150 米、爬楼 12 级、TUG 3 米、跑台 30 秒、休息 3 分钟、功率自行车 25 W 起每分钟 12.5 W、招募起止日期、伦理批号 BE-2-99、试验注册 NCT04636970、DOI 两个版本、十二项局限与五位患者的缺失编号。

编辑说明

核验时点:2026 年 10 月 19 日,依据 PhysioNet 条目页 v1.0.0 的当前内容。

核验方式:页面正文逐段读,重点核对规模数字、采样率、协议细节与局限清单四类。凡页面未写明的(如会话数分布、字段逐列定义、测试顺序)一律标注为「官方未说明」或列入附录 B 的待验证疑问,不做推断性补全。

口径处理:官方同时给出未压缩 2.5 GB 与 ZIP 2.3 GB 两个体量数字,本文两处都保留,不做统一,因为二者指代不同对象。196 条记录与 80 名患者的对应关系官方未直接说明,本文按「会话 × 信号类型」推断并在正文中标注为推断,未当作已知事实。

未覆盖内容:本页不评估数据质量的实际水平,因为未下载原始信号做统计。附录 A 的代码仅示范读取流程,未做完整验证。两篇「投稿中」的研究本文未引用其结论,因为正式发表状态不明。


相关数据集导航

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

  • scientisst-move — 共享标签:可穿戴传感 / 生理信号 / 步态与运动 / 心电信号
  • ppg-dalia — 共享标签:可穿戴传感 / 生理信号 / 步态与运动
  • pamap2 — 共享标签:可穿戴传感 / 生理信号 / 步态与运动
  • actes-cycloergometer-exercise — 共享标签:生理信号 / 步态与运动 / 心电信号
  • ephnogram — 共享标签:可穿戴传感 / 生理信号 / 心电信号
  • body-sway-music-vr — 共享标签:可穿戴传感 / 生理信号 / 步态与运动
  • pulsedb — 共享标签:可穿戴传感 / 生理信号 / 心电信号
  • qol-stress — 共享标签:可穿戴传感 / 生理信号 / 心电信号
  • grabmyo-flow — 共享标签:可穿戴传感 / 生理信号 / 步态与运动
  • brain-wearable-monitoring — 共享标签:可穿戴传感 / 生理信号 / 心电信号

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

返回 AI-Ready 数据集