多夜瞬时心率与加速度计数据集 — Apple Watch+Dreem2 EEG 睡眠分期标签

47 名健康成人连续至多 7 夜佩戴 Apple Watch 与 Dreem 2 头带同步采集的开放数据集:Apple Watch 提供 PPG 衍生瞬时心率(IHR,约 0.2 Hz)与三轴加速度计,Dreem 2 提供 AASM 标准 30 秒 epoch 的 EEG 睡眠分期标签(Wake/N1/N2/N3/REM),共 253 夜,ODC-By v1.0 开放获取,用于可穿戴睡眠分期算法开发与验证

来源 Apple Watch(自定义 WatchOS 应用 BIDSleep)采集的瞬时心率(IHR,PPG 衍生,约 0.2 Hz)+ 三轴加速度计(Unix 亚秒时间戳);Dreem 2 EEG 头带 AASM 标准 30 秒 epoch 睡眠分期标签(自动 dreem_label + 专家修正 expert_label)发布时间: 2026-10-10最后更新: 2026-10-20 阅读 34
多夜瞬时心率与加速度计数据集 — Apple Watch+Dreem2 EEG 睡眠分期标签

信息速览

数据集名称多夜瞬时心率与加速度计数据集 — Apple Watch+Dreem2 EEG 睡眠分期标签
数据类型生理信号数据,原始数据,多模态数据
规模47 名健康成人参与者 × 至多 7 夜 = 253 夜(每受试者 3-7 夜)
接入方式Apple Watch(自定义 WatchOS 应用 BIDSleep)采集的瞬时心率(IHR,PPG 衍生,约 0.2 Hz)+ 三轴加速度计(Unix 亚秒时间戳);Dreem 2 EEG 头带 AASM 标准 30 秒 epoch 睡眠分期标签(自动 dreem_label + 专家修正 expert_label)
AI 就绪度

INFOBOX — BIDSleep 数据集一屏速览

维度 内容
本质 消费级 Apple Watch(IHR+加速度)与 Dreem 2 EEG 参考标签逐夜配对的多夜开放数据集
团队 University of Massachusetts Amherst(通讯资深作者 Joyita Dutta,生物医学工程系)
论文 IEEE Trans Biomed Eng. 2026 Apr;73(4):1596–1608(doi:10.1109/TBME.2025.3612158)
平台 PhysioNet(Open Access),Maintained by the MIT Laboratory for Computational Physiology
规模 47 名健康成人 × 至多 7 夜 = 253 夜;每夜 3 文件
模态 Apple Watch PGG 瞬时心率(约 0.2 Hz)+ 三轴加速度;Dreem 2 EEG 30 秒 epoch 睡眠分期
标签 AASM 标准 5 类:Wake / N1 / N2 / N3 / REM(+Unknown);自动 dreem_label + 专家 expert_label 双份
版本 v1.0.1(2026-09-25 更新作者名单);首发 v1.0.0(2026-05-12)
DOI 版本 DOI 10.13026/rees-1092;latest 10.13026/hace-p847
许可 ODC-By v1.0(归属型开放许可)
一句话 想做"手表数据猜睡眠分期",这是目前少有的带 EEG 参考标签、开放直取、多夜配对的干净验证集

§0 导读:这个数据集解决什么问题

一句话定位:BIDSleep 数据集把消费级智能手表能拿到的两种信号——瞬时心率(Instantaneous Heart Rate, IHR)与三轴加速度计(accelerometry)——和一份研究级 EEG 设备给出的睡眠分期金标签逐夜对齐,让"用可穿戴信号推断睡眠阶段"这件事第一次有了开放、多夜、可复核的验证底座。

它要回答的痛点:

  1. 消费级设备的睡眠报告是黑箱。Apple Watch、Fitbit 这类手表都会给出"深睡/浅睡/REM"的摘要,但底层算法是厂商私有且不透明的,研究者无法审计、无法复现、无法改进。BIDSleep 直接发布原始 IHR 与加速度序列,绕开黑箱。
  2. 缺可穿戴信号 + EEG 金标签的配对公开数据。传统睡眠分期金标准是多导睡眠图(Polysomnography, PSG),成本高、导联多、难做大规模多夜研究。市场上要么只有手表自报标签(无金标准),要么只有临床 PSG(非可穿戴信号)。把两者配对的开放数据极少。
  3. 单夜数据无法研究夜间的个体内变异。睡眠随夜波动,只测一晚的算法很难评估跨夜稳定性。本数据集每人最多 7 夜,天然支持多夜分析。

一句话结论:如果你要做可穿戴睡眠分期——尤其是"心率 + 运动 → 睡眠阶段"这条技术路线——BIDSleep 是一个绕不开的开放验证集。但它不是 PSG,参考标签来自 Dreem 2 头带,只有一名专家复核,样本仅 47 人健康成人——用它当"金标准"时必须清楚这些边界。


§1 数据集速览:十问十答

# 问题 答案
1 官方全名是什么? A Multi-Night Instantaneous Heart Rate and Accelerometry Dataset with EEG Sleep Stage Labels
2 谁做的、哪里找? UMass Amherst(通讯 Dutta)→ PhysioNet 开放获取,DOI 10.13026/rees-1092
3 多少人、多少夜? 47 名健康成人,每人至多 7 夜,共 253 夜
4 有哪些信号? Apple Watch:IHR(约 0.2 Hz)+ 三轴加速度;Dreem 2:EEG 衍生睡眠分期
5 标签怎么来的? Dreem 2 自动评分(AASM 标准,30 秒 epoch)+ 单一专家逐 epoch 复核修正
6 分几类? 5 类:Wake / N1 / N2 / N3 / REM(外加 Unknown 编码 5)
7 文件长什么样? 每夜 3 文件:hr.csv、motion.csv、labels.mat;每受试者一个文件夹
8 许可与费用? ODC-By v1.0 归属型开放许可,免费,署名即可用
9 需要申请吗? 不需要申请,Open Access 直取(但存在按地区的内容限制,见 §6)
10 最该注意什么? 参考标签是 Dreem 2 非 PSG;单专家无交叉验证;健康成人小样本,泛化需谨慎

速记卡(30 秒决策):

  • ✅ 适合:可穿戴睡眠分期算法开发与验证、心率+运动多模态建模、消费级设备可靠性研究、跨多夜泛化研究。
  • ⚠️ 慎用:需要临床级 PSG 金标签的任务、需要睡眠障碍人群样本的任务、需要大样本统计推断的任务。
  • ❌ 不适合:把 Dreem 标签当作绝对真值(ground truth)做临床结论。

§2 数据构成与规格

2.1 规模、来源与机构构成

BIDSleep 的规模可以一句话概括:47 名健康成人,每人至多 7 夜,累计 253 夜。数据集物理组织为 47 个受试者级文件夹,每个文件夹装 3 至 7 夜原始数据。

维度 数值 说明
受试者数 47 健康成人志愿者,社区广告传单招募
单人夜数 3–7(至多 7) 个体间不一致,非每人都拿到 7 夜
总夜数 253 全数据集累计
文件夹数 47 一个受试者一个目录
每夜文件数 3 hr.csv / motion.csv / labels.mat
epoch 分辨率 30 秒 AASM 标准睡眠分期步长
阶段类别 5(+Unknown) Wake/N1/N2/N3/REM

来源机构:University of Massachusetts Amherst。页面作者机构标注中,通讯资深作者 Joyita Dutta 归属该校生物医学工程系(Profile jd293952);Tzu-An Song 标注为 “The Department of Biomedical Engineering at the University of Massachusetts Amherst”(Profile bidslab);Yubo Zhang、Ziyuan Zhou 均标注 “University of Massachusetts Amherst”。

双口径提示:页面 Abstract 与 Methods 段写研究方案由 “University of Massachusetts Lowell Institutional Review Board” 批准,而作者机构全部标注为 Amherst。此 IRB 机构标注与作者机构不一致未在页面澄清,本节按原文双写存照(详见 §10 存照清单)。

2.2 三类文件的格式与字段

每夜(subject-night)固定三个文件,等价于"两种设备、三种模态":

hr.csv —— 瞬时心率(IHR)

  • 来源:Apple Watch 的 PPG(光电容积脉搏波)传感器,经 HealthKit 输出。
  • 单位:bpm(每分钟心跳数)。
  • 采样率:约 0.2 Hz(即约 5 秒一个点,非连续波形,而是离散的瞬时心率点)。
  • 每行含一个时间戳,Unix 时间(秒,带亚秒精度)。

motion.csv —— 三轴加速度计

  • 来源:Apple Watch。
  • 内容:x、y、z 三轴加速度数据。
  • 每行含一个 Unix 时间戳(秒,带亚秒精度)。

labels.mat —— 睡眠分期标签(MATLAB 格式)

  • recStart:记录起点时间戳。
  • dreem_label:Dreem 设备自动睡眠分期,整数编码 0=Wake, 1=N1, 2=N2, 3=N3, 4=REM, 5=Unknown。
  • expert_label:睡眠专家手工修正分期,编码与上面一致。

关键设计:dreem_label 与 expert_label 双双保留。这意味着研究者既能复现"直接用 Dreem 自动标签"的基线,也能对比"专家修正标签"的影响——一个很实用的自带消融维度。

2.3 时间对齐:三行公式搞定跨设备同步

跨设备数据集最棘手的是时间对齐。BIDSleep 用同一部 Apple iPhone 同时接收两台设备的数据,建立共同时间参考,尽量降低错位。对齐逻辑清晰且可复现:

  • hr.csv / motion.csv 的时间戳是 Unix 时间(自 1970-01-01 UTC 起的秒数,浮点、亚秒精度)。
  • labels.mat 的 recStart 是记录起点(原始为 Unix 时间,存储时转成 US/Eastern 时区的可读格式)。
  • 第 k 个睡眠 epoch 的时间区间为:
第 1 个 epoch: [recStart, recStart + 30s)
第 k 个 epoch: [recStart + 30×(k−1), recStart + 30×k)
  • 给定任一 IHR/加速度时间戳 t,其对应 epoch 序号 k = floor((t − recStart) / 30) + 1。

Python 转换示例(页面给出):

import datetime
import pytz
dt = datetime.datetime.strptime("2021-12-02 23:11:25", "%Y-%m-%d %H:%M:%S")
dt = pytz.timezone("US/Eastern").localize(dt)
unix_time = dt.timestamp()

对齐三步走:① 把 recStart 转成 Unix 时间;② 每个标签对应 recStart 之后一个 30 秒 epoch;③ 用公式把任意信号时间戳映射到睡眠阶段索引。

2.4 完整性保证

页面明确声明:所有 subject-night 文件夹均完整,都含预期的三个文件(motion.csv、hr.csv、labels.mat),三种模态对每个 subject-night 文件夹全部可得。即"无跨夜缺模态",检索者可放心假设结构齐整。

2.5 与库内睡眠条目的边界

库内已有 6 条睡眠相关条目,但全部是临床/研究级多导睡眠图(PSG)多通道数据:

库内条目 rid 模态 与 BIDSleep 的区别
sleep-edf 73 PSG(EEG/EOG/EMG) 无可穿戴信号、无手表数据
isruc-sleep 262 PSG 同上,临床队列
cinc-2018-sleep 493 PSG + 挑战赛 无 Apple Watch
hmc-sleep-staging 654 PSG 无消费级设备
mesa-sleep 302 PSG(MESA 队列) 无手表数据
mros-sleep 292 PSG(MrOS 队列) 无手表数据

边界结论:BIDSleep 是库内唯一"消费级 Apple Watch(PPG-IHR + 加速度)+ Dreem 2 EEG 参考标签、多夜配对、开放直取"的数据集。它不是任何一条的别名或版本,模态与设备定位根本不同——库内其余条目测的是"设备上的多通道生理信号",BIDSleep 测的是"手表能给的两路信号 vs EEG 参考"。检索者若找"手表数据睡眠分期",应直达本条。

2.6 想自己复现?先认清三个数字

要用好这份数据,记住三个关键数字:0.2 Hz(IHR 采样率,稀疏)、30 秒(标签 epoch,粗粒度)、253 夜(规模,非海量)。稀疏的 IHR、粗粒度的分期,意味着特征工程的空间很大,而样本量注定它适合验证而非训大模型。


§3 采集协议与设备

3.1 两台设备、两种角色

BIDSleep 的采集设计是一个"参考设备 + 待测设备"的配对结构:

角色 设备 采集内容 定位
待测(信号源) Apple Watch IHR(PPG 衍生)+ 三轴加速度 消费级设备
参考(标签源) Dreem 2 EEG Headband EEG → AASM 睡眠分期 研究级设备

Apple Watch 端:研究者自定义了一个 WatchOS 应用,名为 BIDSleep,用于连续记录瞬时心率与三轴加速度。这也解释了数据集名"BIDSleep"的来源——它是采集 App 的名字。

Dreem 2 EEG 头带端:作为睡眠分期的参考。标签按 AASM(American Academy of Sleep Medicine,美国睡眠医学会)标准生成,30 秒 epoch 分辨率,共 Wake/N1/N2/N3/REM 五类。

术语首现:AASM = American Academy of Sleep Medicine(美国睡眠医学会),其分期标准是当代睡眠分期的通用规范。

3.2 采集流程:在家、同机、同步

  • 参与者在家中睡眠时同时佩戴 Apple Watch 与 Dreem 2 EEG 头带。
  • 为确保两台设备对齐,两台设备的数据都经同一部 Apple iPhone 记录——同一时钟参考,最小化错位。
  • 参与者每人佩戴至多 连续 7 夜。

为什么"同机"重要:跨设备研究中,时钟漂移会导致标签与信号错位。用同一部手机做时间参考,是一种低成本的工程保证。页面把这点明确写进了协议。

3.3 参考标签的产生:自动 + 单专家复核

BIDSleep 的分期标签走了"自动评分 → 单专家复核"两步:

  1. Dreem 2 自动评分:Dreem 设备生成 30 秒 epoch 的自动 hypnogram(睡眠图),记为 dreem_label。
  2. 专家复核:Dreem 的全部 EEG 信号及其自动 hypnogram 由一名受训睡眠专家逐 epoch 复核,检查信号质量、解决伪迹。复核按 AASM 指南进行,特别关注模糊转换期与生理上不合理的阶段序列(借助相邻 epoch 的上下文信息)。修正后的标签记为 expert_label。

关键局限(页面自曝):由于只有一名评分者,未进行评分者间裁决(no inter-scorer adjudication)。这意味着标签虽经专家修正,但缺少第二人交叉验证,一致性无从量化——这是使用该数据集时必须记住的边界。

3.4 纳入与排除:健康成人,自报筛选

入组:一般健康成人,无已知会显著影响睡眠生理的睡眠或心血管疾病。

排除:

  • 未治疗的严重睡眠障碍:如阻塞性睡眠呼吸暂停(Obstructive Sleep Apnea, OSA)、失眠障碍、发作性睡病等此前已确诊且未治疗/未管理的情况。
  • 重大心血管疾病:如心律失常、心力衰竭、冠心病等需持续医疗管理的心脏相关疾病史。

筛选方式:仅凭自报健康问卷与研究对象招募程序,未做额外临床诊断检测。招募不区分性别或族裔,通过研究广告传单从当地社区招募,所有参与者签署书面知情同意。

含义:这是一个"干净"的健康成人队列——好处是信号不受病理干扰,适合验证算法在健康人群的表现;局限是无法评估模型在睡眠障碍或心血管病人群上的表现。想要临床泛化结论的研究者需要另找数据。


§4 任务、标签体系与推荐用法

4.1 核心任务:可穿戴睡眠分期

BIDSleep 支持的核心任务是睡眠分期(sleep staging):仅凭 Apple Watch 的瞬时心率(IHR)+ 三轴加速度,把每个 30 秒 epoch 判到 5 个睡眠阶段之一,以 Dreem 2 EEG 标签为参考。

这是一个典型的多模态生理信号分类任务:

  • 输入:两路稀疏时序信号(IHR 约 0.2 Hz、加速度计三轴)。
  • 输出:5 类。
  • 参考:Dreem 2 专家修正标签(如采用)或 Dreem 自动标签。

页面还列出更宽的支持面:

  1. 可穿戴睡眠分期方法的开发与验证;
  2. 心率与运动信号的多模态建模;
  3. 消费级可穿戴设备用于睡眠研究的可靠性调查;
  4. 跨设备、跨多夜记录的泛化性研究。

4.2 标签编码表

编码 阶段 AASM 全称
0 Wake 清醒
1 N1 非快速眼动 1 期
2 N2 非快速眼动 2 期
3 N3 非快速眼动 3 期(慢波睡眠)
4 REM 快速眼动期
5 Unknown 未知/不可判定

双标签对照价值:dreem_label 是设备自动评分,expert_label 是专家逐 epoch 修正。研究者可以:

  • 直接用 dreem_label 复现"纯自动参考"基线;
  • 用 expert_label 检验"专家介入"对模型评估的影响;
  • 对比两者差异,量化 Dreem 自动评分在过渡期的误差。

4.3 推荐用法:按受试者划分,避免数据泄漏

页面给出的最重要用法建议是按受试者级(subject level)分析(例如按参与者做交叉验证),而不要跨夜混合数据,以避免数据泄漏(data leakage)。

为什么这条重要:同一受试者的多夜数据高度相关(个人的心率模式、睡眠习惯有强个体特征)。若把同一人的不同夜分到训练集和测试集,模型可以"记住这个人"而虚高测试性能。按受试者划分才是真实泛化的评估方式。

作者的训练方式:作者自己的研究按 per-night(逐夜) 训练;但页面鼓励后续研究探索利用个体内多夜信息的方法,并指出本数据集很适合支撑这类分析。

一句话:想做得比 автор更聪明,就用多夜信息做个体内建模;想做得更严谨,就按受试者划分避免泄漏。

4.4 三种建模范式(给不同目标的检索者)

目标 建议做法 数据用法
复现可穿戴分期基线 逐夜分类,IHR+加速度特征 用 dreem_label 或 expert_label 之一
研究跨夜稳定性 同一受试者多夜一致性分析 充分利用 3–7 夜
研究个体自适应 个体内少样本微调 / 无监督自适应 按受试者留一
评估专家修正影响 双标签对照 同时载入 dreem_label 与 expert_label

§5 数据集定位与评估全景

5.1 它不是什么:没有官方排行榜

需要明确:BIDSleep 不是挑战赛数据集,不附带官方排行榜、官方 train/test 划分或统一评测协议。它是作为开放验证资源发布的。

这意味着:

  • 检索者需要自定划分(强烈建议按受试者);
  • 指标需自选(常见如 accuracy、macro-F1、Cohen’s kappa、per-stage F1);
  • 没有官方基线数字可直接对标。

5.2 方法学血缘:两篇作者前作

BIDSleep 的方法学脉络清晰可追:

文献 年份 期刊 与本数据集关系
Song TA, Chowdhury SR, Malekzadeh M, 等. AI-driven sleep staging from actigraphy and heart rate 2023 PLoS One 18:1–29 前作:证明加速度计+心率分期可行
Song TA, Zhang Y, Zhou Z, 等. AI-driven sleep staging using instantaneous heart rate and accelerometry: Insights from an Apple Watch study 2026 IEEE TBME 73(4):1596–1608 本数据集的原始论文

谱系解读:2023 年的 PLoS One 研究奠定了"用活动记录(actigraphy)+ 心率做睡眠分期"的技术路线;2026 年的 IEEE TBME 论文把这条路线专门搬到 Apple Watch 场景,并发布了本数据集。页面明确把这两篇列为"prior work has demonstrated the feasibility"的支撑。

5.3 与 PSG 参考的差距

BIDSleep 的参考标签来自 Dreem 2 头带,页面自己承认:“it is not equivalent to full polysomnography”(它不等价于完整多导睡眠图),过渡期 epoch 可能出现轻微差异(minor discrepancies)。

这是使用该数据集最需要内化的一条:

  • Dreem 2 是研究级 EEG 设备,比手表的自报标签可靠得多,但它仍非临床 PSG。
  • 没有 EOG(眼电)、EMG(肌电)等 PSG 全套导联,REM 判定等依赖 EEG 的环节可能不如完整 PSG。
  • 因此,不要把 Dreem 标签神化为绝对真值;把它理解为"高质量但不完美的参考标准"。

§6 获取与许可:开放但有地区限制

6.1 许可:ODC-By v1.0

项目 内容
许可类型 Open Data Commons Attribution License v1.0(ODC-By v1.0)
许可性质 归属型开放许可——可用、可改、可再分发,只需署名
是否 NC 否
是否 ND 否
是否需申请 否(Open Access)
Access Policy Anyone can access the files, as long as they conform to the terms of the specified license

ODC-By 的含义:这是数据库领域的归属型开放许可,约束比 CC BY 更贴合"数据/数据库"客体。它不禁止商业使用,也不禁止衍生;唯一硬性要求是保留归属(attribution)。相较于库内一些请求制数据集(如 PANDA 的注释掩码 upon qualified request),BIDSleep 的门槛低得多。

6.2 必须完成的引用(三重引用义务)

PhysioNet 页面明确了引用要求,使用本数据应同时引用三项:

① 数据集本体(PhysioNet 官方 APA 格式):

Song, T., Zhang, Y., Zhou, Z., & Dutta, J. (2026). A Multi-Night Instantaneous
Heart Rate and Accelerometry Dataset with EEG Sleep Stage Labels (version 1.0.1).
PhysioNet. RRID:SCR_007345. https://doi.org/10.13026/rees-1092

② 原始论文(additional original publication):

Song, T.-A., Zhang, Y., Zhou, Z., Hou, L., Malekzadeh, M., Behzad, A., & Dutta, J.
(2025). AI-driven sleep staging using instantaneous heart rate and accelerometry:
Insights from an Apple Watch study. IEEE Transactions on Biomedical Engineering.
https://doi.org/10.1109/TBME.2025.3612158

③ PhysioNet 平台标准引用:

Pollard, T., Moody, B. E., Lehman, L., Gow, B., Fernandes, C., Xie, C., Johnson, A.,
Mark, R. G., & Heldt, T. (2026). PhysioNet as a global platform for biomedical
research. Nature Health. https://doi.org/10.1038/s44360-026-00096-z

署名提示:ODC-By 要求署名,PhysioNet 要求三重引用。两者叠加,实际义务至少在方法或数据可用性小节列明"数据集版本 DOI + 原始论文 + 平台引用"。

6.3 版本链与双 DOI

版本 日期 变更
v1.0.0 2026-05-12 初始发布
v1.0.1 2026-09-25 更新作者名单
DOI 指向
10.13026/rees-1092 版本化(当前 1.0.1)
10.13026/hace-p847 latest(最新版)

检索建议:写论文引具体版本用 rees-1092(可复现);想始终指向最新用 hace-p847。

6.4 地区限制:开放许可 vs 实际不可下载

抓取时点一个必须存照的现象:Access Policy 声明"Anyone can access",许可也是开放的 ODC-By;但页面 Files 区实际显示:

“Data Not Available — Data is not available in your region due to legal or policy restrictions.”

即本沙箱/所在区域因法律或政策限制无法直接下载。这与开放许可声明并存,非许可变更,而是地区性内容限制。检索者若遇到下载被拦,属平台按地区策略管控,可尝试从允许地区访问。

6.5 AI-Ready 可获取性光谱对照

把 BIDSleep 放进库内可获取性光谱:

类型 代表条目 获取门槛
完全开放直取 bidsleep-dataset(本条) 最低,ODC-By,双击下载
开放平台直取 sleep-edf(73) 等 PhysioNet 数据集 低
需注册/协议 部分大型队列 中
请求制 panda-plus 注释掩码 高,需邮件申请

结论:BIDSleep 属可获取性最高的一档,对 AI-Ready 友好——检索者与自动化流程都能以最小摩擦接入。


§7 数据生命周期与治理

7.1 伦理审查与去标识

环节 内容
伦理审查 研究方案经 Institutional Review Board(IRB)审查批准(机构标注双口径,见 §10)
知情同意 全体参与者签署书面知情同意
去标识 公开释放前按机构与伦理指南对数据去标识处理
利益冲突 作者声明无利益冲突
资助 部分由 NIH 资助(R21AG068890、R01AG082354、P30AG073107)+ Dreem Jury’s Prize

7.2 平台治理

  • 托管平台:PhysioNet,Maintained by the MIT Laboratory for Computational Physiology。
  • 平台资助:NIH 的 NIBIB、NHLBI 与 NIH Office of the Director(U24EB037545、R01EB030362)。
  • 平台 RRID:SCR_007345。
  • 访问控制:Open Access,按许可条款即可访问(附带地区性内容限制)。

7.3 版本维护

数据集已进入版本化维护:v1.0.0 首发 → v1.0.1 更新作者名单。版本化 DOI 与 latest DOI 并存,符合 PhysioNet 的标准实践。检索者应记录所用版本,保证可复现。

7.4 引用传染风险提示

由于 ODC-By 归属要求 + PhysioNet 三重引用要求,下游模型或论文若使用本数据却只引了论文、没引数据集 DOI,会产生归属不完整的问题。建议在模型卡、数据可用性声明中三引齐全(版本 DOI + 论文 DOI + 平台引用)。


§8 AI-Ready 评估(DAIMS)

采用 DAIMS(Data & AI Maturity Scorecard) 五维框架对各维度打分(1–5 分)。BIDSleep 的画像如下。

维度 评分 依据
可获取性(Accessibility) 5 ODC-By 开放许可,Open Access 无需申请,直取;仅存地区性内容限制(非许可限制)
文档完备性(Documentation) 4 PhysioNet 页面含 Abstract/Background/Methods/Data Description/Usage Notes/Release Notes/Ethics/References;对齐公式与 Python 示例完备;但人口学细节、类别分布未披露,扣分
数据质量与标注(Quality & Annotation) 3 参考为 Dreem 2 EEG(非 PSG);单专家复核、无评分者间裁决;双标签(自动+专家)是加分项
标准化程度(Standardization) 4 AASM 标准分期、MATLAB/CSV 通用格式、Unix 时间戳、清晰文件名约定;但 labels.mat 用 MAT 需特殊读取,非纯文本友好
可复现性(Reproducibility) 4 版本化 DOI、明确对齐公式、四十七受试者结构规整、文件完整;扣分在无官方划分/基线

综合评估:BIDSleep 是一个可获取性与文档优良、质量边界明确的开放数据集。它最大的价值在"开放+配对+多夜",最大的局限在"参考标签非 PSG + 单专家 + 小样本"。DAIMS 均分约 4.0/5,是一份高 AI-Ready 友好度的资源——前提是使用者理解其标注边界。

8.1 适合谁 / 不适合谁

适合:

  • 做可穿戴睡眠分期的算法团队;
  • 研究心率+运动多模态建模的研究者;
  • 评估消费级手表睡眠监测可靠性的验证研究;
  • 研究多夜/个体内睡眠变异的研究者。

不适合:

  • 需要临床级 PSG 金标签的临床诊断模型;
  • 需要睡眠障碍(OSA 等)或心血管病人群样本的任务;
  • 需要大样本统计推断或人群流行病学结论的任务;
  • 把 Dreem 标签当绝对真值的应用。

§9 与库内条目的关系

9.1 家族图谱

BIDSleep 在库内的"邻居"主要是睡眠信号类,但模态不同——它们是"多导睡眠图(PSG)多通道",BIDSleep 是"消费级手表两路信号"。

生理信号
├── 睡眠信号
│   ├── sleep-edf (73)          PSG: EEG/EOG/EMG
│   ├── isruc-sleep (262)       PSG 临床队列
│   ├── cinc-2018-sleep (493)   PSG 挑战赛
│   ├── hmc-sleep-staging (654) PSG
│   ├── mesa-sleep (302)        PSG (MESA 队列)
│   ├── mros-sleep (292)        PSG (MrOS 队列)
│   └── bidsleep-dataset (本条) 可穿戴 IHR+加速度 ← 唯一消费级设备配 EEG 参考
├── 可穿戴传感
│   └── wearable-exam-stress (807)  可穿戴体检应激
└── 心电信号
    └── (apnea-ecg 等)           ECG 衍生

9.2 检索路径建议

  • 找"手表睡眠分期" → 直达 bidsleep-dataset(库内唯一)。
  • 找"PSG 睡眠分期" → sleep-edf / isruc-sleep / hmc-sleep-staging / mesa-sleep / mros-sleep。
  • 找"睡眠挑战赛" → cinc-2018-sleep。
  • 找"可穿戴生理监测" → bidsleep-dataset(睡眠)+ wearable-exam-stress(应激)。

9.3 建议互链点(库内条目 + rid)

目标条目 rid 互链理由
sleep-edf 73 PSG vs 可穿戴的参考对照
cinc-2018-sleep 493 睡眠分期挑战赛对照
hmc-sleep-staging 654 睡眠分期方法学对照
isruc-sleep 262 睡眠队列对照
mesa-sleep 302 大型队列 PSG 对照
mros-sleep 292 大型队列 PSG 对照
wearable-exam-stress 807 可穿戴传感主题相邻

9.4 辨析要点(防别名误判)

  • bidsleep-dataset ≠ 任何 PSG 睡眠数据集:设备、模态、人群定位均不同。
  • bidsleep-dataset 不是 sleep-edf 的衍生版:无版本继承关系,采集独立。
  • 名称来源:数据集名取自采集 App “BIDSleep”(WatchOS 应用),非 BIDS 格式标准(虽然名字含 BIDS,但页面未声称采用 BIDS 数据组织规范——不要误读为 BIDS 标准数据集)。

§10 避坑清单:已踩过与易踩的坑

坑 1:把 Dreem 2 标签当成 PSG 金标准。 页面明确写 Dreem 2 “is not equivalent to full polysomnography”。它缺 EOG/EMG 等导联,过渡期可能轻微偏差。用它做临床结论会越界——它是"高质量参考",不是"绝对真值"。

坑 2:忽略单专家复核的局限。 标签只有一名受训专家复核,无评分者间裁决。这意味着标签一致性未量化。做标签质量敏感的研究时,应主动报告这一局限,或对 dreem_label 与 expert_label 的差异做敏感性分析。

坑 3:跨夜混合导致数据泄漏。 同一受试者多夜数据高度相关。页面明确建议按受试者级划分(如按参与者交叉验证),不要随机跨夜切分。违反此条会虚高测试性能。

坑 4:把 IHR 当连续波形处理。 IHR 采样率约 0.2 Hz(约 5 秒一个点),是离散的瞬时心率点,不是连续 ECG/PPG 波形。误当波形做频谱分析会出错;应把它当作稀疏时间序列,先做插值/聚合。

坑 5:时间对齐算错 epoch。 对齐依赖 recStart 与三行公式 k = floor((t − recStart)/30) + 1。recStart 原始为 Unix 时间但存储可能为 US/Eastern 可读格式,须先统一时区再换算,否则整体偏移一个时区(数小时)。

坑 6:以为数据集有官方划分和排行榜。 没有。BIDSleep 不是挑战赛数据集,需自定划分与指标;别期待官方 train/test 划分或 baseline 数字。

坑 7:忽视地区下载限制。 抓取时点页面 Files 区显示 “Data Not Available — Data is not available in your region”。开放许可不代表任何地区都能下载;遇到拦截属地区策略,非许可问题。

坑 8:误读数据集名为 BIDS 标准。 “BIDSleep” 是采集 App 名,页面未声称采用 BIDS(Brain Imaging Data Structure)组织规范。文件名是 hr.csv/motion.csv/labels.mat,非 BIDS 命名。

坑 9:把健康成人样本泛化到临床人群。 排除睡眠障碍与心血管病,筛选仅凭自报。模型在此数据上表现好,不代表在 OSA 或老年/慢病人群上表现好。

坑 10:只引论文不引数据集。 ODC-By 归属 + PhysioNet 三重引用是硬义务。只引 IEEE TBME 论文、漏引数据集 DOI 与平台引用,会造成归属不完整。


§7 bis 深度剖析:为什么"心率 + 运动"能分期?

这一节回答一个核心问题:不测脑电,凭什么用心率和手部运动推断睡眠阶段? 理解这点,才能用好 BIDSleep 的两路信号。

7b.1 生理学基础

睡眠分期虽由脑电决定,但睡眠过程伴随**自主神经系统(Autonomic Nervous System, ANS)**的系统性变化,而这些变化会"泄漏"到心率与运动信号中:

睡眠阶段 心率特征 自主神经状态 运动特征
Wake(清醒) 心率高且波动大 交感占优 体动多、频繁
N1(入睡期) 心率下降、开始平稳 副交感渐升 体动减少
N2(浅睡) 心率低、较平稳 副交感主导 体动少
N3(慢波深睡) 心率最低、最平稳 副交感最强 体动极少
REM(快速眼动) 心率升高且变异大 交感阵发激活 肌张力缺失但可有眼动/微动

关键洞察:心率与运动在**深睡(N3)与清醒(Wake)**两端最容易区分(一个心率最低最静,一个心率最高最动),而 N2 与 REM 的区分最难(两者心率都不高,REM 靠"心率变异性升高 + 无体动"间接识别)。这解释了为什么可穿戴分期在 N2/REM 上误差最大。

7b.2 IHR 为什么是"瞬时"而非连续

Apple Watch 的 PPG 传感器并非持续采样。系统在特定时刻(typically 数分钟一次,本数据集页面给出约 0.2 Hz)记录一个瞬时心率点。页面明确 IHR 是 “at specific time points”。

工程含义:

  • 你不能对它做高频频谱分析(奈奎斯特频率仅约 0.1 Hz);
  • 但你可以用它构造逐 epoch 的统计特征:均值、标准差、分位数、趋势;
  • 心率变异性(HRV)类特征在 0.2 Hz 采样下受限,只能做粗粒度代理。

7b.3 加速度计的角色

三轴加速度计捕捉手腕运动。它的核心贡献是:

  • 区分"动"与"静"——最直接的 Wake/N3 判别器;
  • 提供"活动计数(activity count)"这类经典活动记录(actigraphy)特征;
  • 与心率互补:心率捕捉自主神经,运动捕捉骨骼肌活动。

补充说明:腕部加速度计不是金标准活动记录仪(如 Actiwatch 戴在非优势手腕特定位置),佩戴位置与松紧会影响信号,这是所有腕表研究的共性局限。

7b.4 双信号融合的建模价值

BIDSleep 提供两路信号,天然支持多模态融合研究:

融合方式 做法 适用
早期融合 拼接 IHR 与加速度特征再分类 简单基线
晚期融合 各自建模后集成 稳健
注意力融合 用注意力机制动态加权两模态 前沿方法
时序建模 LSTM/Transformer 直接吃原始序列 端到端

为什么这份数据适合做融合研究:两路信号时间戳统一、同机同步、逐夜完整,省去了大量数据清洗与对齐的脏活。

7b.5 一个诚实的期望管理

即使有 EEG 参考,可穿戴分期的上限受参考质量约束。Dreem 2 非 PSG,单专家无交叉验证,因此模型能达到的最高一致性本身就有天花板。研究者应报告相对于何种参考的何种指标,而非宣称"达到临床精度"。


§9 bis 复现指南:从零跑通 BIDSleep

这一节给出一份可操作的复现路径,帮检索者快速上手。

9b.1 环境与依赖

# 建议 Python 3.9+
pip install pandas numpy scipy scikit-learn
# 深度学习可选
pip install torch

读取 labels.mat 用 scipy.io.loadmat;CSV 用 pandas.read_csv。

9b.2 数据下载与组织

bidsleep/
├── sub-001/
│   ├── night-1/{hr.csv, motion.csv, labels.mat}
│   ├── night-2/...
│   └── night-7/...
├── sub-002/...
└── sub-047/...

注意:本沙箱区域受限无法下载;请从允许地区经 PhysioNet 获取(DOI 10.13026/rees-1092)。

9b.3 特征工程骨架

对每个 30 秒 epoch,从两路信号提取特征:

import numpy as np

def epoch_features(hr_vals, acc_xyz, epoch_len=30):
    f = {}
    if len(hr_vals):
        f["hr_mean"] = np.mean(hr_vals)
        f["hr_std"]  = np.std(hr_vals)
        f["hr_min"]  = np.min(hr_vals)
        f["hr_max"]  = np.max(hr_vals)
    mag = np.linalg.norm(acc_xyz, axis=1)   # 合加速度模
    f["acc_mean"] = np.mean(mag)
    f["acc_std"]  = np.std(mag)
    f["acc_energy"] = np.sum(mag ** 2)
    return f

9b.4 划分与评估

from sklearn.model_selection import GroupKFold
# groups = subject_id —— 关键:按受试者分组,防泄漏
gkf = GroupKFold(n_splits=5)
for tr, te in gkf.split(X, y, groups=subject_ids):
    ...  # 训练与评估

9b.5 报告清单(建议)

  • 划分方式(受试者级/LOSO);
  • 参考标签选择(dreem_label 还是 expert_label);
  • 指标(accuracy、macro-F1、kappa、per-stage F1);
  • 是否合并 Unknown;
  • 跨夜稳定性(同受试者各夜方差);
  • 明确的局限声明(非 PSG、单专家、健康成人)。

§12 相关研究脉络与延伸阅读

12.1 睡眠分期技术演进四阶段

阶段 时期 代表方法 金标准
视觉分期 1968– Rechtschaffen & Kales;后 AASM PSG
自动 PSG 分期 2000s– 机器学习 + PSG 多导联 PSG
可穿戴分期 2010s– 活动记录 + 心率(如本数据集前作) PSG / 头带
消费级 + 深度 2020s– 深度模型 + 手表信号 头带/PSG 参考

BIDSleep 处于第三到第四阶段的交界:它以消费级设备(Apple Watch)为信号源,以研究级头带(Dreem 2)为参考,正是"可穿戴分期"走向"深度模型验证"的产物。

12.2 与相关公开资源的差异

资源类型 代表 BIDSleep 的不同
临床 PSG 队列 sleep-edf、MESA、MrOS BIDSleep 用可穿戴信号而非多导联
挑战赛 CinC 2018 BIDSleep 无官方排行榜
手表自报数据 厂商导出 BIDSleep 提供原始信号 + 独立 EEG 参考
单夜研究 多数 BIDSleep 每人至多 7 夜

12.3 可延伸的方法学方向

  1. 个体自适应:用同人历史夜微调模型(数据集支持个体内多夜)。
  2. 标签噪声学习:利用 dreem_label 与 expert_label 差异做噪声鲁棒学习。
  3. 跨设备迁移:以 BIDSleep 为源域,迁移到其他手表/头带。
  4. 自监督预训练:用大量无标签 IHR+加速度做预训练,再用 253 夜微调。
  5. 不确定性建模:在参考本身不完美时,输出分期置信度而非硬标签。

12.4 引用此数据集时的学术诚实清单

  • [ ] 是否声明了参考标签为 Dreem 2 而非 PSG?
  • [ ] 是否声明了单专家复核、无评分者间裁决?
  • [ ] 是否按受试者划分、避免数据泄漏?
  • [ ] 是否三引齐全(数据集 DOI + 论文 + 平台)?
  • [ ] 是否说明了样本仅为健康成人、泛化受限?

§11 总结

11.1 三句话总结

  1. BIDSleep 是库内唯一"消费级 Apple Watch(IHR+加速度)+ Dreem 2 EEG 参考标签"多夜配对的开放数据集,47 名健康成人、253 夜,ODC-By 开放许可。
  2. 它的价值在"开放 + 配对 + 多夜":绕开厂商黑箱、提供金标准参照、支持个体内多夜分析,是可穿戴睡眠分期的理想验证底座。
  3. 它的边界在"参考非 PSG + 单专家 + 小样本 + 健康人群":适合算法开发与验证,不适合临床诊断结论或人群推断。

11.2 适合谁

  • 可穿戴睡眠分期算法开发者与验证研究者;
  • 心率+运动多模态建模团队;
  • 消费级设备睡眠监测可靠性研究者;
  • 多夜/个体内睡眠变异研究者。

11.3 不适合谁

  • 需要临床级 PSG 金标签的诊断模型;
  • 需要睡眠障碍或心血管病人群样本的任务;
  • 需大样本统计推断的流行病学研究;
  • 把 Dreem 标签当绝对真值的应用。

11.4 30 秒决策卡

┌─────────────────────────────────────────────────────────┐
│ BIDSleep 数据集 · 30 秒决策                               │
├─────────────────────────────────────────────────────────┤
│ 是什么:Apple Watch(IHR+加速度) + Dreem2 EEG 标签,多夜配对│
│ 规模:47 人 × 至多 7 夜 = 253 夜,每夜 3 文件            │
│ 标签:AASM 5 类(30s epoch),双份(自动+专家修正)          │
│ 许可:ODC-By v1.0,开放直取(有地区下载限制)           │
│ DOI:10.13026/rees-1092 (v1.0.1)                        │
│ 论文:IEEE TBME 2026;73(4):1596–1608                    │
│ 用之前想三件事:                                         │
│   1) 参考是 Dreem2 非 PSG;                             │
│   2) 单专家无交叉验证;                                  │
│   3) 按受试者划分防泄漏。                                │
│ 适合:可穿戴睡眠分期开发/验证                            │
│ 不适合:临床诊断金标准任务                               │
└─────────────────────────────────────────────────────────┘

FAQ(高频问答 24 问)

A. 基础认知

Q1. BIDSleep 到底是什么?
A:一个开放数据集:47 名健康成人多夜同时佩戴 Apple Watch 与 Dreem 2 头带,发布 Apple Watch 的瞬时心率(IHR)与三轴加速度,配 Dreem 2 EEG 的 AASM 睡眠分期标签。

Q2. 名字 BIDSleep 什么意思?
A:源自研究者自定义的 WatchOS 采集应用名 “BIDSleep”,不是 BIDS 数据标准。

Q3. 谁做的?
A:University of Massachusetts Amherst,通讯资深作者 Joyita Dutta(生物医学工程系)。

Q4. 发表在哪儿?
A:PhysioNet 平台;原始论文见 IEEE Transactions on Biomedical Engineering 2026;73(4):1596–1608。

Q5. 多少人多少夜?
A:47 名健康成人,每人至多 7 夜,共 253 夜。

B. 数据与获取

Q6. 怎么获取?
A:PhysioNet Open Access,ODC-By 许可下直取,DOI 10.13026/rees-1092。

Q7. 要付费吗?要申请吗?
A:免费,不需申请(但存在地区性下载限制)。

Q8. 许可是什么?能商用吗?
A:ODC-By v1.0,归属型开放许可,允许商用、允许衍生,只需署名。

Q9. 文件长什么样?
A:每受试者一个文件夹,含 3–7 夜;每夜 hr.csv、motion.csv、labels.mat 三文件。

Q10. 数据完整吗?
A:页面声明所有 subject-night 文件夹均完整,三模态齐全。

Q11. 为什么下载不到?
A:本沙箱所在区域因法律或政策受限(“Data Not Available”),非许可问题,可换允许地区访问。

C. 数据内容

Q12. IHR 是什么?采样率多少?
A:Instantaneous Heart Rate,Apple Watch 的 PPG 传感器经 HealthKit 输出的瞬时心率,约 0.2 Hz。

Q13. 加速度计几轴?
A:三轴(x, y, z)。

Q14. 标签分几类?
A:5 类 Wake/N1/N2/N3/REM,外加 Unknown(编码 5)。

Q15. epoch 多长?
A:30 秒,AASM 标准。

Q16. 有几个标签版本?
A:两个——dreem_label(设备自动)与 expert_label(专家修正)。

Q17. 专家是谁?几个人?
A:一名受训睡眠专家,逐 epoch 复核;仅一人,故无评分者间裁决。

Q18. 时间戳什么格式?
A:Unix 时间(秒,亚秒精度);recStart 存储时转 US/Eastern 时区。

D. 使用与方法

Q19. 怎么划分训练/测试?
A:强烈建议按受试者级划分(如留一受试者),避免跨夜数据泄漏。

Q20. 有官方划分和基线吗?
A:没有。它不是挑战赛数据集,需自定划分与指标。

Q21. 能用来训大模型吗?
A:253 夜规模偏小,更适合验证与微调,不适合从零训大模型。

Q22. 能用到临床吗?
A:不建议直接做临床结论;参考标签是 Dreem 2 非 PSG,且为健康成人样本。

E. 生产与库内

Q23. 和 sleep-edf 有什么区别?
A:sleep-edf 是 PSG 多导睡眠图;BIDSleep 是消费级手表 IHR+加速度配 EEG 参考。模态与设备根本不同。

Q24. 引用要注意什么?
A:三重引用——数据集 DOI + 原始论文 + PhysioNet 平台引用。


事实清单(硬事实 28 条)

  1. 官方全名:A Multi-Night Instantaneous Heart Rate and Accelerometry Dataset with EEG Sleep Stage Labels。
  2. slug:bidsleep-dataset。
  3. 平台:PhysioNet(Open Access)。
  4. 当前版本:v1.0.1。
  5. 首发版本:v1.0.0(2026-05-12)。
  6. v1.0.1 日期:2026-09-25(更新作者名单)。
  7. 版本 DOI:10.13026/rees-1092。
  8. Latest DOI:10.13026/hace-p847。
  9. 平台 RRID:SCR_007345。
  10. 作者:Tzu-An Song、Yubo Zhang、Ziyuan Zhou、Joyita Dutta。
  11. 机构:University of Massachusetts Amherst。
  12. 通讯资深作者:Joyita Dutta。
  13. 原始论文:IEEE Trans Biomed Eng 2026 Apr;73(4):1596–1608。
  14. 论文 DOI:10.1109/TBME.2025.3612158。
  15. 前作:PLoS One 2023(actigraphy + heart rate)。
  16. 参与人数:47 名健康成人。
  17. 总夜数:253 夜。
  18. 单人夜数:3–7(至多 7)。
  19. 受试者文件夹:47 个。
  20. 每夜文件:3 个(hr.csv / motion.csv / labels.mat)。
  21. IHR 采样率:约 0.2 Hz。
  22. 加速度计:三轴。
  23. 标签类别:Wake/N1/N2/N3/REM + Unknown。
  24. epoch 分辨率:30 秒。
  25. 标签标准:AASM。
  26. 参考设备:Dreem 2 EEG headband。
  27. 待测设备:Apple Watch(应用 BIDSleep)。
  28. 许可:Open Data Commons Attribution License v1.0(ODC-By v1.0)。

术语表(18 条)

术语 英文 释义
瞬时心率 Instantaneous Heart Rate (IHR) Apple Watch 经 PPG 输出的离散心率点,约 0.2 Hz
加速度计 Accelerometry 三轴运动传感信号
睡眠分期 Sleep Staging 把睡眠划分为若干阶段的任务
AASM American Academy of Sleep Medicine 美国睡眠医学会,睡眠分期标准制定方
多导睡眠图 Polysomnography (PSG) 睡眠分期金标准,含 EEG/EOG/EMG 等多导联
脑电图 Electroencephalography (EEG) 记录脑电活动;Dreem 2 用于分期
光电容积脉搏波 Photoplethysmography (PPG) 手表测心率的原理
睡眠图 Hypnogram 睡眠阶段随时间的阶梯曲线
睡眠阶段 sleep stage Wake/N1/N2/N3/REM
慢波睡眠 slow wave sleep 对应 N3
快速眼动期 REM 快速眼动睡眠期
阻塞性睡眠呼吸暂停 OSA 常见睡眠障碍,本数据集排除
数据泄漏 data leakage 训练/测试信息混入导致的虚高性能
评分者间裁决 inter-scorer adjudication 多名评分者交叉校验;本数据集未做
归属许可 Attribution License 要求署名的开放许可
ETH Zurich 格式 MAT file MATLAB 数据文件格式(labels.mat)
CRF — 本数据集不使用(无电子病历)
消费级设备 consumer-grade device 如 Apple Watch,非临床设备

附录

附录 A:条目信息速查卡

字段 值
slug bidsleep-dataset
官方名 A Multi-Night Instantaneous Heart Rate and Accelerometry Dataset with EEG Sleep Stage Labels
版本 v1.0.1
DOI 10.13026/rees-1092
平台 PhysioNet
机构 University of Massachusetts Amherst
规模 47 人 / 253 夜 / 每夜 3 文件
模态 IHR + 三轴加速度 + Dreem2 EEG 睡眠分期
标签 AASM 5 类(双份:自动+专家)
许可 ODC-By v1.0
论文 IEEE TBME 2026;73(4):1596–1608
抓取时点 2026-10-09

附录 B:DAIMS 评估全表

维度 分数 简述
可获取性 5 ODC-By 开放直取(有地区限制)
文档完备性 4 结构详尽,缺人口学与分布细节
数据质量与标注 3 Dreem2 非 PSG,单专家无裁决
标准化程度 4 AASM 标准 + 通用格式,MAT 需特殊读取
可复现性 4 版本 DOI + 对齐公式,无官方划分
综合 4.0/5 高 AI-Ready 友好度,边界清晰

附录 C:逐项证据链自证

硬事实 来源(一手)
47 人 / 253 夜 PhysioNet 页面 Abstract 与 Data Description
每夜 3 文件 PhysioNet 页面 Data Description
0.2 Hz IHR PhysioNet 页面 Data Description
AASM 30 秒 epoch PhysioNet 页面 Abstract / Methods
ODC-By v1.0 PhysioNet 页面 License 区
DOI 10.13026/rees-1092 PhysioNet 页面 DOI 区
IEEE TBME 2026 PhysioNet 页面引用区
v1.0.1 2026-09-25 PhysioNet 页面 Versions 区

附录 D:数据获取决策树

想要可穿戴睡眠分期数据?
├─ 需要 EEG 参考标签? ── 是 ─┐
│                             └─ 需要多夜? ── 是 → bidsleep-dataset ✅
│                                          └─ 否 → 也可考虑本条(截单夜)
├─ 需要临床 PSG 金标准? ── 是 → sleep-edf / isruc-sleep / hmc-sleep-staging
├─ 需要睡眠挑战赛? ── 是 → cinc-2018-sleep
└─ 需要睡眠障碍人群? ── 是 → 本数据集不适合(健康成人)

附录 E:标签编码与对齐规范

标签编码(dreem_label / expert_label):
  0 = Wake
  1 = N1
  2 = N2
  3 = N3
  4 = REM
  5 = Unknown

时间对齐:
  epoch k 区间 = [recStart + 30×(k−1), recStart + 30×k) 秒
  时间戳 t → k = floor((t − recStart) / 30) + 1

附录 F:数据加载骨架(Python,示意)

import pandas as pd
import scipy.io as sio

# 每夜三文件
hr  = pd.read_csv("sub-XX/night-Y/hr.csv")        # timestamp(unix), hr(bpm)
acc = pd.read_csv("sub-XX/night-Y/motion.csv")    # timestamp(unix), x, y, z
lab = sio.loadmat("sub-XX/night-Y/labels.mat")    # recStart, dreem_label, expert_label

rec_start = float(lab["recStart"])
dreem_labels = lab["dreem_label"].ravel()          # 0..5
expert_labels = lab["expert_label"].ravel()

# 把任意时间戳映射到 epoch
def to_epoch(t):
    return int((t - rec_start) // 30) + 1

附录 G:推荐评估协议骨架

1. 按受试者划分(Leave-One-Subject-Out 或 GroupKFold on subject_id)
2. 逐 epoch(30s)预测,标签 0..5(可合并 Unknown)
3. 指标建议:accuracy、macro-F1、Cohen's kappa、per-stage F1
4. 对照组:dreem_label vs expert_label 两种参考分别评估
5. 报告跨夜稳定性(同一受试者各夜性能方差)

附录 H:三重引用模板

数据集:
Song, T., Zhang, Y., Zhou, Z., & Dutta, J. (2026). A Multi-Night Instantaneous
Heart Rate and Accelerometry Dataset with EEG Sleep Stage Labels (version 1.0.1).
PhysioNet. RRID:SCR_007345. https://doi.org/10.13026/rees-1092

原始论文:
Song, T.-A., Zhang, Y., Zhou, Z., Hou, L., Malekzadeh, M., Behzad, A., & Dutta, J.
(2025). AI-driven sleep staging using instantaneous heart rate and accelerometry:
Insights from an Apple Watch study. IEEE Trans Biomed Eng.
https://doi.org/10.1109/TBME.2025.3612158

平台:
Pollard, T., et al. (2026). PhysioNet as a global platform for biomedical research.
Nature Health. https://doi.org/10.1038/s44360-026-00096-z


§13 使用指南(扩充):从下载到建模的完整代码路径

本节是 §9 bis 复现指南的工程化扩充。目标:让一个拿到 DOI 的研究者,能在最短时间内把 253 夜数据装进内存、对齐成"epoch 级特征表 + 标签列",并跑通一次按受试者划分的基线。所有代码仅依赖 pandas / numpy / scipy,深度学习部分可选 torch。

13.1 三种下载路径对比

PhysioNet 内容既有 Web 界面也有命令行工具,选择取决于你的运行环境与是否需要脚本化:

路径 命令/方式 适用场景 注意
Web 直下 浏览器打开 https://physionet.org/content/bidsleep-dataset/ 点 Files 区 单次人工获取 受地区限制时会被拦
wget 镜像 wget -r -N -c -np https://physionet.org/files/bidsleep-dataset/1.0.1/ 服务器批量下载 保留目录结构,可断点续传
PhysioNet CLI 官方凭证化下载(需注册账号) 需要鉴权/大文件 本数据集为 Open Access,通常免凭证
库内镜像 部分机构镜像站同步 内网 需确认版本为 1.0.1

下载后应校验的目录结构(PhysioNet 标准布局):

bidsleep-dataset-1.0.1/
├── LICENSE.txt                 # ODC-By v1.0 原文
├── RECORDS                     # 受试者清单(若提供)
├── SHA256SUMS.txt              # 校验和(若提供)
├── subject-01/
│   ├── night-1/
│   │   ├── hr.csv
│   │   ├── motion.csv
│   │   └── labels.mat
│   ├── night-2/
│   └── ...
├── subject-02/
└── ...(共 47 个 subject 目录)

版本一致性提醒:下载后务必记录实际版本号(1.0.0 还是 1.0.1)。v1.0.1 仅更新作者名单,数据文件内容不变,但引用时应写对版本 DOI(10.13026/rees-1092 对应 1.0.1)。

13.2 用 wfdb 读取(可选路径)

虽然 BIDSleep 是 CSV + MAT 而非 WFDB 二进制格式,但 PhysioNet 生态里 wfdb 包仍是常用工具。需要注意:本数据集不使用 .hea/.dat 的 WFDB 记录格式,wfdb.rdrecord 直接读会失败。wfdb 在此处的角色主要是从 PhysioNet 拉取文件:

# 方式一:用 wfdb 的下载工具拉取整个目录(需要网络与权限)
import os
import wfdb
from wfdb import io as wfdb_io

# wfdb 提供 wfdb.dl_database 用于按记录批量下载(此处仅示意流程)
# 由于本数据集非 WFDB 记录格式,优先用下面的 requests / pandas 方式
def list_subject_dirs(root):
    return sorted(
        d for d in os.listdir(root)
        if d.startswith("subject-") and os.path.isdir(os.path.join(root, d))
    )

def list_night_dirs(subject_dir):
    return sorted(
        d for d in os.listdir(subject_dir)
        if d.startswith("night-") and os.path.isdir(os.path.join(subject_dir, d))
    )

# 例:遍历结构,确认文件完整(每夜 3 文件)
def audit_completeness(root):
    missing = []
    total_nights = 0
    for sub in list_subject_dirs(root):
        for night in list_night_dirs(os.path.join(root, sub)):
            total_nights += 1
            nd = os.path.join(root, sub, night)
            for fn in ("hr.csv", "motion.csv", "labels.mat"):
                if not os.path.exists(os.path.join(nd, fn)):
                    missing.append((sub, night, fn))
    return total_nights, missing

n_nights, miss = audit_completeness("bidsleep-dataset-1.0.1")
print(f"总夜数: {n_nights}, 缺失文件: {len(miss)}")
assert n_nights == 253, f"预期 253 夜,实际 {n_nights} 夜"

完整性断言:页面声明所有 subject-night 均完整,故上述断言 total_nights == 253 应当成立。若你的副本不满足,说明下载不完整或被截断。

13.3 用 pandas 读取 IHR 与加速度计

CSV 是本数据集的"轻量"模态,pandas 一行即可读入。关键是要预处理时间戳并建立 datetime 索引,方便后续按 epoch 切片。

import pandas as pd
import numpy as np

def load_hr(path, tz="US/Eastern"):
    """读取 hr.csv —— 瞬时心率(IHR,约 0.2 Hz)"""
    df = pd.read_csv(path)
    # 列名约定(视实际文件而定,常见为 timestamp / hr 或 time / IHR)
    tcol = "timestamp" if "timestamp" in df.columns else df.columns[0]
    vcol = [c for c in df.columns if c != tcol][0]
    df = df.rename(columns={tcol: "timestamp", vcol: "hr"})
    # Unix 秒(含亚秒)→ UTC datetime
    df["dt"] = pd.to_datetime(df["timestamp"], unit="s", utc=True)
    # 如需本地时区展示(recStart 展为 US/Eastern),可转换
    df["dt_local"] = df["dt"].dt.tz_convert(tz)
    df = df.sort_values("timestamp").reset_index(drop=True)
    return df

def load_motion(path, tz="US/Eastern"):
    """读取 motion.csv —— 三轴加速度计(x, y, z)"""
    df = pd.read_csv(path)
    tcol = "timestamp" if "timestamp" in df.columns else df.columns[0]
    axis_cols = [c for c in df.columns if c != tcol][:3]
    ren = {tcol: "timestamp"}
    for i, c in enumerate(axis_cols):
        ren[c] = ["x", "y", "z"][i]
    df = df.rename(columns=ren)
    df["dt"] = pd.to_datetime(df["timestamp"], unit="s", utc=True)
    df["dt_local"] = df["dt"].dt.tz_convert(tz)
    # 合加速度模(常用特征)
    df["acc_mag"] = np.sqrt(df["x"]**2 + df["y"]**2 + df["z"]**2)
    df = df.sort_values("timestamp").reset_index(drop=True)
    return df

hr = load_hr("bidsleep-dataset-1.0.1/subject-01/night-1/hr.csv")
acc = load_motion("bidsleep-dataset-1.0.1/subject-01/night-1/motion.csv")
print("IHR 点数:", len(hr), ",首点:", hr["dt_local"].iloc[0])
print("加速度点数:", len(acc))

采样率自检:IHR 约 0.2 Hz(平均每 5 秒一个点),可用于快速判断数据是否异常。

def estimate_rate(df):
    if len(df) < 2:
        return 0.0
    span = df["timestamp"].iloc[-1] - df["timestamp"].iloc[0]
    return (len(df) - 1) / span if span > 0 else 0.0

print("IHR 估计采样率: %.3f Hz(预期 ≈0.2)" % estimate_rate(hr))
print("加速度估计采样率: %.3f Hz" % estimate_rate(acc))

13.4 读取睡眠分期标签(labels.mat)

labels.mat 是 MATLAB 文件,用 scipy.io.loadmat 读取。三个变量:recStart、dreem_label、expert_label。

import scipy.io as sio

def load_labels(path):
    """读取 labels.mat —— recStart + dreem_label + expert_label"""
    m = sio.loadmat(path)
    rec_start = float(np.asarray(m["recStart"]).ravel()[0])
    dreem = np.asarray(m["dreem_label"]).ravel().astype(int)     # 0..5
    expert = np.asarray(m["expert_label"]).ravel().astype(int)   # 0..5
    return rec_start, dreem, expert

rec_start, dreem, expert = load_labels("bidsleep-dataset-1.0.1/subject-01/night-1/labels.mat")
print("记录起点(Unix):", rec_start)
print("epoch 数:", len(dreem), "→ 覆盖时长: %.1f 分钟" % (len(dreem) * 30 / 60))
print("dreem 标签分布:", dict(zip(*np.unique(dreem, return_counts=True))))
print("expert 标签分布:", dict(zip(*np.unique(expert, return_counts=True)))) 

recStart 时区陷阱:recStart 原始是 Unix 时间(UTC 基准),但页面在展示时转成 US/Eastern。读取时 float(np.asarray(...)) 拿到的是原始数值,请勿再叠加一次时区偏移,否则整体错位数小时。若 MAT 里存的是"字符串形式的美东时间",则需先按 §2.3 的公式用 pytz 转回 Unix。

13.5 标签对齐:把信号切进 30 秒 epoch

对齐是本数据集的核心操作。核心公式:epoch 序号 k = floor((t − recStart) / 30) + 1(1 起)。下面给出向量化实现与逐 epoch 特征聚合。

def assign_epoch(df, rec_start, epoch_len=30):
    """把每行信号的时间戳映射到 epoch 序号(1 起)"""
    k = np.floor((df["timestamp"].values - rec_start) / epoch_len).astype(int) + 1
    df = df.copy()
    df["epoch"] = k
    return df

def labels_to_series(rec_start, labels, epoch_len=30):
    """标签数组 → 以 epoch 序号为索引的 Series"""
    idx = np.arange(1, len(labels) + 1)
    return pd.Series(labels, index=idx, name="label")

hr_e = assign_epoch(hr, rec_start)
acc_e = assign_epoch(acc, rec_start)
lab = labels_to_series(rec_start, expert)      # 用 expert_label 作为参考

# 查看对齐后,epoch 与标签的覆盖情况
print("IHR epoch 范围:", hr_e["epoch"].min(), "→", hr_e["epoch"].max())
print("标签 epoch 范围:", lab.index.min(), "→", lab.index.max())
# 有效 epoch(标签不为 Unknown=5 且落在记录范围内)
valid = lab[lab != 5]
print("有效(非 Unknown)epoch 数:", len(valid))

13.6 逐 epoch 特征聚合表

把稀疏信号聚合成"每个 30 秒 epoch 一行"的特征表,这是喂给任何分类器的标准输入。下面给出一个可扩展的骨架。

def build_epoch_table(hr_e, acc_e, labels, epoch_len=30):
    rows = []
    epochs = labels.index.values
    for k in epochs:
        f = {"epoch": k, "label": int(labels.loc[k])}
        h = hr_e.loc[hr_e["epoch"] == k, "hr"].values
        a = acc_e.loc[acc_e["epoch"] == k, "acc_mag"].values
        if len(h):
            f["hr_mean"] = float(np.mean(h))
            f["hr_std"] = float(np.std(h))
            f["hr_min"] = float(np.min(h))
            f["hr_max"] = float(np.max(h))
            f["hr_range"] = float(np.max(h) - np.min(h))
            f["hr_n"] = len(h)
        if len(a):
            f["acc_mean"] = float(np.mean(a))
            f["acc_std"] = float(np.std(a))
            f["acc_max"] = float(np.max(a))
            f["acc_energy"] = float(np.sum(a ** 2))
        rows.append(f)
    return pd.DataFrame(rows)

feat = build_epoch_table(hr_e, acc_e, lab)
feat = feat.dropna(subset=["hr_mean", "acc_mean"]).reset_index(drop=True)
print(feat.head())
print("特征表规模:", feat.shape)

进阶特征建议(在骨架之上加列):

特征类型 例子 说明
IHR 分位数 p10 / p50 / p90 抵抗离群点
IHR 趋势 epoch 内线性斜率 判断心率升/降
IHR 一阶差分 相邻点差的均值 粗略活动度
运动计数 超阈值的样本数 actigraphy 经典量
跨 epoch 上下文 前/后 3 个 epoch 的均值 睡眠阶段有强时间连续性
昼夜先验 距 recStart 的分钟数 后半夜更可能深睡

时间上下文很关键:睡眠阶段具备强序列性(N1 常夹在 Wake 与 N2 之间,N3 多出现在前半夜)。只做逐 epoch 独立分类会浪费这一先验;建议用滑窗或序列模型(LSTM / 1D-CNN / Transformer)承上启下。

13.7 双标签拼接:把 dreem 与 expert 同时装进表

def build_epoch_table_dual(hr_e, acc_e, rec_start, dreem, expert):
    base = build_epoch_table(hr_e, acc_e, labels_to_series(rec_start, expert))
    dser = labels_to_series(rec_start, dreem)
    base["dreem_label"] = base["epoch"].map(dser)
    base["expert_label"] = base["label"]
    return base

feat2 = build_epoch_table_dual(hr_e, acc_e, rec_start, dreem, expert)
# 统计两版标签不一致的 epoch 比例(量化自动 vs 专家差异)
diff = (feat2["dreem_label"] != feat2["expert_label"]).mean()
print("dreem_label 与 expert_label 不一致比例: %.2f%%" % (diff * 100))

13.8 按受试者划分的训练骨架(防泄漏)

from sklearn.model_selection import GroupKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, cohen_kappa_score, f1_score

# 假设 multifeat 为全部受试者、全部夜的合并特征表,含 subject_id 列
X = feat2.drop(columns=["epoch", "label", "dreem_label", "expert_label"]).values
y = feat2["expert_label"].values                          # 参考 = 专家修正
groups = np.array([1] * len(feat2))                       # 示例:此处需填真实 subject_id

gkf = GroupKFold(n_splits=5)
accs, kappas, f1s = [], [], []
for tr, te in gkf.split(X, y, groups=groups):
    clf = RandomForestClassifier(n_estimators=200, random_state=0, n_jobs=-1)
    clf.fit(X[tr], y[tr])
    pred = clf.predict(X[te])
    accs.append(accuracy_score(y[te], pred))
    kappas.append(cohen_kappa_score(y[te], pred))
    f1s.append(f1_score(y[te], pred, average="macro"))
print("ACC=%.3f  Kappa=%.3f  MacroF1=%.3f" %
      (np.mean(accs), np.mean(kappas), np.mean(f1s)))

务必把示例里的 groups 换成真实受试者编号。若误用随机 KFold,同一受试者的不同夜会同时出现在训练与测试集,导致指标虚高(§4.3 与坑 3)。

13.9 一个最小端到端脚本(可直接改写运行)

import os, numpy as np, pandas as pd, scipy.io as sio
from sklearn.model_selection import GroupKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, cohen_kappa_score

ROOT = "bidsleep-dataset-1.0.1"
EPOCH = 30

def one_night(sub, night):
    nd = os.path.join(ROOT, sub, night)
    hr = pd.read_csv(os.path.join(nd, "hr.csv"))
    acc = pd.read_csv(os.path.join(nd, "motion.csv"))
    m = sio.loadmat(os.path.join(nd, "labels.mat"))
    rec = float(np.asarray(m["recStart"]).ravel()[0])
    y = np.asarray(m["expert_label"]).ravel().astype(int)
    return hr, acc, rec, y

def featurize(hr, acc, rec, y):
    tc_hr, tc_acc = hr.columns[0], acc.columns[0]
    hr_k = np.floor((hr[tc_hr].values - rec) / EPOCH).astype(int) + 1
    acc_t = acc[[c for c in acc.columns if c != tc_acc][:3]].values
    acc_k = np.floor((acc[tc_acc].values - rec) / EPOCH).astype(int) + 1
    acc_mag = np.linalg.norm(acc_t, axis=1)
    rows = []
    for k in range(1, len(y) + 1):
        h = hr.loc[hr_k == k, hr.columns[1]].values
        a = acc_mag[acc_k == k]
        if len(h) == 0 or len(a) == 0:
            continue
        rows.append([np.mean(h), np.std(h), np.min(h), np.max(h),
                     np.mean(a), np.std(a), np.sum(a**2), int(y[k-1])])
    return rows

def rows_for(sub):
    out = []
    base = os.path.join(ROOT, sub)
    for night in sorted(os.listdir(base)):
        if not night.startswith("night-"):
            continue
        hr, acc, rec, y = one_night(sub, night)
        for r in featurize(hr, acc, rec, y):
            out.append([sub] + r)
    return out

all_rows = []
subjects = sorted(d for d in os.listdir(ROOT) if d.startswith("subject-"))
for s in subjects:
    all_rows += rows_for(s)

cols = ["subject", "hr_mean", "hr_std", "hr_min", "hr_max",
        "acc_mean", "acc_std", "acc_energy", "y"]
df = pd.DataFrame(all_rows, columns=cols)
X = df.drop(columns=["subject", "y"]).values
y = df["y"].values
g = df["subject"].values
for tr, te in GroupKFold(n_splits=5).split(X, y, g):
    clf = RandomForestClassifier(n_estimators=200, random_state=0, n_jobs=-1).fit(X[tr], y[tr])
    pred = clf.predict(X[te])
    print("ACC %.3f  Kappa %.3f" % (accuracy_score(y[te], pred), cohen_kappa_score(y[te], pred)))

13.10 常见读取报错的排查表

报错/现象 可能原因 处理
KeyError: 'recStart' MAT 变量名不符 print(sio.loadmat(p).keys()) 确认变量名
特征大量 NaN 该 epoch 无 IHR 点(稀疏) 前向填充或跳过该 epoch
epoch 整体偏移数小时 recStart 被重复加时区 确认 recStart 是原始 Unix 秒
加速度列被误当时间 列顺序假设错误 按列名而非位置取值
指标异常高 未按受试者划分 用 GroupKFold(groups=subject)
读不到 253 夜 下载不全/区域受限 校验目录计数、换允许地区
labels.mat 长度 ≠ epoch 覆盖 记录首尾含非睡眠段 以标签长度为准裁剪信号

§14 避坑清单(扩充):编号坑点补至 20 则

§10 已列坑 1–10。本节续编号,补齐在数据读取、对齐、建模、评估、发布各环节的真实雷区。每则给出"现象—原因—处置"三段式,便于直接对照原文排查。

坑 11:把 dreem_label 与 expert_label 顺序搞反。
现象:模型评估时参考标签错位,指标离奇变化。
原因:两个变量编码一致(0…5),肉眼难分;若赋值时调换,等于用"自动标签"当参考去评"专家修正"。
处置:读取后立即用 print(np.unique(m['dreem_label']),np.unique(m['expert_label'])) 或统计两者不一致比例(通常存在少量差异,若为 0 反而可疑)做健全性检查。

坑 12:忽略 Unknown(编码 5)epoch 的处理策略。
现象:纳入 Unknown 后准确率虚高或类别不均衡恶化。
原因:Unknown 表示"不可判定",并非真实睡眠阶段;直接当第 6 类训练会引入无意义类别,丢弃又可能裁掉过渡段。
处置:明确策略并写进方法:常见做法是评估时排除 Unknown、训练时可选择掩码或合并到最近阶段。切勿不同处理混用导致前后不可比。

坑 13:把加速度单位想当然为 m/s²。
现象:跨研究对比特征量级时量纲对不上。
原因:Apple Watch 输出的加速度单位与坐标约定(是否含重力、是否 g 单位)未在页面逐字给出。
处置:不要预设单位;以相对量(合加速度模的均值/方差/能量)为主,或先做 z-score 标准化。跨设备迁移时尤其要重估量纲。

坑 14:用 IHR 直接做频域 HRV 分析。
现象:低频/高频功率谱不可信。
原因:IHR 约 0.2 Hz 采样,奈奎斯特频率约 0.1 Hz,真正的 HRV 频带(LF 0.04–0.15 Hz、HF 0.15–0.4 Hz)无法被覆盖。
处置:不要宣称做了标准 HRV 频谱;如需心率变异性信息,用"相邻 IHR 点差的统计量"作为粗粒度代理(§7b.2)。

坑 15:跨夜/跨受试者拼接时不重置 recStart。
现象:多夜合并后 epoch 序号冲突、时间戳重叠。
原因:每夜的 recStart 不同,直接拼接同一索引会把不同夜混为一谈。
处置:为每条 (subject, night) 记录唯一键,特征表保留 subject_id + night_id + epoch 复合主键,避免索引碰撞。

坑 16:假设每人都恰好 7 夜。
现象:批处理脚本在拿到 3–6 夜的受试者时崩溃或静默跳过。
原因:单人夜数为 3–7 不等(§2.1),总数 253 而非 47×7=329。
处置:遍历时以实际目录为准,不要硬编码 7;用 for night in sorted(os.listdir(ndir)) 动态枚举。

坑 17:把"文件完整"误读为"每 epoch 都有信号"。
现象:特征表出现大量空行,模型输入稀疏。
原因:文件完整(3 文件齐全)≠ 信号连续。IHR 约 0.2 Hz,且可能存在整段缺采(佩戴松动、设备摘除)。
处置:做逐 epoch 信号覆盖率统计,设定最小点数阈值,覆盖率过低的 epoch 标记为无效。

坑 18:用随机 KFold 做交叉验证。
现象:AUC/ACC 明显高于按受试者划分的结果,复现失败。
原因:同一人不同夜高度相关,随机切分导致训练集"见过"测试对象的夜间模式。
处置:一律用受试者级划分(GroupKFold / Leave-One-Subject-Out),并在论文中明确声明划分粒度(§4.3)。

坑 19:把本数据集当作 BIDS(Brain Imaging Data Structure)标准数据集来组织下游流水线。
现象:期望的 sub-XX_ses-YY_task-ZZ_eeg.* 命名不存在,流水线找不到文件。
原因:数据集名"BIDSleep"取自采集 App,页面未声称采用 BIDS 组织规范;实际是 subject-x/night-y/{hr.csv,motion.csv,labels.mat}(§9.4)。
处置:不要套用 BIDS 命名解析器;按本数据集实际的目录约定写适配层。

坑 20:引用时只写 latest DOI,不写所用版本 DOI。
现象:他人按你的引用无法复现(latest 可能已随版本漂移)。
原因:hace-p847(latest)会指向未来最新版,rees-1092(版本化)才锚定 1.0.1。
处置:论文方法/数据可用性小节写清"使用的版本号 + 版本 DOI",需要机器可复现时用版本化 DOI(§6.3)。

补充:坑 21(可选扩展)——忽略地区下载限制导致 CI 阻塞。
现象:自动化流水线在受限区域拉取数据时超时/403。
原因:抓取时点 Files 区标注 “Data Not Available — not available in your region”。
处置:在允许地区预取后经合规镜像分发;流水线中把数据获取与训练解耦,数据预先落盘。


§15 常见问题 FAQ(扩充 12+ 组)

前文 FAQ 已覆盖 24 问(A–E 五组)。本节针对"数据规模、许可、预处理、标签体系、同类差异、复现要点、引用规范"逐项深挖,供检索者与自动化问答系统直接取用。

F. 数据规模与结构

Q25. 为什么是 253 夜而不是 47×7=329 夜?
A:因为每名参与者至多连续佩戴 7 夜,实际个体差异很大(3–7 夜不等)。47 人的夜数总和恰为 253,说明并非人人戴满 7 夜。做统计时要按实际夜数加权,不要假设均衡。

Q26. 一个受试者文件夹里一定是 7 个 night 子目录吗?
A:不是。是 3 至 7 个。遍历时必须动态枚举,硬编码 7 会在部分受试者上出错。

Q27. 每夜文件数固定吗?
A:固定为 3 个:hr.csv、motion.csv、labels.mat。页面声明所有 subject-night 均完整,三模态全部可得。

Q28. 数据总量大概多大?
A:页面未逐字披露单文件行数与总大小。以 IHR 约 0.2 Hz 粗估,一夜 8 小时约 5760 个 IHR 点、约 5760 行标签(30 秒 epoch → 960 个 epoch/夜);实际数字以文件为准。这一项属于"待核"细节,引用时不要编造。

G. 许可与获取

Q29. ODC-By v1.0 和 CC BY 有什么区别?
A:两者都是归属型开放许可。ODC-By 是数据库领域的专门许可,客体是"数据库/数据集";CC BY 面向更广义的作品。对本数据集而言,二者实质约束接近:可用、可改、可商用、可再分发,只需署名,非 NC、非 ND。

Q30. 可以商用吗?
A:可以。ODC-By 不禁止商业使用。但商用仍需完成归属(引数据集 DOI + 论文,见下)。

Q31. 需要向谁申请吗?
A:不需要。Open Access 直取。但抓取时点存在地区性下载限制(“Data Not Available”),属平台落地策略,不是许可要求。

Q32. 下载被拦怎么办?
A:确认你所在区域;尝试从允许地区访问,或经机构镜像获取。切勿使用违反平台条款的手段绕过。

H. 预处理

Q33. IHR 有缺失怎么办?
A:IHR 是稀疏点(约 0.2 Hz),某些 epoch 可能没有点。常见处理:① 前向填充;② 用邻域统计插值;③ 设覆盖率阈值、过低的 epoch 丢弃。不要盲目对所有 epoch 做高频插值,会制造虚假信息。

Q34. 加速度要不要去重力?
A:页面未明确给出单位与是否含重力。稳妥做法是以相对量(合加速度模的均值/方差/能量)为主,或先做标准化,避免把"重力常数"当信号。

Q35. 要不要做逐夜归一化?
A:推荐。个体间心率基线差异大(年龄、体质),逐夜或逐受试者 z-score 能削弱个体偏置,提升跨受试者泛化。但注意:归一化只能用训练集统计量,否则构成泄漏。

Q36. 标签里的 Unknown 怎么处理?
A:评估时通常排除 Unknown;训练时可掩码或保留。无论怎么选,都要在方法中声明并与基线保持一致。

I. 标签体系

Q37. 5 类分期与 AASM 标准一致吗?
A:一致。Wake/N1/N2/N3/REM 是 AASM 的 5 阶段体系(N3 合并了旧标准的 3、4 期),epoch 长度为 30 秒。

Q38. 为什么有两份标签?用哪个?
A:dreem_label 是 Dreem 设备自动评分,expert_label 是专家逐 epoch 修正。论文级使用建议以 expert_label 为主参考;用 dreem_label 时要在方法与局限中说明。也可两者对照做敏感性分析。

Q39. 专家是谁、几个人?一致性如何?
A:一名受训睡眠专家,逐 epoch 复核 EEG 与自动 hypnogram。无评分者间裁决,标签一致性未量化。这是本数据集的核心局限之一。

Q40. 参考标签能等同 PSG 吗?
A:不能。页面明确 Dreem 2 “is not equivalent to full polysomnography”,缺 EOG/EMG 等导联,过渡期可能出现轻微差异。它是"高质量参考",不是绝对真值。

J. 与同类数据集的差异

Q41. 与 sleep-edf(rid 73)最大的区别?
A:sleep-edf 是 PSG 多导睡眠图(EEG/EOG/EMG),BIDSleep 是消费级 Apple Watch(IHR+加速度)+ Dreem 2 EEG 参考。模态与设备定位根本不同,非别名非版本。

Q42. 与 cinc-2018-sleep(rid 493)区别?
A:CinC 2018 是挑战赛数据集,带官方评测;BIDSleep 无官方排行榜/统一划分,是开放验证资源。

Q43. 与 mesa-sleep(302)/mros-sleep(292)区别?
A:MESA/MrOS 是大型流行病学队列的 PSG 子集,人群为老年/慢病方向;BIDSleep 是 47 人健康成人、可穿戴信号、多夜配对。

Q44. 与 wearable-exam-stress(807)的关系?
A:同属"可穿戴传感"主题相邻,但 807 关注体检应激,本数据集关注睡眠分期,任务不同。

K. 复现要点

Q45. 复现时最容易在哪一步翻车?
A:时间对齐(recStart 时区)与数据划分(是否按受试者)。前者导致整体错位,后者导致指标虚高。其次是 Unknown 处理不一致。

Q46. 指标该报什么?
A:建议 accuracy、macro-F1、Cohen’s kappa、per-stage F1 四件套,并声明是否合并 Unknown、参考用哪份标签。不要只报 accuracy(类别不平衡会误导)。

Q47. 需要多少算力?
A:极小。253 夜、每夜约数百到上千 epoch,特征级建模在 CPU 上分钟级完成;端到端深度模型也可单卡跑通。这正是它作为"轻量验证集"的优点。

Q48. 能训大模型吗?
A:不适合从零训基座(样本小)。更适合:预训练后在 253 夜上微调、做迁移/自适应研究、或作为外部验证集。

L. 引用规范

Q49. 到底要引几项?
A:PhysioNet 要求三重引用:① 数据集本体(含版本 DOI 10.13026/rees-1092);② 原始论文(IEEE TBME,DOI 10.1109/TBME.2025.3612158);③ PhysioNet 平台引用(Pollard et al. 2026, Nature Health)。

Q50. 版本写哪个?
A:写你实际使用的版本。默认写 v1.0.1 + rees-1092。需要"始终最新"时可用 latest DOI 10.13026/hace-p847,但复现导向应写版本化 DOI。

Q51. 署名在哪写?
A:ODC-By 要求保留归属,建议在论文的数据可用性声明、模型卡(model card)、代码仓库 README 中均列明三重引用。


§16 相关数据集对照表(库内 + 库外)

16.1 库内睡眠/可穿戴类条目横向对比

库内共 6 条睡眠类 PSG 条目 + 1 条可穿戴应激条目;BIDSleep 在"设备定位"一栏独树一帜。

条目 rid 信号/模态 金标签来源 人群 规模特征 与 BIDSleep 的差异要点
bidsleep-dataset(本条) — Apple Watch IHR(PPG,~0.2 Hz)+ 三轴加速度 Dreem 2 EEG(AASM 30s epoch,单专家修正) 47 名健康成人 253 夜,多夜配对 唯一"消费级手表信号 + EEG 参考"多夜开放集
sleep-edf 73 PSG(EEG/EOG/EMG) 专家视觉分期 健康 + 睡眠障碍混合 多受试者单/少数夜 临床 PSG,无可穿戴信号,非手表场景
isruc-sleep 262 PSG 专家视觉分期 睡眠障碍相关队列 多受试者 无消费级设备,非 IHR 路线
cinc-2018-sleep 493 PSG + 挑战赛 专家标注 + 官方评测 研究队列 挑战赛规模 有官方排行榜;BIDSleep 无统一评测
hmc-sleep-staging 654 PSG 专家分期 睡眠队列 中等 无手表数据,模态不同
mesa-sleep 302 PSG(多导联) 专家 + 中心化评分 MESA 大型队列(中老年) 大样本流行病学 人群与设备定位不同;无手表
mros-sleep 292 PSG(多导联) 中心化评分 MrOS 老年男性队列 大样本队列 同上,老年队列
wearable-exam-stress 807 可穿戴生理信号 应激/体检相关标注 体检人群 主题相邻 任务是应激评估非睡眠分期

一句话对照结论:库内所有睡眠条目的信号源都是临床多导联(PSG);只有 BIDSleep 的信号源是消费级智能手表,而且它是唯一把手表信号与独立 EEG 参考逐夜配对的开放数据集。找"手表睡眠分期"应直达本条;找"临床 PSG 分期"则去 sleep-edf 等。

16.2 库内可穿戴感知类条目

条目 rid 传感模态 任务 与本条关系
bidsleep-dataset(本条) — 腕表 PPG-IHR + 加速度 睡眠分期 本条目
wearable-exam-stress 807 可穿戴生理信号 应激/体检 同属可穿戴主题,任务不同

16.3 库外相关公开资源(方法学参照,非库内条目)

资源 类型 与 BIDSleep 的关系 备注
PhysioNet 平台本体 数据托管平台 本数据集载体 RRID:SCR_007345
IEEE TBME 2026 论文 原始论文 数据集配套文献 DOI 10.1109/TBME.2025.3612158
PLoS One 2023 前作 方法学前作 actigraphy + 心率分期可行性 Song et al. 2023
Dreem 2 设备相关研究 设备验证文献 参考标签来源设备的证据链 非本数据集发布物
Apple Watch 睡眠监测类研究 消费级设备研究 与本题"设备可靠性"主题相邻 多为厂商或无开源数据

16.4 选择决策矩阵(给"我该用哪个"的检索者)

你的需求 首选 次选 不建议
手表信号 → 睡眠分期,要 EEG 参考 bidsleep-dataset — PSG 队列(无手表信号)
临床级 PSG 金标签 sleep-edf / hmc-sleep-staging mesa-sleep / mros-sleep bidsleep(非 PSG)
睡眠障碍人群 isruc-sleep sleep-edf(含障碍) bidsleep(健康成人)
官方排行榜/挑战赛 cinc-2018-sleep — bidsleep(无评测协议)
大样本人群推断 mesa-sleep / mros-sleep — bidsleep(47 人)
可穿戴 + 睡眠多夜配对 bidsleep-dataset — 其余均非手表信号
可穿戴 + 应激(非睡眠) wearable-exam-stress(807) — bidsleep(任务是睡眠)

16.5 组合使用建议

  1. PSG 预训练 + 手表微调:用 sleep-edf/hmc-sleep-staging 学分期表征,再在 BIDSleep 上验证可穿戴泛化。
  2. 跨模态一致性研究:把 BIDSleep 的手表标签能力与某 PSG 队列的深度分期能力做方法学对照。
  3. 多夜泛化的对照实验:在单一的 PSG 单夜集上训练、在 BIDSleep 多夜集上评估跨夜稳定性。
  4. 评估协议借镜:借鉴 cinc-2018-sleep 的分期评估指标(per-stage F1、kappa)迁移到 BIDSleep 自定划分上。

§17 参考文献与来源(附录 L)

本节把 FACTS.md 中出现的全部 URL、DOI 与论文逐条列全,作为可追溯的一手来源清单。所有条目均来自 FACTS.md 的一手抓取(PhysioNet 内容页 + 论文元数据),未在本次扩写中新增网络抓取。

17.1 一手数据来源(Primary Sources)

# 类型 标识 链接
P1 PhysioNet 内容页(版本化) 1.0.1 https://physionet.org/content/bidsleep-dataset/1.0.1/
P2 PhysioNet 内容页(短链) latest https://physionet.org/content/bidsleep-dataset/
P3 PhysioNet 文件目录 1.0.1 https://physionet.org/files/bidsleep-dataset/1.0.1/
P4 数据集版本 DOI 10.13026/rees-1092 https://doi.org/10.13026/rees-1092
P5 数据集 latest DOI 10.13026/hace-p847 https://doi.org/10.13026/hace-p847
P6 抓取时点 2026-10-09 正文 48,943 字节,私有区 physionet_page.html

17.2 论文与文献(Publications)

# 类型 文献 标识
L1 原始论文(本数据集) Song, T.-A., Zhang, Y., Zhou, Z., Hou, L., Malekzadeh, M., Behzad, A., & Dutta, J. (2025). AI-driven sleep staging using instantaneous heart rate and accelerometry: Insights from an Apple Watch study. IEEE Transactions on Biomedical Engineering, 2026 Apr;73(4):1596–1608. doi:10.1109/TBME.2025.3612158
L2 方法学前作 Song TA, Chowdhury SR, Malekzadeh M, et al. (2023). AI-driven sleep staging from actigraphy and heart rate. PLoS One 18(5):e0285701(页面 ref [6];e-number 未逐字抓取,正文标 18:1–29). PLOS ONE 2023 May
L3 PhysioNet 平台引用(标准) Pollard, T., Moody, B. E., Lehman, L., Gow, B., Fernandes, C., Xie, C., Johnson, A., Mark, R. G., & Heldt, T. (2026). PhysioNet as a global platform for biomedical research. Nature Health. doi:10.1038/s44360-026-00096-z
L4 数据集 APA 引用(PhysioNet 官方) Song, T., Zhang, Y., Zhou, Z., & Dutta, J. (2026). A Multi-Night Instantaneous Heart Rate and Accelerometry Dataset with EEG Sleep Stage Labels (version 1.0.1). PhysioNet. RRID:SCR_007345. doi:10.13026/rees-1092

17.3 平台与基础设施标识

# 项目 值
I1 平台 PhysioNet(Open Access)
I2 平台维护 MIT Laboratory for Computational Physiology
I3 平台 RRID SCR_007345
I4 平台资助 NIBIB、NHLBI、NIH Office of the Director(U24EB037545、R01EB030362)
I5 数据集资助 NIH R21AG068890、R01AG082354、P30AG073107;Dreem Jury’s Prize
I6 伦理审查机构(正文口径) University of Massachusetts Lowell IRB
I7 作者机构口径 University of Massachusetts Amherst

17.4 作者与机构署名(v1.0.1)

作者 Profile 机构标注
Tzu-An Song bidslab The Department of Biomedical Engineering at the University of Massachusetts Amherst
Yubo Zhang yubozhang University of Massachusetts Amherst
Ziyuan Zhou ziyuanzhou University of Massachusetts Amherst
Joyita Dutta(通讯资深作者) jd293952 University of Massachusetts Amherst

17.5 检索与引用建议

  • 写论文引数据集:用 L4(APA)+ P4(版本 DOI),并补 L1(论文)。
  • 写模型卡/仓库:三引齐全(L4 + L1 + L3)。
  • 需要"始终最新":用 P5(latest DOI),但复现导向仍应写版本号。
  • 需要验明正身:以 P1(版本化内容页)为准,核对标题、版本、文件结构。

§18 存照附录:关键硬数字的来源逐条存照

本节把正文出现的每一个关键硬数字与其一手来源逐条对齐,供审阅者快速核证。来源缩写:PN = PhysioNet 内容页 https://physionet.org/content/bidsleep-dataset/1.0.1/(抓取时点 2026-10-09,正文 48,943 字节)。

# 硬数字 值 一手来源(PN 页面区块) 存照状态
S1 参与人数 47 名健康成人 Abstract / Methods ✅ 页面逐字
S2 总夜数 253 夜 Abstract ✅ 页面逐字
S3 单人夜数 至多连续 7 夜(个体 3–7) Abstract / Data Description ✅ 页面逐字
S4 受试者文件夹数 47 Data Description ✅ 页面逐字
S5 每夜文件数 3(hr.csv / motion.csv / labels.mat) Data Description ✅ 页面逐字
S6 IHR 采样率 约 0.2 Hz Data Description ✅ 页面逐字
S7 加速度轴数 3(x, y, z) Data Description ✅ 页面逐字
S8 epoch 分辨率 30 秒 Abstract / Data Description ✅ 页面逐字
S9 分期类别 Wake/N1/N2/N3/REM(+Unknown=5) Methods / labels.mat ✅ 页面逐字
S10 标签编码 0=Wake,1=N1,2=N2,3=N3,4=REM,5=Unknown Methods / labels.mat ✅ 页面逐字
S11 对齐公式 k = floor((t − recStart)/30) + 1 Data Description ✅ 页面逐字
S12 许可 ODC-By v1.0 License 区 ✅ 页面逐字
S13 版本 DOI 10.13026/rees-1092 DOI 区 ✅ 页面逐字
S14 latest DOI 10.13026/hace-p847 DOI 区 ✅ 页面逐字
S15 当前版本 v1.0.1 Versions 区 ✅ 页面逐字
S16 首发版本与日期 v1.0.0 · 2026-05-12 Versions 区 ✅ 页面逐字
S17 v1.0.1 日期 2026-09-25(更新作者名单) Versions / 页面 “Published Sept. 25, 2026” ✅ 页面逐字
S18 论文卷期页 IEEE TBME 2026 Apr;73(4):1596–1608 References 区 ✅ 页面逐字
S19 论文 DOI 10.1109/TBME.2025.3612158 References 区 ✅ 页面逐字
S20 前作 PLoS One 2023(actigraphy + heart rate) References 区 ref [6] ⚠️ e-number 未逐字
S21 平台 RRID SCR_007345 PhysioNet 页脚 ✅ 页面逐字
S22 资助编号(数据集) R21AG068890, R01AG082354, P30AG073107 Funding/Acknowledgements ✅ 页面逐字
S23 资助编号(平台) U24EB037545, R01EB030362 PhysioNet 页脚 ✅ 页面逐字
S24 专家复核人数 1(无评分者间裁决) Methods ✅ 页面逐字
S25 参考设备 Dreem 2 EEG Headband Abstract / Methods ✅ 页面逐字
S26 待测设备 Apple Watch(App 名 BIDSleep) Abstract / Methods ✅ 页面逐字
S27 采集环境 家中 Abstract / Methods ✅ 页面逐字
S28 同步方式 同一部 iPhone 同时记录 Methods ✅ 页面逐字

18.1 双口径与待核项存照

# 事项 口径 A 口径 B 状态
D1 IRB 机构 UMass Lowell IRB(正文) UMass Amherst(作者机构) ⚠️ 冲突,页面未澄清
D2 数据可获取性 Access Policy “Anyone can access” Files 区 “Data Not Available — your region” ⚠️ 地区限制,非许可变更
D3 DOI 双口径 版本化 rees-1092 latest hace-p847 ✅ PhysioNet 常规双 DOI
D4 论文年份 PhysioNet 引用标 (2026) DOI 前缀/在线首发 2025 ⚠️ 双口径并存
D5 标签一致性 专家修正版 仅一人,无交叉验证 ⚠️ 页面自曝局限
U1 性别比例/年龄分布 未披露(仅"无性别/族裔限制") — 🔍 待核
U2 各睡眠阶段 epoch 计数 未披露 — 🔍 待核
U3 hr.csv / motion.csv 行数与总大小 未披露 — 🔍 待核
U4 前作 PLoS One 2023 e-number 页面只给 18:1–29 — 🔍 待核
U5 逐文件 md5/校验和 沙箱区域受限未能实抓 — 🔍 待核

存照原则:凡"页面逐字"项可直接引用;凡"待核"项(U 系列)在论文中不要编造数字,如需可在方法中注明"未披露";凡"双口径"项(D 系列)应按页面原文双写,不擅自裁决。

18.2 存照方法学说明

  • 截图/存档:抓取时点页面正文 48,943 字节已存私有区 physionet_page.html,可复核。
  • 版本锚定:以下所有硬数字对应 v1.0.1(2026-09-25)。
  • 可复现核验路径:打开 P1 → 依次核对 Abstract(S1/S2/S3/S8/S9)、Data Description(S4–S8/S11)、Methods(S9/S10/S19/S24–S28)、License(S12)、Versions(S15–S17)、References(S18–S20)、页脚(S21–S23)。

相关数据集导航

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

  • ieeepg — 共享标签:生理信号 / 可穿戴传感 / 心电信号 / 时序数据 / 评测基准
  • mmash — 共享标签:生理信号 / 睡眠信号 / 可穿戴传感 / 心电信号 / 评测基准
  • dreamt — 共享标签:生理信号 / 睡眠信号 / 可穿戴传感 / 评测基准
  • hmc-sleep-staging — 共享标签:生理信号 / 睡眠信号 / 心电信号 / 评测基准
  • apnea-ecg — 共享标签:生理信号 / 睡眠信号 / 心电信号 / 评测基准
  • shanghai-t1dm-t2dm-cgm — 共享标签:生理信号 / 可穿戴传感 / 时序数据 / 评测基准
  • boas-bitbrain — 共享标签:生理信号 / 睡眠信号 / 可穿戴传感 / 评测基准
  • wearable-exam-stress — 共享标签:生理信号 / 可穿戴传感 / 时序数据 / 评测基准
  • globem — 共享标签:生理信号 / 睡眠信号 / 可穿戴传感 / 评测基准
  • cinc-2018-sleep-arousal — 共享标签:生理信号 / 睡眠信号 / 时序数据 / 评测基准

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

返回 AI-Ready 数据集