MrOS Sleep Study — 老年男性居家 PSG 队列 AI-Ready Wikipedia

2,911 名老年男性居家多导睡眠与长期健康随访队列

来源 美国国家睡眠研究资源(NSRR) url: https://sleepdata.org/datasets/mros发布时间: 2026-09-12最后更新: 2026-09-25 阅读 49
MrOS Sleep Study — 老年男性居家 PSG 队列 AI-Ready Wikipedia

信息速览

数据集名称MrOS Sleep Study — 老年男性居家 PSG 队列 AI-Ready Wikipedia
数据类型约 2,911 名老年男性,3,933 例整夜 PSG 记录,EDF/XML/CSV 三类格式,免费注册获取,6 个美国临床中心
规模2,911 名老年男性(Visit 1 PSG 合格)
接入方式美国国家睡眠研究资源(NSRR) url: https://sleepdata.org/datasets/mros
AI 就绪度

数据集封面

MrOS Sleep Study(MrOS 男性睡眠研究队列)— 居家多导睡眠 + 骨骼健康随访 AI-Ready Wikipedia

INFOBOX

字段 内容
数据集名称 MrOS Sleep Study(男性骨质疏松睡眠研究)
英文全称 Osteoporotic Fractures in Men (MrOS) Sleep Study — Outcomes of Sleep Disorders in Older Men
别名/简称 MrOS Sleep、MrOS 睡眠研究、NSRR MrOS
疾病分类 ICD-11 7A41(阻塞性睡眠呼吸暂停)
SNOMED CT 73430006(Obstructive sleep apnea)
数据模态 居家整夜多导睡眠图(PSG)信号 + 睡眠问卷与体动仪摘要 + DEXA 骨密度与跌倒/骨折/认知/死亡纵向随访
AI 任务类型 睡眠分期、睡眠呼吸暂停筛查与 AHI 回归、呼吸事件检测、疾病风险预测
样本总数 2,911 例(Visit 1 PSG 合格);其中 1,026 例有 Visit 2 重复 PSG
数据大小 Visit 1 2,907 例 + Visit 2 1,026 例 EDF/XML 记录;核心表格 visit1/visit2 各 2,911 行
数据格式 EDF(信号)、XML(标注)、CSV(表格)、PDF(手册与表单)
许可证 NSRR Data Access and Use Agreement(DAUA,免费研究使用)
访问级别 注册后开放(NSRR 账号 + 签署 DAUA)
DUO 标签 GRU(通用研究使用)+ NCU(非商业用途);实际以 NSRR DAUA 条款为准
语言 英语(文档、变量名与标注术语)
首发日期 2015-08(NSRR 上线)
最后更新 2025-03(Visit 1 三个 EDF 重复导出问题修复)
发布机构 旧金山协调中心(San Francisco Coordinating Center,UCSF)/ NSRR(Brigham and Women’s Hospital)
官方主页 https://sleepdata.org/datasets/mros
下载地址 https://sleepdata.org/datasets/mros/files
DOI 10.25822/kc27-0425(NSRR 数据集 DOI)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 睡眠分期与呼吸事件双版本 XML 标注、EDF 标准格式、官方数据字典与 CLI 工具链齐备;扣分项:无官方 ML 划分、Visit 2 腿动通道不可用、低通气双标签需自行合并
页面状态 published

§0 E-E-A-T 信任声明与免责声明

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、睡眠呼吸障碍与骨质疏松临床任务定义、金标准描述)、§7 偏倚分析。

数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方医数集与 UCSF 旧金山协调中心、Brigham and Women’s Hospital、NSRR 无任何商业利益关联。本页面不销售 MrOS Sleep Study 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。MrOS Sleep Study 要求用户注册 NSRR 账号并签署 Data Access and Use Agreement(DAUA),数据仅供研究目的使用、禁止再分发。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。

§1 数据集概览

§1.0 📌 30 秒速览

这是什么? 在一项追踪美国 5,994 名老年男性骨骼健康的大型队列(MrOS)里,研究者于 2003 至 2005 年挑选了 3,135 人,带着便携睡眠监测仪走进他们家中做了一整夜多导睡眠图(PSG)检查——就像把睡眠实验室搬进卧室。其中 2,911 人获得了技术合格的整夜信号,这就是 MrOS Sleep Study 的核心数据,2009 至 2012 年约 1,000 人又复查了一晚,如今在 NSRR 平台免费向全球研究者开放。

为什么重要? 睡眠呼吸暂停在老年人中极其常见,但老年居家 PSG 公开数据非常稀缺。这份数据集第一次把"整夜脑电、呼吸、血氧信号"与"此后多年谁跌倒、谁骨折、谁认知下降、谁去世"的随访记录绑在了一起,让 AI 模型可以直接学习"一晚睡眠"与"未来健康结局"的关联,还被用于训练检测帕金森病的呼吸 AI。

我能用它做什么? 训练睡眠分期与呼吸事件检测模型、构建 AHI 筛查算法、验证睡眠基础模型的跨人群泛化、利用约 1,026 例重复 PSG 研究睡眠的纵向变化,或把 PSG 信号与骨折、死亡等结局做生存分析。全部数据 EDF/XML/CSV 三类格式开箱即用。

§1.1 摘要

MrOS Sleep Study(官方名称 Outcomes of Sleep Disorders in Older Men,注册号 NCT00070681)是 MrOS 母队列(Osteoporotic Fractures in Men Study,2000 至 2002 年于 6 个美国临床中心入组 5,994 名 ≥65 岁社区男性)的睡眠辅助研究,由 NHLBI 以 R01 HL071194 等 8 项资助、旧金山协调中心(UCSF)牵头协调。Sleep Visit 1(2003-12 至 2005-03)招募 3,135 名受试者,在受试者家中完成单夜未设护 PSG(Compumedics Safiro 系统,16 通道标准导联:双中央脑电、双眼电、下颌与双侧腿动肌电、双导心电、胸腹电感体积描记、热敏与鼻压力气流、Nonin 指脉氧、体位)与 3 至 5 天体动仪佩戴;信号由凯斯西储大学中央阅片中心统一评分,超过 70% 的记录质量评为优秀或杰出。最终 2,911 例(93%)信号技术合格并构成本数据集主体;Sleep Visit 2(2009-2012)对部分受试者重复采集,NSRR 收录 1,026 例重复 PSG。数据以 EDF 信号、双版本 XML 标注(Profusion 原始版 + NSRR 转换版)与 CSV 核心表格发布,配跌倒(每 4 个月随访,完成率 >97%)、影像确认的骨折(平均随访 6.8 年)、认知与死亡结局,2015-08 起经 NSRR 免费共享(NSRR 数据集页)。

§1.2 战略价值

维度一:老年全男性居家 PSG 的稀缺性。 公开 PSG 资源以中年混合性别人群或实验室环境为主,而 OSA 患病率随年龄陡增、且男性为高发人群,老年男性恰恰是临床上最需要筛查却最少被数据覆盖的群体。MrOS Sleep Study 提供了 2,911 例平均 76 岁男性的整夜居家信号,配合统一的中央评分协议与公开的设备导联规格,是测试老年人群睡眠算法泛化性的天然基准(NSRR 设备页)。

维度二:信号 × 骨骼/死亡结局的纵向绑定。 大多数公开睡眠数据集只提供"信号 + 当晚评分",MrOS Sleep Study 却延续了母队列的流行病学随访:每 4 个月明信片随访(完成率 >97%)、影像确认的骨折(平均 6.8 年)、中央裁定的心血管死亡。这意味着研究者不仅能做"睡眠分期"这类工程任务,还能直接建模"夜间低氧 → 跌倒/骨折/死亡"的临床问题——Stone 2014、Cauley 2014 等论文已经用该数据集建立了这一范式的标杆结果(Stone 2014)。

维度三:基础模型时代的外部验证资产。 2022 年以来,MrOS 数据先后进入帕金森病呼吸 AI(Yang et al., 2022, Nature Medicine)与多模态睡眠基础模型 SleepFM(Thapa et al., 2026, Nature Medicine)的训练与验证体系,约 1,026 例间隔约 6 年的重复 PSG 更是公开数据中少见的纵向睡眠资源,使该数据集成为检验 AI 模型时间稳定性与跨中心泛化的关键外部资产(Yang 2022)。

§1.3 同类数据集横向对比

数据集 人群 规模(PSG 记录) 模态与标注 与 MrOS Sleep 的差异化
MrOS Sleep Study ≥65 岁社区男性(6 个美国中心) 2,907(V1)+ 1,026(V2) 居家 PSG EDF + 双版本 XML 评分 + 跌倒/骨折/认知/死亡随访 唯一同时具备老年、全男性、骨骼结局与重复 PSG 的公开资源
Sleep Heart Health Study(SHHS) ≥40 岁男女(CVD 结局导向) SHHS1 5,793 + SHHS2 2,651 条标注记录 居家 PSG EDF + XML + 心血管结局 人群更年轻、混合性别;规模更大但无骨骼结局
MESA Sleep 45-84 岁多种族男女 2,054 条标注记录 居家 PSG + XML 多种族中年人群,适合种族/性别对比分析
SOF Sleep ≥65 岁社区女性(2 个中心) 461 居家 12 通道 PSG(Compumedics Siesta) 天然的女性老年对照组,可与 MrOS 串联做性别比较

来源:AJRCCM 2025 会议摘要(SHHS/MESA/MrOS 标注记录数)与 NSRR、PMC7864583(SOF)。

§1.4 版本时间轴

时间 版本/事件 说明
2003-12 至 2005-03 Sleep Visit 1 采集 3,135 名完成,2,911 例 PSG 合格
2009 至 2012 Sleep Visit 2 采集 重复 PSG,NSRR 收录 1,026 例
2015-08 NSRR 上线 PSG 数据经 Compumedics Profusion 导出后发布
2016-12 脱敏更新 EDF 记录日期统一改为 01.01.85
2017-02 V2 文件替换 灯光设置与关联引用问题修复(6 例重导出)
2018-12 V1 文件修复 aa2180 XML 移除;aa2618/aa2931 重导出
2022-04 V1 清理 aa2159/aa4156 XML 标注移除(不可靠)
2025-03 V1 重大修复 aa1510/aa1876/aa3545 原为他人记录的重复导出,已替换并移除对应 NSRR XML

来源:NSRR 更新日志。

§1.5 典型应用场景

  1. 老年睡眠分期与呼吸事件检测:以 2,911 例中央评分 PSG 训练/测试分期模型,重点检验老年低幅脑电场景下的鲁棒性。
  2. AHI 筛查与严重度分级:利用呼吸事件 XML 与血氧通道构建居家 PSG/可穿戴设备的 OSA 筛查算法,并可对齐 SleepFM 的四级严重度协议。
  3. 睡眠生理 → 健康结局预测:把一晚信号特征与跌倒、骨折、认知、死亡结局做生存分析与深度学习风险预测。
  4. 纵向睡眠变化建模:约 1,026 例相隔约 6 年的重复 PSG 支持睡眠老化研究与前后对比模型验证。
  5. 基础模型外部验证:将 MrOS 作为独立外部测试集,检验 SHHS 或医院数据训练的睡眠模型跨中心、跨人群泛化能力。
  6. 心率变异性与自主神经研究:官方辅助研究(Ancillary Study #108,凯斯西储大学)已对 Visit 1 信号完成 HRV 分析并将时/频域指标作为衍生变量随数据集发布,可直接用于自主神经特征建模,无需自行重算(NSRR 数据集页)。
  7. 老年睡眠性别差异研究的"男性半区":与 NSRR 上的 SOF Sleep(≥65 岁女性,461 例)配对使用,构成老年睡眠研究的性别对照组合;两队列共享相似的中央评分思路与随访框架,适合合并后的分层性别比较(PMC7864583)。

§2 医学背景

§2.1 ICD-11 编码表

标签 ICD-11 编码 中文名称
阻塞性睡眠呼吸暂停 7A41 阻塞性睡眠呼吸暂停
中枢性睡眠呼吸暂停 7A40 中枢性睡眠呼吸暂停
睡眠相关低通气/低血氧 7A42.6 睡眠相关性低氧血症
慢性失眠 7A00 慢性失眠症
不宁腿综合征 7A80 不安腿综合征
周期性肢体运动 7A81 周期性肢体运动障碍

来源:WHO ICD-11 MMS 睡眠-觉醒障碍章节(第 7 章)官方简明编码列表。

§2.1b SNOMED CT 映射表

标签 ICD-11 SNOMED CT 术语
阻塞性睡眠呼吸暂停 7A41 73430006 Obstructive sleep apnea
慢性失眠 7A00 193462001 Insomnia
骨质疏松 见 WHO ICD-11 浏览器 64859006 Osteoporosis
骨折 见 WHO ICD-11 浏览器 125605004 Fracture of bone

说明:本数据集核心临床锚点是睡眠呼吸障碍(7A4 区段),骨骼结局(骨质疏松/骨折)通过 MrOS 母队列的 DEXA 与影像裁定进入分析,映射以 WHO ICD-11 浏览器实时查询为准。

§2.2 疾病简介与流行病学

睡眠呼吸障碍(Sleep-Disordered Breathing, SDB)以睡眠期间反复的上气道塌陷(阻塞性呼吸暂停/低通气)与间歇性低氧为核心,在老年人群中极为普遍——老年人群 SDB 患病率可高达 60%(Cauley 2014)。其病理生理后果包括间歇性低氧、交感兴奋、睡眠片段化,与高血压、心律失常、认知衰退相关;在骨质疏松语境下,低氧还可能通过抑制成骨、损害平衡与注意力而间接促进跌倒与骨折。MrOS 母队列本身就是研究老年男性骨质疏松与骨折的流行病学平台,其睡眠辅助研究因此天然聚焦三个临床问题:SDB 与低氧是否增加跌倒与骨折风险、是否加速认知下降、是否升高心血管与全因死亡。Stone 2014 给出的关键发现是:夜间低氧(≥10% 睡眠时间 SaO2 < 90%)与反复跌倒独立相关(OR = 1.62),而传统 AHI 与跌倒无关——提示"低氧负荷"而非"呼吸事件计数"才是老年人群的毒性指标,这一结论直接塑造了后续 AI 特征工程的取向。

对 AI 建模者而言,老年 SDB 有两个与中年人群截然不同的特征,直接决定模型设计取向。其一,老年阶段的呼吸事件以低通气为主、呼吸暂停占比下降,且事件更常出现在 REM 期,仅依赖气流幅度阈值的事件检测器在此人群容易漏检;这也是 MrOS 评分协议同时保留热敏(整体气流)与鼻压力(压力波动)双通道气流测量的原因——后者对低通气的幅度衰减更敏感。其二,老年睡眠结构本身老化:慢波睡眠(N3)显著减少、睡眠片段化增加、觉醒阈值升高,分期模型如果直接迁移中年人群的先验,会在 N3 类别上系统性失效,因此 2,911 例老年居家 PSG 的价值恰恰在于提供了足够大的老年脑电分布样本,让分期模型可以在"低幅快频为主"的脑电形态上重新校准。

另一个值得注意的临床叙事是"低氧负荷优于事件计数":在 Stone 2014 与 Cauley 2014 中,与跌倒、骨折风险相关的是夜间低氧暴露(SaO2 < 90% 时间占比、最低血氧等)而非 AHI。对特征工程而言,这意味着从 1 Hz 血氧通道直接计算的连续型低氧指标可能比离散事件计数携带更多下游风险信息;对标签口径而言,这意味着把坑点 1 中的 Unsure 低通气合并进事件表不仅是"修正 AHI 偏差",更是避免把最具毒性的重度低氧事件从模型输入中系统性剔除。

§2.3 临床任务定义

任务 输入 输出 本数据集支撑
筛查:老年 OSA 整夜 PSG 信号 是否 OSA / 严重度四级 2,911 例居家 PSG + 中央评分呼吸事件
诊断辅助:睡眠分期 EEG/EOG/EMG 通道 30 秒 epoch 五级分期 双版本 XML 分期标注
分级:低氧负荷 SpO2 通道 SaO2 < 90% 时间占比等 1 Hz Nonin 血氧通道
预后:跌倒/骨折/死亡 一晚睡眠生理 随访期结局风险 每 4 个月随访 + 影像确认骨折 + 死亡裁定
纵向监测 V1/V2 重复 PSG 睡眠结构变化 1,026 例重复记录

§2.4 患者人群表

维度 描述
来源 6 个美国临床中心周边社区抽样(Birmingham、Minneapolis、Palo Alto、Pittsburgh/Monongahela Valley、Portland、San Diego)
时间 母队列基线 2000-2002;Sleep Visit 1 2003-12 至 2005-03;Sleep Visit 2 2009-2012
年龄 基线 ≥65 岁;睡眠访视时约 67-90 岁,跌倒分析队列平均 76 岁
性别 100% 男性
种族 白人 2,651(约 90%)、非裔 99、亚裔 85、多种族 30、其他/未知 42(共 2,911)
就医类型 社区居住、可独立行走、无双侧髋关节置换的社区志愿者

队列流量(Cauley 2014 口径):母队列 5,994 人中至睡眠访视期有 2,860 人未入组——1,997 拒绝、150 不合格、349 死亡、39 提前退出、324 因已达标而未联系;最终 3,135 人完成居家评估,2,911 例 PSG 技术合格。该流量表可直接服务于"缺失机制"分析:死亡与提前退出同年龄与共病相关,属典型的信息性缺失(MNAR),结局建模若忽略这一选择过程,关联强度会被系统性高估;敏感性分析宜把"达标未联系"与"拒绝"两类分开处理,前者是流程性缺失、后者才携带自选择信息。

§2.5 临床价值

对临床研究者而言,该数据集提供了老年人群"居家 PSG 金标准评分 + 硬结局随访"的完整证据链:Stone 2014 证实嗜睡(ESS > 10,OR = 1.52)、客观短睡眠(≤5 小时,OR = 1.79)与夜间低氧(OR = 1.62)独立预测反复跌倒;Cauley 2014 把低氧与骨折风险联系起来(骨折随访平均 6.8 年);Blackwell 2011 发现 REM 睡眠占比最低四分位者数字警觉测试慢 20.1 秒。对 AI 工程师而言,这些已发表的效应量构成了模型必须复现的"临床合理性锚点"——一个合格的老年 OSA 风险模型应当至少能够恢复低氧负荷与不良结局之间的信号方向。

这些效应量还给出了"最小可信性能"的参照系:Blackwell 2011 的认知分析纳入 2,909 名 ≥67 岁受试者,Stone 2014 的跌倒分析纳入 3,101 名 ≥67 岁(平均 76 岁)受试者,均接近数据集全量——即任何"睡眠指标 → 结局"的模型都应在 2,900 例左右规模上评测,子集过小则与已发表证据失去可比性。同时,未治疗人群约束(夜间 CPAP/BiPAP/氧气使用者被剔除,49 名报告使用者中仅 17 名可停用一晚纳入)意味着模型学到的关联不受治疗混杂污染,但也因此不能直接外推到当代 CPAP 治疗人群。

§2.6 金标准表

任务 金标准划分 标注方式 标注者 性质
睡眠分期(W/N1/N2/N3/REM) 整夜逐 epoch 人工整夜评分(Rechtschaffen & Kales 标准体系,集中评分协议) 凯斯西储大学中央阅片中心受训技术员 专家评分金标准
呼吸事件(呼吸暂停/低通气/觉醒) 整夜逐事件 人工事件标记(热敏/鼻压力气流下降 + ≥3% 血氧下降口径) 同上,中央统一评分 专家评分金标准
骨折结局 随访期全部骨折 影像学报告确认 各中心 → 旧金山协调中心集中裁定 客观结局金标准
跌倒结局 睡眠访视后 1 年内 每 4 个月明信片问卷(完成率 >97%) 受试者自报 前瞻性队列随访标准

两点使用提示:其一,跌倒结局为自报数据,虽有 4 个月高频率随访兜底(回溯窗口短、遗漏少),仍存在回忆偏倚,与骨折这类影像确认的硬结局相比证据等级更低,模型评估时应分开报告;其二,金标准分期使用研究时代的 R&K 体系而非当代 AASM 推荐谱系,N3/N4 已在发布标签中合并——复现当代文献时不要试图"还原 N4"。

§3 数据集规格

§3.0 版本抉择矩阵

你的需求 推荐版本 大小/范围 理由
训练分期/AHI 模型(最大样本) Sleep Visit 1 核心 + PSG 2,911 例表格 + 2,907 例 EDF 样本最大、标注最全、已知问题清单明确
纵向/重复测量研究 Visit 1 + Visit 2 联合 1,026 例重复 PSG 同一受试者相隔约 6 年,需按人分组防止泄漏
补充问卷变量与其他访视 MrOS Online 公开网页资源 NSRR 版不含体动仪原始数据;MrOS Online 含其他访视变量
与女性/更年轻人群对照 SHHS、MESA、SOF 见 §1.3 MrOS 无法单独覆盖性别与年龄段

§3.1 模态详情

  • 居家整夜 PSG 信号(EDF):Compumedics Safiro 单夜未设护记录,16 个标准信号通道(见 §3.9),受训技术员上门安装、检查阻抗并校准,次日晨回收下载。
  • 睡眠标注(双版本 XML):Profusion 原始导出版 + NSRR EDF Editor 转换版,含睡眠分期 epoch、呼吸暂停/低通气/觉醒事件。
  • 核心表格(CSV):visit1 与 visit2 两个文件(各 2,911 行),覆盖人口学、种族、生活方式、PSG 汇总指标(如睡眠潜伏期 posllatp、REM 期平均血氧 posao2re)与问卷量表。
  • HRV 衍生变量:辅助研究 #108(凯斯西储大学)对 Visit 1 信号完成的心率变异性分析结果变量。
  • 体动仪:受试者佩戴 3-5 天,但 NSRR 分发版不含体动仪原始数据与结果(需通过 MrOS Online 获取部分变量)。
  • 纵向随访结局:跌倒(每 4 个月)、骨折(影像确认)、认知(3MS、TMT-B、DVT)、死亡(裁定),经母队列数据体系关联。

§3.2 按子集样本数表

子集 样本数 说明
MrOS 母队列基线 5,994 2000-2002 年 6 中心入组
Sleep Visit 1 完成 3,135 2003-12 至 2005-03
Visit 1 PSG 技术合格 2,911 核心数据 visit1 文件行数
Visit 1 NSRR EDF 记录 2,907 4 例因历史数据丢失缺 EDF+XML
Sleep Visit 2 重复 PSG 1,026 NSRR 收录;visit2 表格仍为 2,911 行
跌倒分析子集 3,101 Stone 2014(含未做 PSG 者的体动仪数据)
认知分析子集 2,909 Blackwell 2011
标注再分析样本 2,904(V1)+ 1,026(V2) AJRCCM 2025 会议摘要口径

§3.3 格式表

内容 格式 说明
PSG 信号 EDF(European Data Format) 由 Compumedics Profusion 导出,16 通道混合采样率
事件/分期标注 XML ×2 Profusion 版(原始)+ NSRR 版(EDF Editor 转换)
核心数据 CSV visit1/visit2 两文件,A/M/K/W/D/N 缺失编码体系
手册与表单 PDF Visit 1/Visit 2 Manual of Procedures、原始采集表
变量浏览 网页 + GitHub 字典 NSRR 变量页 + nsrr/mros-data-dictionary 仓库

§3.4 存储规模

数据由两部分构成:核心表格(2 个 CSV,各 2,911 行)与 PSG 原始信号(Visit 1 2,907 例 + Visit 2 1,026 例,共 3,933 条记录,每条含 1 个 EDF 与 2 个 XML)。EDF 单文件体积取决于记录时长与混合采样率(EEG 256 Hz、ECG 512 Hz、血氧 1 Hz),整夜记录通常在数十 MB 量级,全部 PSG 原始信号下载前建议预留数百 GB 磁盘空间,并以 NSRR 文件页 实时显示的文件清单与体积为准。

磁盘规划的一个实用参考:按"核心表格 + 全部标注 XML + 100 例抽样 EDF"先建最小开发环境(体积可控在个位数 GB),跑通 §6.1-§6.3 全流程后再拉取全量信号;多数预处理 bug(通道错位、时间轴偏差、口径错配)在 100 例内即可暴露,无需为调试期保留数百 GB 空间。

§3.5 标注方式

  • 人工集中评分:全部 PSG 由凯斯西储大学中央阅片中心(Cleveland, OH)的受训技术员按统一标准评分,避免了各中心自主评分的系统差异。
  • 评分体系:睡眠分期与呼吸事件按研究时代标准执行;AHI 定义为每小时呼吸暂停 + 伴 ≥3% 血氧下降的低通气数(Yang 2022 附录)。
  • 双版本发布:Profusion 原始 XML 与 NSRR 转换 XML 并行分发,转换逻辑开源(nsrr/edf-editor-translator)。
  • 低通气双标签:Hypopnea(气流下降 30-50%)与 Unsure(下降 >50%)两个标签并行存在(见坑点 1)。

标注与信号的关系需要特别说明:XML 标注中的分期段(30 秒粒度)与事件段(秒级起止时长)均以相对于记录开始的秒数表达,与 EDF 内部时间轴直接对齐;由于 EDF 记录日期已脱敏(01.01.85),任何"绝对时刻"分析都只能使用相对时间戳。此外,体动仪原始数据不在 NSRR 分发版内——核心表格与 PSG 均不包含体动仪信号,Stone 2014 使用的客观睡眠时长(体动仪 TST ≤5 小时)变量需经 MrOS Online(mrosonline.ucsf.edu)申请获取,这直接影响"可穿戴 vs PSG 对比"类研究的可行性(NSRR 数据集页)。

§3.6 标注者资质与一致性

评分技术员经过中央培训与认证,安装与评分流程参照 Sleep Heart Health Study 协议执行;信号质量受三级管控——上门前设备认证、安装时阻抗检查(电极阻抗 >5,000 欧姆即更换电极)、评分前人工质量分级,最终超过 70% 的研究被评为优秀或杰出质量(ResearchGate 收录论文)。官方未发布逐记录评分者间一致性系数,使用者应以"中央单一评分"而非"多评分者共识"为前提设计实验。

§3.7 采集周期

  • Sleep Visit 1:2003 年 12 月至 2005 年 3 月,单夜居家 PSG + 3-5 天体动仪。
  • Sleep Visit 2:2009 至 2012 年,重复居家 PSG(NSRR 收录 1,026 例)。
  • 结局随访:跌倒自睡眠访视起每 4 个月随访;骨折随访至 2012 年 8 月(平均 6.8 年);死亡与心血管事件持续裁定。

§3.8 地域覆盖

美国本土 6 个临床中心及其周边社区:Birmingham, Alabama;Minneapolis, Minnesota;Palo Alto, California;Monongahela Valley/Pittsburgh, Pennsylvania;Portland, Oregon;San Diego, California。数据不包含精确地理坐标,地域信息仅到中心层级。

§3.9 设备规格

Visit 1(Compumedics Safiro)标准导联与采样率:

通道 EDF 标签 采样率(Hz) 传感器
左/右中央脑电 C3 / C4 256 金杯电极
左/右乳突参考 A1 / A2 256 金杯电极
左/右眼电 ROC / LOC 256 金杯电极
下颌肌电 Chin L / Chin R 256 金杯电极
左/右腿动 Leg L / Leg R 64 压电腿带
心电 ECG L / ECG R 512 Ag/AgCl 贴片
口鼻热敏气流 Airflow 16 ProTech 热敏
鼻压力气流 Cannula Flow 64 鼻导管
胸/腹呼吸带 RIP Thoracic / RIP Abdomen 16 Compumedics Summit IP
呼吸求和 SUM 16 派生
血氧状态/心率/SpO2 STAT / HR / SAO2 1 Nonin XPOD 3011/8000 指脉氧
派生心率 DHR 派生 由 ECG 计算

Visit 2 主要差异:乳突参考 A1/A2 → M1/M2、眼电 ROC/LOC → E2/E1、血氧标签 SAO2 → SpO2、热敏与 RIP 采样率 16 → 32 Hz;腿动通道因放大器故障不可靠,不应使用(设备页、已知问题页)。

几点面向工程实践的解读:第一,这是一台 2003 年时代的专用便携系统而非现代一体化放大器,热敏与 RIP 通道 16 Hz 的采样率在今天看来偏低,但对呼吸形态学分析仍然够用;若你的算法依赖高频呼吸细节(如 Yang 2022 的呼吸表征路线),建议在数据声明中明确这一采样率上限。第二,血氧通道仅 1 Hz,这是 Stone 2014 低氧负荷口径(SaO2 < 90% 时间占比)的标准来源——1 Hz 足以计算负荷类指标,但不足以做逐搏变异分析。第三,ECG 512 Hz 是全通道中最高采样率,HRV 衍生变量(Ancillary Study #108)即基于此通道计算,做心电任务时无需上采样其他通道。第四,混合采样率 EDF 在多数库中会被自动重采样到统一频率(如 MNE),此时应保留一份原始采样率映射表,避免把 1 Hz 血氧误当作 128 Hz 通道处理。

§3.10 深度溯源链

受试者家中(Compumedics Safiro 采集,技术员上门安装)→ 凯斯西储大学中央阅片中心(下载、评分、质量分级)→ Compumedics Profusion 软件导出 EDF/XML → 旧金山协调中心(UCSF)整理源数据并联动母队列结局 → NSRR(Brigham and Women’s Hospital,NHLBI R24 HL114473 资助)执行脱敏、EDF Editor 转换与公开分发。每一环节均有官方文档:数据集介绍、数据字典仓库、变更日志。

§4 数据结构

§4.0 目录树

mros/                                   # NSRR 下载后的顶层目录
├── datasets/                           # 核心表格(与 PSG 按 aa_id 关联)
│   ├── visit1-dataset-*.csv            # Sleep Visit 1 核心数据,2,911 行
│   └── visit2-dataset-*.csv            # Sleep Visit 2 核心数据,2,911 行(1,026 例有重复 PSG)
├── polysomnography/
│   ├── edfs/
│   │   ├── visit1/                     # 2,907 个 EDF(Visit 1)
│   │   │   ├── aa0236.edf              # 受试者 ID 模式:aa + 4 位数字
│   │   │   └── ...
│   │   └── visit2/                     # 1,026 个 EDF(Visit 2)
│   │       └── ...
│   ├── annotations-events-profusion/   # Profusion 原始版事件/分期 XML
│   │   ├── visit1/
│   │   └── visit2/
│   └── annotations-events-nsrr/        # NSRR 转换版事件/分期 XML
│       ├── visit1/
│       └── visit2/
├── documentation/                      # Manual of Procedures、HRV 数据集说明等 PDF
└── forms/                              # 原始数据采集表 PDF(仅供理解变量来源)

目录组织依据 NSRR 数据集介绍 与 PSG 介绍;具体文件名以下载页实时清单为准。

§4.1 DAIMS 字段字典

核心表格关键字段(8 列:字段/类型/说明/示例/AI 用途/观测误差/缺失编码/取值范围):

字段 类型 说明 示例值 AI 用途 观测误差 缺失编码 取值范围
aa_id Text 受试者唯一标识(aa + 4 位数字) aa0236 主键,关联 EDF/XML 与结局 无(系统编号) 不缺失 aa0001 起
visit Text 睡眠访视次别 visit1 区分 V1/V2 防泄漏 无 不缺失 visit1 / visit2
girace Integer 种族类别编码 1 公平性评估分层 自报 编码 7=Unknown 1-7
gierace Integer 种族/族裔编码 1 公平性评估分层 自报 同上体系 1-5
posllatp Float PSG 睡眠潜伏期(分钟) 16.0 入睡困难特征 人工分期依赖 A/M/K/W/D/N 1.0-402.0(V1)
posao2re Float REM 期平均血氧(%) 94.0 低氧负荷特征 血氧仪精度 ±2% A/M/K/W/D/N 78.0-99.0(V1)
EDF 信号 Multi 16 通道混合采样率信号 C3@256 Hz 分期/事件模型输入 居家环境伪迹 文件缺失见 §4.5 见 §3.9
Profusion XML XML 原始事件/分期标注 Respiratory 事件 呼吸事件检测标签 双标签陷阱(坑点 1) 部分记录缺失 —
NSRR XML XML 转换版事件/分期标注 Stages epoch 推荐使用的统一标签 转换映射差异 同上 —
HRV 变量 Float Visit 1 心率变异性分析结果 时/频域指标 自主神经特征 派生算法依赖 A/M/K/W/D/N 见 HRV 说明 PDF
AHI(≥3%) Float 每小时呼吸暂停+≥3% 低氧下降低通气数 15.2 严重度分级 与 AASM 口径有偏差(坑点 4) 缺失编码体系 0 起

§4.2 标签分布

官方未以单一文件汇总全部标签分布,以下是可直接引用的已发布统计(使用时请注明口径):

指标 Visit 1 Visit 2 来源
PSG 睡眠潜伏期(分钟,均值±SD) 23.6±27.8(中位 16.0) 27.0±24.7(中位 20.0) NSRR 变量页
REM 期平均血氧(%,均值±SD) 93.6±2.2 93.2±2.2 NSRR 变量页
种族:白人/非裔/亚裔 2,651/99/85(2,911 例) 同一队列重复 NSRR 变量页
记录质量优秀/杰出占比 >70% 同一评分体系 ResearchGate 收录论文

§4.3 关键统计

  • 招募完成率:Sleep Study 相对母队列存活者完成 3,135/约 3,608 目标(105% 达标);PSG 技术合格率 2,911/3,135 = 93%。
  • 记录完整率:EDF+XML 双齐备 2,907/2,911 = 99.9%(V1);重复 PSG 覆盖率 1,026/2,911 = 35.2%。
  • 随访完整率:4 个月明信片随访完成率 >97%;骨折随访平均 6.8 年。
  • 设备合格率:单次居家 PSG 失败率极低(质量分级 >70% 优秀/杰出)。

§4.4 数据层级

受试者(aa_id,唯一)
└── 睡眠访视(visit1 / visit2)
    └── 整夜 PSG 记录(1 EDF + 2 XML)
        ├── 信号通道(16 个,混合采样率)
        ├── 睡眠分期 epoch(30 秒)
        └── 事件标注(呼吸暂停 / 低通气 / 觉醒)
└── 核心表格行(visit1/visit2 CSV 各 1 行)
└── 纵向结局(跌倒事件 / 骨折事件 / 认知测验 / 死亡裁定)

§4.5 缺失值与信息性缺失编码

NSRR MrOS 采用统一缺失编码:A=Missing、M=Not applicable、K=DK/UN(不知道/未回答)、W=Missing、D=Don’t know、N=Missing。AI 使用时必须把字母编码转为 NaN,否则会被解析为类别值污染训练(变量页示例)。

缺失类型 范围 信息性含义 处理建议
文件级缺失(V1) aa1103/aa1578/aa2660/aa5781 缺 EDF+XML;aa2159/aa2180/aa4156 缺 XML 历史数据丢失,与结局无关 从训练集剔除并在清单固化
事件评分缺失(V1) 12 例分期正确但事件评分丢失 部分可标注任务不可用 分期任务可用、事件任务剔除
分期损坏(V1) 8 例事件正确但分期损坏 与上相反 事件任务可用、分期任务剔除
V2 腿动 全部 1,026 例 放大器故障 整通道弃用,勿做 PLM 分析
字母缺失编码 全表 拒答/不适用/未知语义不同 按语义选择丢弃或插补,勿混为一谈

表格数据读入后第一件事就是把字母编码统一转为数值缺失。最小实现如下:

import numpy as np
import pandas as pd

MISSING_CODES = {"A", "M", "K", "W", "D", "N"}

def coerce_mros_missing(df: pd.DataFrame) -> pd.DataFrame:
    """把 NSRR MrOS 的字母缺失编码统一转为 NaN。
    逐列处理:数值列直接置 NaN;类别列保留有效取值。
    注意区分语义——K/D 是"不知道/拒答",M 是"不适用",
    是否要作为信息性特征(如拒答本身与健康状况相关)
    应由建模者显式决定,而不是默默丢弃。
    """
    out = df.copy()
    for col in out.columns:
        if out[col].dtype == object:
            s = out[col].astype(str).str.strip()
            out.loc[s.isin(MISSING_CODES), col] = np.nan
    return out

core = coerce_mros_missing(pd.read_csv(f"{DATA_ROOT}/datasets/visit1-dataset-0.3.0.csv"))

(CSV 文件名以 NSRR 文件页实际版本号为准。)

§5 数据划分与使用建议

§5.1 官方划分

无。NSRR 未提供官方机器学习训练/验证/测试划分,仅提供完整队列。任何论文若声称"官方划分"均为误传;复现实验应以自建划分并公开受试者 ID 清单为准。

§5.2 社区惯例划分

  • 内部开发:在 2,911 例 Visit 1 上按受试者 70/15/15 随机分层(按年龄组与中心分层),睡眠分期任务可按记录 60/20/20 切分但必须保证受试者不跨集。
  • 跨队列泛化:SHHS 或 MESA 训练 → MrOS 测试,是睡眠基础模型论文的主流协议(SleepFM 将 SHHS 留作外测即属此类思路)。
  • 纵向设定:以 Visit 1 预测 Visit 2,1,026 例重复对为自然的时间外推测试。

§5.3 泄漏风险(重点)

  1. 跨访视泄漏:visit1 与 visit2 的 2,911 行来自同一批受试者,若两表混抽,同一人将同时出现在训练与测试集,性能虚高。唯一安全做法是按 aa_id 分组切分。
  2. 重复导出泄漏:2025-03 修复前下载的 aa1510/aa1876/aa3545 三个 EDF 实为其他受试者记录的重复导出——若用旧缓存训练分期模型,等于把别人的记录复制进不同 ID,属隐蔽的样本重复泄漏。务必重新下载或核验文件。
  3. 结局建模泄漏:跌倒/骨折结局与"基线功能状态"高度相关;若核心表格包含与结局同源的自报变量(如既往跌倒史),直接并入会形成标签泄漏,应参考已发表协变量集。

§5.4 交叉验证建议

使用 GroupKFold(组 = aa_id)做 5 折交叉验证;分期任务在每折内按记录聚合指标;报告折间标准差而非单折最优值。对结局任务建议嵌套 CV 或至少固定一个完全隔离的时间/中心外推折(如留出 Portland 中心)。

§5.5 外部验证建议

优先顺序:SHHS(规模最大、协议同源)→ MESA(种族多样性对照)→ SOF(老年女性对照,可检验性别外推)→ 自采实验室 PSG(检验居家 vs 实验室域差)。凡涉及临床部署声明,必须至少完成一个非 MrOS 来源的外部验证并报告性能衰减。

§5.6 划分操作最小清单

动手切分前,逐项核对以下清单,可规避本数据集绝大多数已知的划分事故:

  1. 主键确认:所有切分以 aa_id 为组键;visit1 与 visit2 的同一 aa_id 视为同一受试者,永不跨集。
  2. 已知问题剔除先行:切分前从训练池移除 §4.5 列出的文件级缺失 ID(aa1103/aa1578/aa2660/aa5781 无 EDF+XML;aa2159/aa2180/aa4156 无 XML),并核验本地缓存非 2025-03 前的旧版(aa1510/aa1876/aa3545 重复导出问题)。
  3. 分层维度:按中心(girace 之外的站点变量)与年龄段分层,保证 6 中心在每折均有代表。
  4. 任务适配:分期任务按记录聚合折内指标;结局任务确保训练/测试的随访窗口口径一致。
  5. 工件化:划分结果存 JSON(受试者 ID 清单 + 划分时间 + 数据版本号),随模型一起归档——本数据集无官方划分,论文可复现性完全依赖这份清单。

§6 AI 就绪指南 ⭐

§6.1 快速上手

# =============================================================
# 目录结构预期(NSRR 下载原样):
#   MROS_ROOT/
#     datasets/visit1-dataset-*.csv         # 核心表格(2,911 行)
#     polysomnography/edfs/visit1/aaXXXX.edf
#     polysomnography/annotations-events-nsrr/visit1/aaXXXX-nsrr.xml
# data_root 拼接:EDF 路径 = {MROS_ROOT}/polysomnography/edfs/{visit}/{aa_id}.edf
# 最小可用子集:任一 aaXXXX.edf + 对应 NSRR XML 即可跑通分期。
# =============================================================
import os, glob
import mne  # pip install mne

DATA_ROOT = os.environ.get("MROS_ROOT", "/data/nsrr/mros")
edfs = sorted(glob.glob(f"{DATA_ROOT}/polysomnography/edfs/visit1/*.edf"))
print(f"Visit 1 EDF 数量: {len(edfs)}")
raw = mne.io.read_raw_edf(edfs[0], preload=False, verbose="ERROR")
print("采样率:", raw.info["sfreq"], "Hz", "| 通道:", raw.ch_names)

预期输出:16 通道左右、混合采样率(EEG 256 Hz、ECG 512 Hz、血氧 1 Hz)。MNE 会自动把混合采样率重采样到统一频率。

核心表格与 PSG 文件的关联只需几行:

core1 = pd.read_csv(f"{DATA_ROOT}/datasets/visit1-dataset-0.3.0.csv")
have_edf = {os.path.basename(p)[:-4]
            for p in glob.glob(f"{DATA_ROOT}/polysomnography/edfs/visit1/*.edf")}
print(len(core1), core1["aa_id"].nunique(), len(have_edf))   # 2911 2911 2907
usable = core1[core1["aa_id"].isin(have_edf)]                # 表格 ∩ 信号

(CSV 文件名中的版本号以 NSRR 文件页为准;visit2 同理。)

§6.2 数据获取

步骤 操作 说明
1 注册 NSRR 账号 sleepdata.org 免费注册
2 签署 DAUA 在线签署 Data Access and Use Agreement,仅供研究、禁止再分发
3 进入数据集页 sleepdata.org/datasets/mros
4 下载核心表格与 PSG 文件页逐目录下载,或用官方 nsrr CLI
5 致谢与引用 引用 Zhang 2018 与 Blackwell 2011,并附官方致谢文本

官方命令行工具(Ruby gem)批量下载:

gem install nsrr                                                # 安装官方 NSRR CLI
nsrr pull mros/datasets --unzip                                 # 核心表格(数十 MB 级 CSV)
nsrr pull mros/polysomnography/edfs/visit1                      # V1 全部 EDF(大体积,预留数百 GB)
nsrr pull mros/polysomnography/annotations-events-{nsrr,profusion}   # 两版事件/分期标注

下载完成后的核验清单(喂进训练管线前执行一次):① 数量核对——Visit 1 EDF 应为 2,907 个、Visit 2 为 1,026 个,核心表格各 2,911 行;② 旧版缓存排查——2025-03 之前的下载需确认 aa1510/aa1876/aa3545 已被替换(旧版为他人记录的重复导出);③ 已知缺失比对——aa1103/aa1578/aa2660/aa5781(V1 缺 EDF+XML)与 aa2159/aa2180/aa4156(V1 缺 XML)不应出现在期望清单中;④ 配对完整性——抽查若干 aa_id 确认 EDF 在两个标注目录均有对应 XML。以上 ID 与数量以 PSG 介绍页 最新版本为准。

引用与致谢(官方要求):引用 Zhang GQ et al., J Am Med Inform Assoc. 2018;25(10):1351-1358(NSRR 平台)与 Blackwell T et al., J Am Geriatr Soc. 2011;59(12):2217-25(队列),致谢中注明 NHLBI 资助号 R01 HL071194、R01 HL070848、R01 HL070847、R01 HL070842、R01 HL070841、R01 HL070837、R01 HL070838、R01 HL070839 及 NSRR R24 HL114473(官方致谢文本)。

§6.3 预处理全流程

第一步:解析 NSRR XML,构建低通气合并后的事件表。

import xml.etree.ElementTree as ET
import pandas as pd

def parse_nsrr_events(xml_path: str) -> pd.DataFrame:
    """解析 NSRR 版事件/分期 XML(Compumedics Annotation Format)。
    关键规则:低通气有两类标签——Hypopnea(气流下降 30-50%)
    与 Unsure(下降 >50%);若要 AASM 式 >=30% 低通气,两类都要并入。
    """
    tree = ET.parse(xml_path)
    rows = []
    for ev in tree.iter("ScoredEvent"):
        name = ev.findtext("EventConcept", default="")
        start = ev.findtext("Start", default=None)
        dur = ev.findtext("Duration", default=None)
        if start is None or dur is None:
            continue
        rows.append({"event": name, "start": float(start),
                     "duration": float(dur)})
    df = pd.DataFrame(rows)
    # 合并低通气双标签:保留原始名并新增统一列
    def unify(e):
        e = e.lower()
        if "hypopnea" in e:
            return "hypopnea_unsure" if "unsure" in e else "hypopnea"
        if "apnea" in e:
            return "apnea"
        if "arousal" in e:
            return "arousal"
        if "stage" in e or "wake" in e or "rem" in e:
            return "stage"
        return "other"
    df["event_unified"] = df["event"].map(unify)
    return df

events = parse_nsrr_events(f"{DATA_ROOT}/polysomnography/annotations-events-nsrr/visit1/aa0236-nsrr.xml")
print(events["event_unified"].value_counts())

第二步:信号加载、重采样与低氧负荷计算。

import numpy as np

def load_channels(edf_path: str, fs_target: float = 128.0):
    """加载 EEG/EOG/EMG/呼吸通道并重采样到统一 fs_target。"""
    raw = mne.io.read_raw_edf(edf_path, preload=True, verbose="ERROR")
    keys = "C3 C4 A1 A2 M1 M2 ROC LOC E1 E2 CHIN THORACIC ABDOM AIRFLOW CANULA FLOW".split()
    picks = [c for c in raw.ch_names if any(k in c.upper() for k in keys)]
    raw.pick(picks).resample(fs_target)
    return raw

def hypoxic_burden(spo2_1hz: np.ndarray, stages: np.ndarray) -> float:
    """睡眠期 SaO2<90% 时间占比(%),Stone 2014 口径。"""
    sleep = stages != 0          # 0 = Wake,按本地分期编码调整
    t90 = (spo2_1hz[sleep] < 90).mean() * 100.0
    return float(t90)

第三步:30 秒分期矩阵对齐(PSG → 模型输入)。

EPOCH_SEC = 30

def build_epochs(raw, stage_events: pd.DataFrame):
    """把信号切成 30 秒 epoch 并按 start 时间对齐分期标签。"""
    fs = raw.info["sfreq"]
    n = int(raw.n_times // (EPOCH_SEC * fs))
    x = raw.get_data()[:, : n * EPOCH_SEC * fs]
    x = x.reshape(len(raw.ch_names), n, EPOCH_SEC * fs).transpose(1, 0, 2)
    y = np.full(n, -1, dtype=int)   # -1 = 未标注
    stages = {"wake": 0, "stage1": 1, "stage2": 2,
              "stage3": 3, "stage4": 3, "rem": 5}
    for _, r in stage_events[stage_events.event_unified == "stage"].iterrows():
        idx = int(r["start"] // EPOCH_SEC)
        key = r["event"].lower().replace(" ", "")
        for k, v in stages.items():
            if k in key:
                y[idx: idx + max(1, int(r["duration"] // EPOCH_SEC))] = v
                break
    return x, y

第四步:跨版本通道名归一(V1/V2 合并训练时必做)。

Visit 1 与 Visit 2 的 EDF 通道命名不同(A1/A2 vs M1/M2、ROC/LOC vs E2/E1、SAO2 vs SpO2),直接按通道索引读取会在跨访视模型中得到静默错位,加载层应做一次映射:

CHANNEL_MAP = {  # 目标名: 各版本候选名(小写包含匹配)
    "eeg_l": ["C3"], "eeg_r": ["C4"],
    "ref_l": ["A1", "M1"], "ref_r": ["A2", "M2"],
    "eog_r": ["ROC", "E2"], "eog_l": ["LOC", "E1"],
    "chin": ["CHIN1", "CHIN2"], "flow_therm": ["AIRFLOW"],
    "flow_nasal": ["CANULA"], "rip_thor": ["THORACIC"],
    "rip_abd": ["ABDOMEN"], "spo2": ["SAO2", "SPO2"],
}

def pick_canonical(raw):
    """把 V1/V2 的不同通道名映射到统一目标名后选择通道。"""
    lower = {c.lower(): c for c in raw.ch_names}
    chosen = {}
    for target, cands in CHANNEL_MAP.items():
        match = next((lower[c] for c in lower if any(k.lower() in c for k in cands)), None)
        if match:
            chosen[target] = match
    return raw.pick(list(chosen.values())).rename_channels(
        {v: k for k, v in chosen.items()})

归一后同一模型即可在 2,911 + 1,026 例联合数据上训练(以 visit 列为协变量);不合并时也应在配置中声明所用访视版本,对应 §3.9 的采样率差异。

§6.4 PyTorch DataLoader

import torch
from torch.utils.data import Dataset, DataLoader

class MrOSStageDataset(Dataset):
    """睡眠分期 Dataset:输入 30 秒多通道窗,输出 5 类分期。
    目录预期:MROS_ROOT 下 edfs/ 与 annotations-events-nsrr/ 成对;
    subjects 列表来自核心表格 aa_id;返回 (epoch, label)。
    """
    N_CLASS = 5  # W / N1 / N2 / N3 / REM(N3 合并 stage3+4)

    def __init__(self, root, subject_ids, visit="visit1",
                 fs=128.0, remap={0: 0, 1: 1, 2: 2, 3: 3, 5: 4}):
        self.root, self.ids, self.visit = root, subject_ids, visit
        self.fs, self.remap = fs, remap

    def __len__(self):
        return len(self.ids)

    def __getitem__(self, i):
        sid = self.ids[i]
        raw = load_channels(
            f"{self.root}/polysomnography/edfs/{self.visit}/{sid}.edf")
        ev = parse_nsrr_events(
            f"{self.root}/polysomnography/annotations-events-nsrr/"
            f"{self.visit}/{sid}-nsrr.xml")
        x, y = build_epochs(raw, ev)
        keep = y >= 0
        x, y = x[keep], np.vectorize(self.remap.get)(y[keep])
        x = (x - x.mean(axis=(1, 2), keepdims=True)) / (x.std(axis=(1, 2), keepdims=True) + 1e-6)
        return torch.tensor(x, dtype=torch.float32), torch.tensor(y, dtype=torch.long)

loader = DataLoader(
    MrOSStageDataset(DATA_ROOT, subject_ids=["aa0236", "aa0425"]),
    batch_size=1, shuffle=True)

使用说明:① batch_size=1 是因为每夜 epoch 数不同(约 600-1,200 个 30 秒窗),批量训练通常按"夜采样"或对 epoch 维做打包,自定义 collate_fn 拼接时应记录 epoch 的归属记录,防止折内指标跨记录混淆;② 逐 epoch 的 z 标准化在示例中按整夜统计量计算,严格做法应在训练集内逐通道拟合归一化参数并在验证/测试集复用;③ N_CLASS=5 对应宪法推荐的 N3 合并口径(stage3+stage4 → N3),与坑点 4 的 AASM 重算议题独立——那是呼吸事件的口径问题,分期口径在官方 XML 中即已合并。

§6.5 坑点 8 个

⚠️ 坑点 1:低通气 Unsure 标签被误解为"不确定事件"(分类:标签理解)

问题:原始评分软件只有自定义标签槽位,把气流下降 >50% 的低通气标成 Unsure,与 30-50% 的 Hypopnea 并存。很多团队只取 Hypopnea,系统性漏掉最严重的低通气,AHI 被低估。
症状:同一记录自行重算 AHI 与官方表格 AHI 对不上;模型"严重 OSA 召回率"异常低;与 SHHS 论文口径比较时偏差方向固定为低估。
解决:

  1. 简单方法:合并 Hypopnea + Unsure 两个标签再算 AHI,即官方推荐的 ≥30% 口径。
  2. 进阶方法:按研究目的分层——做"≥30% 口径"用合并集,做">50% 重度低通气"只用 Unsure;在配置文件里固化映射并写进论文方法学。
  3. SOTA 方法:参照 AJRCCM 2025 标注再分析流程,用血氧下降与觉醒信息按 AASM 规则重算事件(原始标注相对 AASM 重算的 AHI 平均绝对误差为 11.16/小时,校正后降至 1.03/小时)。
    参考:NSRR 低通气标签说明;AJRCCM 2025 会议摘要(DOI 10.1164/ajrccm.2025.211.Abstracts.A1056)。

⚠️ 坑点 2:Visit 2 腿动通道整体不可靠(分类:工程陷阱)

问题:Visit 2 数据采集后才发现放大器问题导致腿动信号与标注不可靠,官方明示不应使用;但 EDF 里该通道仍然存在。
症状:在 V2 数据上做周期性腿动(PLM)检测得到大量假阳性事件;跨 V1/V2 联合训练的腿动特征分布突变。
解决:

  1. 简单方法:加载 EDF 后直接丢弃 Leg L/R 通道,任何 V2 记录不输出腿动特征。
  2. 进阶方法:特征工程层面把"腿动"特征设为 V1 专用,跨访视模型用通道掩码而非删除记录,保住 1,026 例重复 PSG。
  3. SOTA 方法:多模态基础模型训练时按访视提供通道可用性配置(SleepFM 的对比学习框架即按 montage 动态适配通道)。
    参考:NSRR 已知问题页。

⚠️ 坑点 3:Visit 1 / Visit 2 同一受试者跨划分泄漏(分类:数据泄漏)

问题:两个核心表格各含 2,911 行且指向同一批人;1,026 人两晚数据都在。若按行随机切分,同一人同时进训练与测试集。
症状:分期与 AHI 回归测试性能异常高(常见虚高 5-15 个百分点);换一批新受试者测试性能骤降。
解决:

  1. 简单方法:GroupShuffleSplit/GroupKFold,group = aa_id,两表合并前先按受试者去重分桶。
  2. 进阶方法:纵向任务以 Visit 1 为训练、Visit 2 为时间外推测试,天然无泄漏且更有临床意义。
  3. SOTA 方法:划分清单固化为 JSON 工件随模型版本入库(MLOps 语义),任何复现先校验 ID 清单哈希。
    参考:NSRR 数据集介绍。

⚠️ 坑点 4:原始呼吸事件标注与 AASM 口径系统性偏差(分类:评估误用)

问题:研究时代的评分协议与现行 AASM 指南不一致(低通气是否要求血氧下降/觉醒、气流通道选择等),原始标注相对 AASM 重算会高估 AHI。
症状:把官方 AHI 与按事件 XML 自算 AHI 等同使用时,严重度分组(<5/5-15/15-30/≥30)错位;模型在"官方标签"与"重算标签"上训练性能不可比。
解决:

  1. 简单方法:全程只用一种口径(推荐官方表格 AHI),论文明确声明。
  2. 进阶方法:用 AJRCCM 2025 的再标注流程重算 AASM 口径事件(MrOS1 校正后 MAE 1.03/小时、MrOS2 0.56/小时),双口径分别报告。
  3. SOTA 方法:严重度分级任务直接对齐 SleepFM 协议(四级 AHI 分组,外部可复现)。
    参考:AJRCCM 2025 会议摘要(DOI 10.1164/ajrccm.2025.211.Abstracts.A1056);SleepFM。

⚠️ 坑点 5:2025-03 之前的下载缓存含"他人记录的重复 EDF"(分类:数据泄漏 / 工程陷阱)

问题:aa1510、aa1876、aa3545 三个 EDF 最初被误导出为其他受试者记录的重复,2025-03 才替换修复;大量历史项目用的是旧缓存。
症状:数据统计对不上官方清单;同一信号以两个受试者 ID 出现,分期模型测试集被"训练集的孪生记录"污染。
解决:

  1. 简单方法:无论何时下载,重新执行一次 nsrr pull 并对照官方 CHANGELOG 校验这三个 ID。
  2. 进阶方法:对全部 EDF 做信号指纹(对 EEG 通道截取固定窗计算哈希)去重,把重复检测纳入数据入库流水线。
  3. SOTA 方法:数据版本控制(DVC)+ 官方 CHANGELOG 事件触发的缓存失效策略。
    参考:NSRR 更新历史。

⚠️ 坑点 6:EDF 真实日期被脱敏为 01.01.85(分类:预处理陷阱)

问题:2016-12 起所有 EDF 记录日期统一改为 01.01.85;访视真实年份只能靠 visit 标签与文档近似。
症状:按 EDF 内置日期构建时间轴得到全队列同一日期; longitudinal 分析误用 EDF 时间戳导致"6 年间隔"变 0。
解决:

  1. 简单方法:时间轴一律用"访视次别 + 文档年份"(V1 2003-2005、V2 2009-2012)而非 EDF 日期。
  2. 进阶方法:需要绝对时间时,用母队列访视日期(MrOS Online 变量)关联,并接受 ±1 年粒度。
  3. SOTA 方法:纵向建模直接用"访视间隔"作为协变量,避免绝对日期依赖。
    参考:NSRR 更新历史。

⚠️ 坑点 7:V1/V2 通道命名与采样率漂移(分类:预处理陷阱)

问题:V2 将乳突参考 A1/A2 改为 M1/M2、眼电 ROC/LOC 改为 E1/E2、血氧 SAO2 改为 SpO2,气流与 RIP 采样率从 16 Hz 提到 32 Hz;跨访视合并时通道名对不上。
症状:模型输入张量形状/通道序不一致;用通道名精确匹配的加载器在 V2 上丢通道或报错。
解决:

  1. 简单方法:建立通道别名映射表(A1→M1、ROC→E2、LOC→E1、SAO2→SpO2),加载前统一改名。
  2. 进阶方法:按"通道功能位"(central EEG / mastoid / EOG / chin EMG / leg / ECG / flow / RIP / SpO2)索引而非原始标签,采样率统一重采样到目标频率。
  3. SOTA 方法:像 SleepFM 一样把 montage 变体作为模型输入的一等公民(通道 embedding + 掩码),彻底解耦命名差异。
    参考:V1 设备页、V2 设备页。

⚠️ 坑点 8:全男性老年队列的分布外推风险被低估(分类:偏倚陷阱)

问题:队列 100% 男性、约 90% 白人、全部 ≥65 岁且能独立行走,且剔除了夜间 CPAP/氧气使用者;任何"通用 OSA 检测"声明都超出数据支撑范围。
症状:在女性/年轻/住院人群上性能大幅衰减;按 AHI 阈值部署的筛查工具在低氧负荷主导的老年女性中漏检。
解决:

  1. 简单方法:论文与模型卡明确"适用域:社区老年男性",禁止无限外推。
  2. 进阶方法:用 SOF(老年女性)、MESA(多种族中年)做外推测试,报告性能衰减矩阵。
  3. SOTA 方法:多队列联合训练 + 域自适应(中心/性别 embedding),并保留低氧负荷类特征(老年人群中毒性指标,AHI 反而与跌倒无关)。
    参考:Stone 2014;NSRR 变量页。

§6.6 数据增强

类型 操作 判定
时间裁剪/滑窗 随机截取整夜中的连续片段 ✅ 安全(保持时序结构)
通道 Dropout 训练时随机屏蔽 1-2 个非关键通道 ✅ 安全(提升 montage 鲁棒性)
振幅抖动/高斯噪声 轻微幅值缩放与加噪 ✅ 安全(模拟电极阻抗波动)
时间反转 翻转信号方向 ❌ 危险(破坏呼吸-血氧因果时序)
随机重采样到低采样率 对 SpO2/呼吸通道粗放降采样 ❌ 危险(1 Hz 血氧对齐被破坏)
跨受试者信号拼接 把两人信号缝合成"新记录" ❌ 危险(伪造不可能的生理过渡)
Mixup 标签插值 波形层面线性混合 ⚠️ 慎用(仅限分类头特征层,勿在原始信号层)

§6.7 模型推荐

模型 类型 适用任务 与本数据集的关系
U-Sleep(Perslev et al., 2021) 全卷积高频分期 睡眠分期 跨队列分期基线,引用见 §8
SleepFM(Thapa et al., 2026) 多模态对比预训练基础模型 分期/AHI 分级/疾病预测 预训练即使用 MrOS,代码开源可复现
CNN+LSTM/Transformer 自建 有监督序列模型 分期、事件检测 适合以 2,911 例 V1 为主训练的中等规模方案
传统统计/生存模型(Cox 等) 流行病学建模 睡眠特征 → 跌倒/骨折/死亡 对齐 Stone 2014/Cauley 2014 协变量框架

§6.8 硬件需求

任务 最低配置 推荐配置 说明
EDF 读取/特征工程 8 GB 内存、4 核 32 GB 内存、8 核 整夜记录 preload 约占 0.5-1 GB/条
睡眠分期训练 单卡 11 GB(如 RTX 2080 Ti) 单卡 40 GB(A40/A100) 与 SleepFM 官方环境一致
全队列预训练 单卡 40 GB 多卡 A100 数百 GB 存储 + 数据加载并行
生存/统计建模 16 GB 内存 32 GB 内存 CPU 即可

§6.9 评估指标代码

from sklearn.metrics import cohen_kappa_score, f1_score, confusion_matrix
import numpy as np

def staging_report(y_true, y_pred):
    """分期:Cohen's kappa + macro-F1(五类,含 N3 合并)。"""
    return {"kappa": cohen_kappa_score(y_true, y_pred),
            "macro_f1": f1_score(y_true, y_pred, average="macro"),
            "cm": confusion_matrix(y_true, y_pred).tolist()}

def ahi_report(ahi_true, ahi_pred, bins=(5, 15, 30)):
    """AHI:回归 MAE + 严重度四分组混淆一致性。"""
    def grade(a):
        return sum(a >= b for b in bins)
    g_t = np.vectorize(grade)(ahi_true)
    g_p = np.vectorize(grade)(ahi_pred)
    return {
        "mae": float(np.mean(np.abs(ahi_pred - ahi_true))),
        "severity_acc": float((g_t == g_p).mean()),
    }

def event_level_f1(pred_events, true_events, tol_sec=30.0):
    """呼吸事件检测:事件级匹配(起点落入真值事件 ±tol 秒内记 TP)。
    输入为 [(start_sec, duration_sec), ...];应按 aa_id 分组逐记录
    计算后微平均,而非跨记录拉平——后者会让长记录主导指标。
    """
    def hit(e, events):
        return any(e[0] <= ts + te + tol_sec and ts <= e[0] + tol_sec
                   for ts, te in events)
    tp = sum(hit(p, true_events) for p in pred_events)
    fp = len(pred_events) - tp
    fn = sum(not hit((ts, te), pred_events) for ts, te in true_events)
    prec, rec = tp / max(tp + fp, 1), tp / max(tp + fn, 1)
    return {"precision": prec, "recall": rec,
            "f1": 2 * prec * rec / max(prec + rec, 1e-9)}

报告口径:AHI 的 MAE 同时给出绝对值(次/小时)与按 bins=(5,15,30) 的分组一致率;事件 F1 必须注明匹配容差(30 秒或事件时长一半是常见约定),否则与文献数字不可比。

§6.10 MLOps 笔记

  • 数据指纹:入库时对每个 EDF 计算通道级哈希,防止 §6.5 坑点 5 类重复导出复发;NSRR CHANGELOG 持续更新(最近一次 2025-03),建议把"重新拉取官方数据并比对哈希"设为季度任务。
  • 划分工件化:aa_id 级划分清单随模型版本存档(JSON + 哈希),评审可复核。
  • 口径版本化:低通气合并规则、AHI bins、N3 合并等写成单一配置文件(YAML),训练与评测共用;任何口径改动触发全量重训与重评,避免"训练用旧口径、评测用新口径"的静默错配。
  • 数据版本监控:NSRR CHANGELOG 持续更新(最近一次 2025-03),建议把"重新拉取官方数据并比对文件哈希"设为季度任务;旧缓存与本数据集 10 年维护史叠加,是所有公开睡眠队列中缓存漂移风险最高的场景之一。
  • 结局对齐审计:涉及跌倒/骨折/死亡建模时,把结局表与核心表格的 aa_id 交集写入数据卡;Sleep Visit 2 的核心表格仍是 2,911 行,仅 1,026 行有重复 PSG——若发现"visit2 行数 ≈ 1,026"即说明误用 PSG 子集替代了核心表格。
  • 口径版本:低通气合并规则与 AHI 口径写入配置并在模型卡中声明(对应坑点 1/4)。
  • 合规留痕:DAUA 签署时间与账号绑定记录,禁止把原始 EDF 上传到第三方网盘或公开仓库。
  • 监控漂移:部署后按月监控输入通道统计(血氧分布、EEG 振幅),老年居家信号的电极质量漂移是主要故障源。

§7 质量评估与局限性

§7.1 已知偏倚表

偏倚类型 描述 严重程度 缓解措施
性别偏倚 队列 100% 男性 高 用 SOF 女性队列做外推测试;模型卡声明适用域
种族偏倚 约 90% 白人(2,651/2,911) 高 分层评估;与 MESA 联合训练
健康志愿者偏倚 需能独立行走、无双侧髋置换、完成居家评估 中 结局模型纳入功能状态协变量
幸存者偏倚 睡眠访视晚于母队列基线 3-5 年,部分人已去世 中 敏感性分析;报告入组时存活状况
治疗性排除 夜间 CPAP/BiPAP/氧气使用者被排除(仅 17 名可停用者纳入) 中 结果仅适用未治疗人群,勿用于治疗人群推断
时代偏倚 2003-2005 年评分协议与设备与现代 AASM/新型传感有差异 中 口径重算(坑点 4);跨时代外部验证

§7.2 标注质量

睡眠分期与呼吸事件由凯斯西储大学中央阅片中心受训技术员按统一协议集中评分,超过 70% 记录质量评为优秀/杰出,安装环节执行电极阻抗与校准核查。需要正视的局限:官方未发布评分者间一致性系数;分期遵循研究时代标准(N3 与 N4 的合并、低通气口径与现代 AASM 有差异,见坑点 1/4);V1 有 12 例事件评分缺失与 8 例分期损坏记录(已知问题页)。建议把"已发布、可引用"的标签视作单一参照金标准,而非多评分者共识。

从工程角度理解这套质量体系:技术员上门安装是居家 PSG 质量的第一道闸——电极阻抗、信号校准都在受试者家中完成,当晚质检不合格会导致次日重装或剔除,这解释了 93% 的技术合格率如何在非受控环境下达成;中央阅片是第二道闸——所有记录集中到凯斯西储大学统一下载与评分,评分协议、事件定义与质量分级跨 6 中心一致,消除了多中心研究中常见的"站点效应"。对 AI 而言,剩余的噪声主要来自三类居家固有伪迹:电极脱落与接触噪声(多见于凌晨、翻身时)、血氧探头移位(表现为 SpO2 长段饱和于固定值)、以及体位传感器漂移。建议在数据管线中加入简单的质量门控(如 EEG 方差阈值、SpO2 恒值检测),把质量最差的记录单独成组报告性能,而不是无声地混入均值。

§7.3 泛化性评估表

场景 失效风险 证据/机制
老年女性 OSA 筛查 高 队列无女性;女性低通气表现与年龄交互不同
中年/年轻人群 中高 年龄结构与共病谱差异,分期模型或可迁移、AHI 阈值需重校
实验室 PSG 中 居家 vs 实验室环境噪声结构不同;导联配置差异
可穿戴设备信号 高 通道数与采样率差异大,仅特征级迁移可行
治疗人群(CPAP 使用者) 高 治疗性使用者已被排除
纵向同一人随访 低 1,026 例重复 PSG 提供了独特的内部纵向验证机会

§7.4 伦理与合规

全部协议经各中心机构审查委员会(IRB)批准,受试者签署书面知情同意。NSRR 分发版完成脱敏:移除直接标识符、EDF 记录日期统一改为 01.01.85、地域仅保留 6 中心层级。数据在注册并签署 DAUA 后免费获取,仅供研究用途、禁止再分发或与第三方共享;发表时须引用指定论文并附官方致谢文本。将数据用于商业产品训练前应咨询 NSRR 与旧金山协调中心确认授权边界。

DAUA 实操要点:

  • 注册真实身份:账号信息与研究者所在机构一致,协议由具备签署资格的研究者本人在线签署。
  • 禁止再分发:不得把原始 EDF/XML/CSV 转存到公开仓库、网盘或数据比赛平台;可分享的是派生统计量与代码。
  • 引用义务:每篇产出一一对应 Zhang 2018 与 Blackwell 2011 引用,并复制官方致谢文本(§9.3)。
  • 机构边界:合作者若需访问,应各自注册并签署,而非"一人下载、团队共享"。
  • 商业用途:DAUA 面向学术研究;嵌入商业产品前须另行与 NSRR/协调中心确认。

§7.5 公平性

队列的种族构成(白人约 90%、非裔 99 人、亚裔 85 人)使任何跨种族性能声明都缺乏统计功效;性别维度完全缺失女性。建议:分层报告少数族裔子集的性能区间而非点估计;把"低氧负荷 vs AHI"的特征选择作为公平性杠杆(老年人群中低氧负荷与跌倒相关而 AHI 不相关,提示以事件计数为中心的算法可能系统性偏倚低通气表现不典型的人群)。

年龄维度是本数据集的公平性优势项而非劣势项:队列聚焦 67-90 岁高发人群,算法在"最需要筛查的老年段"上的表现可以直接量化,而多数公开睡眠数据集(以中年为主)恰恰在老年段缺少代表性——把 MrOS 用作年龄外推测试集,是检验"算法是否歧视高龄人群"的少数可行途径之一。

§7.6 数据漂移

  • 设备漂移:V1 与 V2 的采样率与通道命名变化(16→32 Hz、A1→M1)构成队列内的受控"仪器代际"差异,是检验模型对采集协议漂移鲁棒性的天然实验场。
  • 时代漂移:2003-2012 年的居家 PSG 与当代设备(更高采样率、CPAP 内置流量)存在谱系差异,跨年代部署需重校准。
  • 人群漂移:老年男性的 OSA 诊疗率自研究时期以来显著上升,当代队列的未治疗比例更低,直接影响疾病先验。
  • 标注代际漂移:AJRCCM 2025 的再分析显示原始标注与现代 AASM 口径的 AHI 偏差达 MAE 11.16 次/小时(校正后 1.03),跨年代使用旧标注等价于让模型学习一套已被更正的评分规则;纵向研究尤其要避免 V1 用原始口径、V2 用另一口径的混合比较。

§7.7 DAIMS 数据集 AI 就绪度评分

# 检查项 状态 说明
1 宽格式可用性 ✅ visit1/visit2 两个 CSV,一行一受试者
2 唯一受试者标识 ✅ aa_id 贯穿表格、EDF、XML 与结局
3 特殊字符处理 ✅ 全英文编码字段,无自由文本混入
4 重复行检测 ✅ 2025-03 已修复三例重复导出 EDF 并记录于 CHANGELOG
5 缺失值编码 ✅ A/M/K/W/D/N 体系全表统一
6 标签标识与定义 ⚠️ 低通气 Hypopnea/Unsure 双标签需自行合并,口径易错
7 罕见类别分组 ⚠️ 少数族裔子集极小(99/85/30),分层分析功效不足
8 偏倚评估 ✅ 性别/种族/志愿者/幸存者偏倚均有公开文献支撑
9 数据字典 ✅ NSRR 变量页 + mros-data-dictionary 仓库
10 信息性缺失解释 ✅ 已知问题页逐 ID 列明缺失原因
11 设备与采集记录 ✅ 两版设备页完整给出导联、采样率、传感器
12 共线性筛查 ⚠️ 未提供官方共线性分析;AHI 与低氧指标高度相关需自查
13 编码映射 ✅ 变量编码统一;本页 §2 提供 ICD-11/SNOMED 映射
14 时间戳处理 ⚠️ EDF 日期脱敏为 01.01.85,绝对时间需靠访视标签近似
15 划分建议 ✅ 本页 §5 给出受试者级划分与纵向协议
16 泄漏讨论 ✅ 本页 §5.3 + 坑点 3/5 覆盖跨访视与重复导出泄漏
17 标签分布 ✅ §4.2 汇总已发布统计
18 测量偏倚 ✅ 中央评分 + 质量分级公开;居家伪迹特征明确
19 外部验证建议 ✅ §5.5/§7.8 给出优先级队列
20 版本记录 ✅ CHANGELOG 完整(2015-2025 共 7 次事件)
21 预处理脚本 ✅ 官方 edf-editor-translator/edf-viewer + 本页 §6 可运行代码
22 合规要求 ✅ DAUA 条款与致谢要求清晰
23 多模态对齐 ⚠️ PSG-结局按 aa_id 关联;体动仪原始数据不在 NSRR 版,对齐需经 MrOS Online
24 去标识化 ✅ 日期脱敏、地理聚合、无直接标识符

DAIMS 评分:19.0 / 24

评分解读:优秀——受试者级主键、统一缺失编码、逐 ID 记录的已知问题清单与 10 年持续维护的 CHANGELOG 使其工程质量在公开睡眠队列中位居前列;扣分集中在标签口径(低通气双标签、AASM 时代差)、绝对时间脱敏与少数族裔功效不足三类结构性约束。

对你意味着什么:这份数据集可以直接进入生产级训练流程——用 aa_id 做组级划分、用官方变量页核对每个字段、把坑点 1/4 的口径规则写进配置即可避免 90% 的复现事故。不要做的事:把 Unsure 当作噪声丢弃、在 V2 上用腿动通道、用 EDF 内置日期做纵向分析、声明女性人群性能。若你的研究目标是跨人群睡眠基础模型,MrOS 的最佳角色是"老年男性外部验证集 + 纵向稳定性测试集",而非唯一训练集。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
MrOS 纵向(V1→V2,间隔约 6 年) MIT / Nature Medicine 2022 前驱期帕金森病风险预测 12 例前驱 PD 中 75% 在确诊前被模型预测为 PD(P = 4.27×10⁻⁶) —(利用队列纵向性而非外推) 公开睡眠数据可支撑确诊前疾病信号检测
SHHS 外部迁移 Stanford / Nature Medicine 2026 心血管结局迁移学习 充血性心衰、卒中、CVD 死亡预测显著 相对内部多数疾病 AUROC 差 5-17% SleepFM 表征可跨队列迁移
MESA/SHHS 跨队列 AHI 分级 Stanford / Nature Medicine 2026 AHI 有无与严重度分级 有无 acc 0.87、四级 acc 0.69 — 口径统一后跨队列严重度分级可行
SHHS1/SHHS2/MESA 标注重算 AJRCCM 2025 会议摘要 AHI 口径一致性 MrOS1 校正后 MAE 1.03/小时 原始标注 MAE 11.16/小时 → 校正后大幅下降 老公开队列的呼吸标注需按 AASM 重算方可跨研究比较

§8 基准性能与生态

§8.1 排行榜:基于 MrOS 数据的代表性研究

排名 模型/研究 性能 年份 关键技术 完整引用 代码
1 呼吸 AI(帕金森检测) 呼吸带夜间信号 PD 检测 AUC 0.889;前驱期 75% 检出 2022 网状/序列神经网络的呼吸信号表征,SHHS+MrOS 公开数据训练 Yang Y, Yuan Y, Zhang G, et al., Nature Medicine, 2022, 28:1107-1115. DOI 10.1038/s41591-022-01932-x 按需学术申请
2 SleepFM AHI 有无分类 acc 0.87、严重度四级 acc 0.69;分期 macro-F1 0.70-0.78 2026 多模态对比预训练(脑电+心电+呼吸),MrOS 参与预训练 Thapa R, Kjaer MR, He B, et al., Nature Medicine, 2026, 32:752-762. DOI 10.1038/s41591-025-04133-4 GitHub
3 U-Sleep 跨 16 队列高频分期基线(无需 MrOS 专属数字即可作起点) 2021 全卷积网络 + 多队列联合训练 Perslev M, Darkner S, Kempfner L, et al., npj Digital Medicine, 2021, 4:72. DOI 10.1038/s41746-021-00440-5 官网
4 标注再分析流程 MrOS1 AASM 校正后 AHI MAE 1.03/小时(原始 11.16) 2025 规则化 AASM 重标注 Ahn HK, Lee HK, Lee Y, Shin H-W, Am J Respir Crit Care Med, 2025, 211(Suppl):A1056. DOI 10.1164/ajrccm.2025.211.Abstracts.A1056 未公开

⚠️ 数值不可直接比较:各行任务(PD 检测 / AHI 分级 / 睡眠分期)、输入信号与评估协议不同;Yang 2022 与 SleepFM 的数字分别来自其自设的验证协议,不存在统一下游榜单。以 MrOS 为外部测试集复现时,务必冻结自己的划分与口径并在论文中完整披露。

§8.2 SOTA 总结与选型建议

睡眠分期:U-Sleep 与 SleepFM 代表当前公开数据上的第一梯队;若你的算力有限,自建 CNN+LSTM 在 2,911 例 V1 上亦可获得可用的分期基线,但应报告 kappa 与 macro-F1 而非准确率。AHI/严重度分级:SleepFM 的四级协议是当前最透明的公开参照;任何新模型都应对齐坑点 4 的口径。疾病预测:帕金森呼吸 AI 展示了"老信号新任务"的空间——MrOS 的老年男性队列特别适合作为此类二用任务的前瞻性验证池。

选型决策建议按三条路径考虑。路径 A(分期为主):先用 U-Sleep 或 SleepFM 的公开权重做零样本推理,把 MrOS 当外部测试集;若 kappa 明显低于其在 SHHS/MESA 的公开数字,差异本身就是"老年脑电泛化缺口"的可发表发现,再决定是否在 2,911 例上微调。路径 B(呼吸事件/AHI 为主):从 §6.3 的事件表解析与低氧负荷特征出发,先建立规则基线(低氧负荷 + 气流形态统计),再上深度模型;规则基线在该数据集上意外地强——Stone 2014 用它拿到了与结局的稳定关联。路径 C(结局预测为主):不追分期精度,直接用睡眠结构汇总特征(各期占比、潜伏期、低氧负荷、觉醒指数)加经典生存模型,对标 Blackwell 2011/Stone 2014/Cauley 2014 的效应量方向;深度序列模型只有在经典特征不够用时才值得引入。

无论哪条路径,先跑通一晚数据(aa0236 是事实上的"示例记录")、再扩展到 100 例、最后全量的三段式推进最稳:老年居家数据的伪迹分布与教科书实验室数据差异极大,早期全量投入常在数据质量处理上反复返工。

§8.3 评测协议

  1. 任务定义冻结:分期(5 类,30 秒 epoch)、事件检测(事件级 F1)、AHI(MAE + 四级分组 acc)、结局预测(C-index/AUROC)。
  2. 划分冻结:aa_id 组级 5 折或公开划分清单;纵向任务 V1→V2。
  3. 口径冻结:低通气合并规则、AHI ≥3% 口径、N3 合并规则写入配置。
  4. 报告规范:kappa/macro-F1(分期)、MAE + severity acc(AHI)、C-index(生存),附受试者数与排除清单。

一份可直接套用的评测配置示例(YAML),与 §6.10 的"口径版本化"呼应:

dataset: mros
data_version: "nsrr-2025-03"        # 以拉取时 CHANGELOG 最新条目为准
visit: [visit1]                      # 跨访视实验改为 [visit1, visit2]
excluded_ids:                        # 文件级缺失,§4.5
  edf_xml: [aa1103, aa1578, aa2660, aa5781]
  xml_only: [aa2159, aa2180, aa4156]
label_rules:
  hypopnea_merge: [Hypopnea, Unsure] # 坑点 1:两类都算低通气
  ahi_desat: 0.03                    # AHI 口径:>=3% 血氧下降
  stage_merge: {stage3: N3, stage4: N3}
split:
  group_key: aa_id
  folds: 5
  stratify: [site, age_band]
metrics:
  staging: [kappa, macro_f1]
  ahi: {mae: true, bins: [5, 15, 30]}
  events: {f1_tol_sec: 30}

配置落盘并纳入版本控制后,任何复现请求只需重跑同一配置即可;这也是把坑点 1/4 的口径知识从"人脑"搬到"仓库"的最小工程化手段。

数据集 机构 规模(标注记录) 模态 与 MrOS 的互补
SHHS NHLBI / NSRR 5,793(V1)+ 2,651(V2) 居家 PSG + CVD 结局 更大样本、混合性别、同源评分协议
MESA Sleep NHLBI / NSRR 2,054 居家 PSG 种族多样性
SOF Sleep NSRR 461 居家 PSG(女性) 老年女性对照
MrOS Online UCSF 队列级变量 问卷/临床访视 补充 NSRR 版缺失的体动仪变量与其他访视

§8.5 关键论文 Top 8

  1. Blackwell T, Yaffe K, Ancoli-Israel S, Redline S, Ensrud KE, Stefanick ML, Laffan A, Stone KL. Associations between sleep architecture and sleep-disordered breathing and cognition in older community-dwelling men: the Osteoporotic Fractures in Men Sleep Study. J Am Geriatr Soc. 2011;59(12):2217-2225. DOI 10.1111/j.1532-5415.2011.03731.x —— 睡眠结构与低氧同认知的横断面关联(官方指定引用)。
  2. Stone KL, Blackwell TL, Ancoli-Israel S, Cauley JA, Redline S, Marshall LM, Ensrud KE. Sleep disturbances and risk of falls in older community-dwelling men: the Outcomes of Sleep Disorders in Older Men (MrOS Sleep) Study. J Am Geriatr Soc. 2014;62(2):299-305. DOI 10.1111/jgs.12649 —— 嗜睡、短睡眠与低氧独立预测反复跌倒而 AHI 不相关。
  3. Cauley JA, et al. Hypoxia during sleep and the risk of falls and fractures in older men: the Osteoporotic Fractures in Men Sleep Study. J Am Geriatr Soc. 2014;62(10):1853-1859. DOI 10.1111/jgs.13069 —— 夜间低氧与跌倒/骨折风险,骨折随访平均 6.8 年。
  4. Orwoll E, et al. Design and baseline characteristics of the osteoporotic fractures in men (MrOS) study. Osteoporos Int. 2005 —— 母队列设计与基线特征。
  5. Zhang GQ, Cui L, Mueller R, Tao S, Kim M, Rueschman M, Mariani S, Mobley D, Redline S. The National Sleep Research Resource: towards a sleep data commons. J Am Med Inform Assoc. 2018;25(10):1351-1358. DOI 10.1093/jamia/ocy064 —— NSRR 平台论文(官方指定引用)。
  6. Yang Y, Yuan Y, Zhang G, et al. Artificial intelligence-enabled detection and assessment of Parkinson’s disease using nocturnal breathing signals. Nat Med. 2022;28:1107-1115. DOI 10.1038/s41591-022-01932-x —— 用包括 MrOS 在内的公开睡眠数据训练呼吸 AI,并利用其纵向结构做前驱期预测。
  7. Perslev M, Darkner S, Kempfner L, Nikolic M, Jennum PJ, Igel C. U-Sleep: resilient high-frequency sleep staging. npj Digit Med. 2021;4:72. DOI 10.1038/s41746-021-00440-5 —— 跨队列高频分期基线模型。
  8. Thapa R, Kjaer MR, He B, et al. A multimodal sleep foundation model for disease prediction. Nat Med. 2026;32:752-762. DOI 10.1038/s41591-025-04133-4 —— MrOS 参与预训练的多模态睡眠基础模型。

§8.6 社区活跃度

NSRR 自 2014-04 上线以来持续运营(NHLBI R24 HL114473 与 75N92019R002 资助),MrOS 数据集在其 论坛 接受数据问题反馈(support@sleepdata.org);GitHub 上 nsrr/mros-data-dictionary、nsrr/edf-editor-translator、nsrr/edf-viewer 构成官方工具链;CHANGELOG 显示数据维护持续至 2025-03。学术侧,2011-2026 年间从老年流行病学论文到 Nature Medicine 级基础模型研究持续引用,是 NSRR 平台的核心老年队列之一。

§8.7 生态快照

资源 类型 链接 状态(截至 2026-09) 推荐理由
NSRR MrOS 数据集页 官方托管 sleepdata.org/datasets/mros 持续维护 唯一官方分发入口
MrOS Online 变量门户 mrosonline.ucsf.edu 公开可查 补充 NSRR 版不含的变量
mros-data-dictionary GitHub 字典 github.com/nsrr/mros-data-dictionary 官方维护 变量定义版本化
edf-editor-translator GitHub 工具 github.com/nsrr/edf-editor-translator 官方维护 XML 标注转换逻辑参考实现
edf-viewer GitHub 工具 github.com/nsrr/edf-viewer 官方维护 EDF+XML 离线可视化
nsrr CLI 下载工具 NSRR 官方文档 官方维护 批量下载标准方式
SleepFM 代码库 模型代码 github.com/zou-group/sleepfm-clinical 已发布 含 MrOS 预训练配置的参照实现

§9 相关资源与引用

§9.1 官方资源列表

阅读顺序建议:新手按"数据集介绍 → 变量浏览器 → PSG 介绍 → 设备页"阅读,可在一小时内建立全貌;有经验的用户直接查看 PSG 介绍页的"已知问题/更新历史"区与变量页的缺失编码区,这两处是全部历史踩坑的沉淀地。

§9.2 BibTeX 引用

@article{Blackwell2011mros,
  author  = {Blackwell, Terri and Yaffe, Kristine and Ancoli-Israel, Sonia and Redline, Susan and Ensrud, Kristine E. and Stefanick, Marcia L. and Laffan, Alison and Stone, Katie L.},
  title   = {Associations between sleep architecture and sleep-disordered breathing and cognition in older community-dwelling men: the {O}steoporotic {F}ractures in {M}en {S}leep {S}tudy},
  journal = {Journal of the American Geriatrics Society},
  year    = {2011},
  volume  = {59},
  number  = {12},
  pages   = {2217--2225},
  doi     = {10.1111/j.1532-5415.2011.03731.x}
}

@article{Stone2014falls,
  author  = {Stone, Katie L. and Blackwell, Terri L. and Ancoli-Israel, Sonia and Cauley, Jane A. and Redline, Susan and Marshall, Lynn M. and Ensrud, Kristine E.},
  title   = {Sleep disturbances and risk of falls in older community-dwelling men: the {O}utcomes of {S}leep {D}isorders in {O}lder {M}en ({M}r{OS} {S}leep) {S}tudy},
  journal = {Journal of the American Geriatrics Society},
  year    = {2014},
  volume  = {62},
  number  = {2},
  pages   = {299--305},
  doi     = {10.1111/jgs.12649}
}

@article{Cauley2014hypoxia,
  author  = {Cauley, Jane A. and Blackwell, Terri L. and Stone, Katie L. and others},
  title   = {Hypoxia during sleep and the risk of falls and fractures in older men: the {O}steoporotic {F}ractures in {M}en {S}leep {S}tudy},
  journal = {Journal of the American Geriatrics Society},
  year    = {2014},
  volume  = {62},
  number  = {10},
  pages   = {1853--1859},
  doi     = {10.1111/jgs.13069}
}

@article{Zhang2018nsrr,
  author  = {Zhang, Guo-Qing and Cui, Ligong and Mueller, Remo and Tao, Shao and Kim, Matthew and Rueschman, Michael and Mariani, Sara and Mobley, Daniel and Redline, Susan},
  title   = {The {N}ational {S}leep {R}esearch {R}esource: towards a sleep data commons},
  journal = {Journal of the American Medical Informatics Association},
  year    = {2018},
  volume  = {25},
  number  = {10},
  pages   = {1351--1358},
  doi     = {10.1093/jamia/ocy064}
}

@article{Yang2022parkinson,
  author  = {Yang, Yuzhe and Yuan, Yang and Zhang, Guo and others},
  title   = {Artificial intelligence-enabled detection and assessment of {P}arkinson's disease using nocturnal breathing signals},
  journal = {Nature Medicine},
  year    = {2022},
  volume  = {28},
  pages   = {1107--1115},
  doi     = {10.1038/s41591-022-01932-x}
}

@article{Perslev2021usleep,
  author  = {Perslev, Mathias and Darkner, Sune and Kempfner, Lykke and Nikolic, Miki and Jennum, Poul J{\o}rgen and Igel, Christian},
  title   = {{U-Sleep}: resilient high-frequency sleep staging},
  journal = {npj Digital Medicine},
  year    = {2021},
  volume  = {4},
  pages   = {72},
  doi     = {10.1038/s41746-021-00440-5}
}

@article{Thapa2026sleepfm,
  author  = {Thapa, Rahul and Kjaer, Magnus Ruud and He, Bryan and Covert, Ian and Moore IV, Hyatt and Hanif, Umaer and Ganjoo, Gauri and Westover, M. Brandon and Jennum, Poul and Brink-Kjaer, Andreas and Mignot, Emmanuel and Zou, James},
  title   = {A multimodal sleep foundation model for disease prediction},
  journal = {Nature Medicine},
  year    = {2026},
  volume  = {32},
  pages   = {752--762},
  doi     = {10.1038/s41591-025-04133-4}
}

§9.3 引用指南

使用本数据集时:① 引用 Zhang 2018(NSRR 平台)与 Blackwell 2011(队列);② 在致谢中包含官方资助文本(R01 HL071194、R01 HL070848、R01 HL070847、R01 HL070842、R01 HL070841、R01 HL070837、R01 HL070838、R01 HL070839;NSRR R24 HL114473、75N92019R002);③ 引用本页可写作"千方医数集,MrOS Sleep Study AI-Ready Wikipedia,2026"。

补充指引:若论文使用了 Sleep Visit 1/Visit 2 的 PSG 信号本身,还建议同时引用数据集 DOI(10.25822/kc27-0425)与所用数据版本——本数据集 2015-2025 年间有多次文件替换(§1.4),只写"来自 NSRR"无法区分 2024 年下载与 2025-03 修复后的下载;若使用了特定结局分析(跌倒/骨折/认知),按 §8.5 引用对应原始论文作为效应量出处,可显著减少审稿轮次。

§10 AI 使用声明卡

§10.1 AI 模型列表

模型 用途 提供方
fast-model(CodeBuddy Code agent) 本页面初稿撰写与结构组织 CodeBuddy

§10.2 AI 参与范围

AI 负责检索整理公开来源、起草全部章节与代码示例;事实核查以 WebSearch/定点抓取原始来源执行;最终内容由千方病案医学编辑部人工交叉审核后发布。AI 未访问任何受 DAUA 保护的数据内容,页面所有数字均来自公开发表文献与 NSRR 官方页面。

§10.3 输入来源列表

  1. NSRR MrOS 数据集页 — 队列规模、资助号、引用要求
  2. NSRR dataset-introduction — visit1/visit2 文件结构
  3. NSRR polysomnography-introduction — 记录数、XML 双版本、低通气标签、已知问题、更新历史
  4. NSRR equipment-mros1 — Visit 1 导联与采样率
  5. NSRR equipment-mros2 — Visit 2 导联差异
  6. NSRR 变量页 girace — 种族构成
  7. NSRR 变量页 posao2re — 血氧统计与缺失编码
  8. NSRR 变量页 posllatp — 睡眠潜伏期统计
  9. Blackwell T, et al. J Am Geriatr Soc. 2011;59(12):2217-2225 — 认知结局分析(EuropePMC)
  10. Stone KL, et al. J Am Geriatr Soc. 2014;62(2):299-305 — 跌倒结局分析(PubMed)
  11. Cauley JA, et al. J Am Geriatr Soc. 2014;62(10):1853-1859 — 低氧与跌倒/骨折(全文镜像)
  12. Yang Y, et al. Nat Med. 2022;28:1107-1115 — 帕金森呼吸 AI(PMC)
  13. Thapa R, et al. Nat Med. 2026;32:752-762 — SleepFM(Nature)
  14. Perslev M, et al. npj Digit Med. 2021;4:72 — U-Sleep(OUCI 引文)
  15. AJRCCM 2025 会议摘要 A1056 — NSRR 标注再分析(书目记录)
  16. re3data NSRR 记录 — 平台治理与 DAUA
  17. AASM NSRR 上线报道 — 平台启动时间
  18. DataCite DOI 10.25822/kc27-0425 — 数据集 DOI
  19. WHO ICD-11 简明编码列表(国家卫健委发布)— 睡眠障碍编码
  20. MrOS Sleep 机体成分论文(ResearchGate)— PSG 质量分级与设备细节

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
frontmatter 与 INFOBOX 元数据 千方病案医学编辑部 逐字段比对官方来源 ✅ 已通过
§2 医学背景与 ICD-11/SNOMED 映射 千方病案医学编辑部 对照 WHO ICD-11 编码列表 ✅ 已通过
§3 数据集规格与设备规格 千方病案医学编辑部 对照 NSRR 设备页 ✅ 已通过
§4 DAIMS 数据字典与缺失编码 千方病案医学编辑部 对照变量页与已知问题页 ✅ 已通过
§5 划分与泄漏分析 千方病案医学编辑部 依据官方文件结构与 CHANGELOG 复核 ✅ 已通过
§6 预处理代码与 8 个坑点 千方病案医学编辑部 代码走查 + 坑点溯源到官方文档 ✅ 已通过
§7 DAIMS 24 项与偏倚分析 千方病案医学编辑部 交叉审核 ✅ 已通过
§8 基准数字与引用 千方病案医学编辑部 对照原始论文摘要 ✅ 已通过
§9 BibTeX 与资源链接 千方病案医学编辑部 DOI 逐条核验 ✅ 已通过

§10.5 AI 生成章节标注

本页面全部章节由 AI 起草(fast-model),经千方病案医学编辑部人工交叉审核;未采用无人工核验的 AI 生成数字。

§10.6 最后人工审核日期

2026-09-05

页面状态:published(全部内容已完成审核并发布)


相关数据集导航

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

  • shhs — 共享标签:生理信号 / 电子健康记录 / 队列研究 / 睡眠信号
  • nsrr — 共享标签:生理信号 / 电子健康记录 / 队列研究 / 睡眠信号
  • mesa-sleep — 共享标签:生理信号 / 队列研究 / 睡眠信号
  • mimic3wdb — 共享标签:生理信号 / 电子健康记录
  • mimic3wdb-matched — 共享标签:生理信号 / 电子健康记录
  • mimic4wdb — 共享标签:生理信号 / 电子健康记录
  • cinc-2018-sleep — 共享标签:生理信号 / 睡眠信号
  • all-of-us-nih — 共享标签:电子健康记录 / 队列研究
  • sleep-edf — 共享标签:生理信号 / 睡眠信号
  • sicdb — 共享标签:生理信号 / 电子健康记录

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

返回 AI-Ready 数据集