信息速览
颅内压是神经重症里最要紧的一个数。它高了会压住脑灌注,低了说明引流可能过量。测它的标准方法是有创的:在脑室或脑实质里放一根探头;有创意味着感染、出血,以及一根管子插在孩子头上。于是有一个持续二十多年的想法:能不能只靠动脉血压和脑血流速度把它估出来。原理不复杂——血液从动脉进颅、从静脉出,中间的阻力与颅腔内压力相关,而经颅多普勒测到的流速波形会留下这个关系的痕迹;难点是这个关系没有解析式,只能靠数据驱动,而数据驱动需要「颅内压、动脉血压、血流速度」三件套同一时刻对齐,且有创颅内压作参照。
这份数据就是三件套本身。十二名二至二十五岁的患儿、约十小时、一百二十五赫兹,每一刻三路波形对齐在同一条时间轴上,旁边附红细胞压积与两个压力传感器的垂直高度。它最不寻常的是那两个高度:颅内压探头贴耳屏、动脉血压传感器贴心脏,相差十几厘米就有十几毫米汞柱的静水压差,比多数颅内压的临床关注阈值还大。绝大多数同类数据没有这一项。
要建估计模型的看 §1.3 与 §8;关心能不能申请到的先看 §3 的三道门槛;只想知道值不值得投入的看 §4 与 §7。
§1 它是什么:三路波形与两个高度
1.1 一句话定义与四条边界
这是一份儿童神经重症的床旁波形记录集:12 名 2 至 25 岁的患者,约 10 小时总时长,每段记录含动脉血压、颅内压、一侧大脑中动脉血流速度三路波形,外加红细胞压积与两个压力传感器的垂直高度。
四条边界。
第一,只有 12 名患者。 这不是一个队列,是一个方法学验证集。它的设计目标是「够验证一个估计模型」,不是「够做人群统计」。
第二,血流速度只测一侧。 每条记录要么是右侧大脑中动脉(RMCA),要么是左侧(LMCA),不同时给两侧。这意味着无法从这份数据研究左右半球的不对称。
第三,颅内压是有创的、连续的,但只在临床需要时才有。 数据采集的前提是「临床上已经决定要放颅内压探头并且要监测动脉血压」,所以样本天然偏向病情重到需要这两项监测的患儿。
第四,全部受限访问。 需要认证账户、CITI 培训、签署数据使用协议三道门槛。
1.2 采集流程:一天两次,跟着临床走
文档对流程的描述很清楚:数据采集在患儿同时需要颅内压与动脉血压监测的期间进行,每天最多两次专门的床旁记录场次。
这个「跟着临床走」的设计有一个直接后果:采样不连续。两次场次之间可能隔几小时,中间发生的事(一次血压骤降、一次脱水治疗、一次体位改变)都不会被记录。所以这份数据不能当连续监护用,只能当「若干次快照」。
每场次记录多久,文档没说。只说每条记录含「60 个或更多心动周期」。若按儿童心率每分钟 100 至 120 次算,60 拍约 30 至 36 秒。这解释了为什么 12 名患者加起来只有约 10 小时——若每场次半分钟,10 小时需要一千二百场次,而实际场次数远少于此。合理的推断是每条记录比 60 拍长得多,60 拍是最低门槛而非典型长度。
1.3 三路波形的物理关系
理解这份数据的关键,是理解三路信号之间那条物理链。
动脉血压 $P_a(t)$ 是输入。血液经小动脉进入颅内,颅内压 $P_{ic}(t)$ 是这个封闭腔里的基线压力。脑灌注压定义为:
$$CPP = MAP - ICP$$
其中 $MAP$ 是平均动脉压。脑血流速度 $v(t)$ 由多普勒测得,与血流量 $Q$ 的关系是 $Q = v \cdot A$,$A$ 是血管截面积。
关键在于:$A$ 不是常数,它随 $P_a - P_{ic}$ 变化(血管的被动弹性),也随血管平滑肌的张力变化(主动调节)。所以从 $(P_a, v)$ 推 $P_{ic}$,本质是要解一个「血管顺应性未知」的反问题。
这就是为什么这个问题难,也是为什么它必须靠数据驱动——顺应性无法从体表测出来。
1.4 两个高度为什么必须记
颅内压探头通常贴着耳屏(外耳道前方的骨性突起)放置,动脉血压传感器通常贴着心脏(第四肋间腋中线)放置。两者在成人身上相差约 20 至 30 厘米,在儿童身上小一些,但绝不可忽略。
静水压换算很简单:1 厘米水柱约 0.74 毫米汞柱,血液密度略高于水,1 厘米血液柱约 0.78 毫米汞柱。若两个传感器相差 15 厘米,压力读数之间就有约 11.7 毫米汞柱的系统偏差。
这个量级很要命:儿童颅内压的正常上限通常按 20 毫米汞柱算,治疗阈值在 20 至 25 之间。11.7 毫米汞柱的偏差足以把「正常」变成「临界」。
所以这份数据把 hAbp 与 hIcp 两个字段单独给出来,不是锦上添花,是让使用者能做事后校正:
$$P_{ic}^{校正} = P_{ic}^{读数} + \rho g (h_{Icp} - h_{Abp})$$
要注意的是,两个高度在记录期间可能变——抬高床头、翻身、调整传感器位置都会改变它。文档只说「每个场次记录一次高度」,没说记录的是场次开始时、结束时还是平均值。这是一个真实的不确定性。
1.5 红细胞压积为什么也在里面
血液的黏度随红细胞压积变化,而黏度影响血流速度与压力的关系。同一个灌注压下,压积高的血走得慢。
文档说每次采集场次记录「最近一次的红细胞压积值」。注意是「一次」——整个场次用同一个常数,不随输血、补液、采血而变化。
对建模的影响是:若某个场次中途输过血,那个常数就不准了。这在儿童重症里不算罕见。
1.6 儿童为什么比成人更难
把这件事放在儿童身上,难度是加倍的,原因有四条。
颅腔的顺应性不同。 婴儿的颅骨有囟门与骨缝,未闭合前颅腔是可扩张的,颅内压升高时先靠扩大容积缓冲,等缓冲耗尽压力才陡升。这条曲线比成人陡得多——也就是说,同样一个容积增加,在婴儿身上可能长时间看不出压力变化,然后突然崩掉。这使「压力与容积非线性」这件事在儿童身上更极端。
正常值随年龄变。 成人的颅内压正常上限相对统一(平卧 10 至 15 毫米汞柱,超过 20 需处理)。儿童没有这么统一:婴幼儿的正常值本来就低,而不同年龄段的参考范围在不同文献里还不一致。这直接影响到标注与阈值类特征。
心率快,波形周期短。 儿童心率常在 100 至 140 次每分,一个心动周期只有 0.4 至 0.6 秒。125 赫兹采样下一个周期只有 50 至 75 个点,比成人少得多。所有基于波形细节的特征(上升时间、重搏切迹位置)在这么少的点上会更难估。
血流速度的绝对值和成人不同。 大脑中动脉的平均流速在儿童身上通常高于成人(因为管径小、流速快),而随年龄增长下降。这意味着「用成人数据训的模型直接迁到儿童」在输入端就有系统偏差。
这四条合起来说明:这份数据的价值不只是「儿童数据少」,而是「儿童的生理让这个问题变得不同」。反过来,这也意味着从这个数据集上得到的结论不能简单外推到成人。
1.7 与其它神经重症数据的区别
| 数据 | 颅内压 | 动脉血压 | 脑血流 | 人群 | 访问 |
|---|---|---|---|---|---|
| MIMIC 系列 | 部分有 | 有 | 无 | 成人 | 受限 |
| eICU | 部分有 | 有 | 无 | 成人 | 受限 |
| 这一份 | 有创连续 | 连续 | 多普勒连续 | 儿童 | 受限 |
差别在第三列:脑血流速度。绝大多数重症数据库只有压力,没有流量。而颅内压估计这个问题的核心恰恰在「压力与流量之比」上。
1.8 它不适合回答什么
不适合回答「儿童颅内压的正常分布是什么」——12 个病例、全部是需要监测的重症,没有正常对照。
不适合回答「哪种治疗降低了颅内压」——没有治疗事件标注。
不适合回答「左右半球差异」——每次只测一侧。
§2 数据构成:六路信号与命名规则
2.1 文件组织
数据在 waves 目录下,每条记录是一对 WFDB 文件(.hea 与 .dat)。记录名由三部分拼成:患者编号、场次编号、血流速度测量部位。
命名形态大致是「患者号 + 场次号 + LMCA 或 RMCA」。文档没有给出确切的字符串模板,只说「基于患者编号、关联场次与测量部位」。
这一点值得特别说明:文件清单不对非认证用户公开。本页在未登录状态下访问该数据集的文件目录与校验和文件,得到的是 403 拒绝,而不是文件列表。这与开放数据不同——开放数据的目录可以随便看,只是下载需要遵守许可。所以本页无法给出确切的记录数、文件数、体量。
读者若需要这些数字,只能自己走完认证流程后查看。这一点写在这里,是为了避免有人以为本页漏了——不是漏了,是拿不到。
2.2 六路信号
| 信号名 | 含义 | 单位 | 采样 |
|---|---|---|---|
ABP |
动脉血压 | 毫米汞柱 | 125 赫兹 |
ICP |
颅内压 | 毫米汞柱 | 125 赫兹 |
CBFV |
大脑中动脉血流速度 | 厘米每秒 | 125 赫兹 |
hAbp |
动脉血压传感器垂直高度 | 厘米 | 常数 |
hIcp |
颅内压传感器垂直高度 | 厘米 | 常数 |
Hct |
红细胞压积 | 百分比 | 常数 |
前三路是真正的波形,后三路是标量。把它们放进同一条 WFDB 记录里,是一种工程上的便利,也是一处容易出错的地方:读取时若按「所有通道都是波形」处理,后三路会变成一条常数直线,画图时会占据纵轴范围,看起来像信号丢了。
2.3 125 赫兹这个采样率
125 赫兹对动脉血压与颅内压够用——这两个波的主要能量在 10 赫兹以下,脉搏波的谐波到 20 赫兹左右就衰减得差不多了。
但对血流速度,125 赫兹偏紧。多普勒血流速度波形的上升支很陡,频谱成分可以到 30 至 40 赫兹。125 赫兹的奈奎斯特上限是 62.5 赫兹,理论上够,但实际只剩一点余量。若要算脉搏波传导时间、或者做血流速度的高阶导数分析,这个采样率会成为瓶颈。
2.4 时间对齐
文档明写:三路波形「在事后做过时间对齐」,具体方法见 Fanelli 等 2019 年的论文。
这句话信息量很大,也留了一个口子。「事后对齐」意味着原始采集时三路并不同步——这在技术上必然,因为动脉血压与颅内压走监护仪的数字输出,血流速度走多普勒系统的独立输出,两者的时钟不同源。
对齐的精度决定了这份数据的上限。若对齐误差是 10 毫秒,那么任何依赖「压力波与流速波的相位差」的分析(比如脉搏波传导时间)都会带系统误差。而这类相位差正是估计颅内压的一类常用特征。
文档没给对齐误差的量化指标。这是使用这份数据时第一个要自己去论文里找的参数。
2.5 质量筛查
每条记录「含 60 个或更多心动周期,这些数据已通过一系列步骤评估动脉血压与血流速度波形的信号质量」。
这句话有两层意思。一层是每条记录都过了质量门槛,另一层是筛查用的是动脉血压与血流速度,没提颅内压。
若真是这样,就存在一种可能:某个场次的颅内压信号质量很差,但因为动脉血压与血流速度合格而被保留。使用者需要自己检查颅内压通道——比如看它有没有超出 0 至 100 毫米汞柱的合理范围、有没有平直段、有没有与动脉血压的搏动完全脱钩。
2.6 用 WFDB 读取时要注意的三件事
import wfdb
rec = wfdb.rdrecord('waves/patientXX_sessionYY_RMCA')
print(rec.sig_name) # 六路名字
print(rec.p_signal.shape) # (N, 6)
三件事。
一是常数通道会占位。 hAbp、hIcp、Hct 在 p_signal 里是一整列相同的值。若直接把 p_signal 当波形矩阵画图,纵轴范围会被这三列压扁。正确的做法是先用 sig_name 索引分流。
二是单位不统一。 三路波形是毫米汞柱与厘米每秒,三路常数是厘米与百分比。WFDB 头文件里每路有自己的单位字段,读取时要按名字取单位,不要假定统一。
三是记录长度不一。 每条记录的时长取决于场次,不同记录的点数不同。若要做批处理,要么按最短的截断,要么按心动周期切分后重组——后者更合理,因为心动周期是这份数据真正独立的单位。
2.7 体量与记录数的估算
文件清单不公开(§2.1),但可以估个量级。
若总时长约 10 小时、三路波形各 125 赫兹、每点 2 字节,那么波形数据约 $10 \times 3600 \times 125 \times 3 \times 2 \approx 27$ 兆字节。加上三路常数与头文件,总量在 30 兆字节上下。
这个估算的意义是:这份数据在任何机器上都不构成存储或内存障碍。全量读进内存做分析完全可行。这与「受限访问」给人的印象(通常意味着大数据)不同——它小而关键,不是大而全。
记录数则完全无法估。若每条记录只有 60 拍(约 30 秒),10 小时需要 1200 条;若每条记录有 10 分钟,只需 60 条。文档只说「每条至少 60 拍」,没给典型长度。这个不确定性直接影响「12 名患者 × 多少条记录」这个结构,也影响交叉验证时每折的样本量。
§3 怎么拿到:三道门槛
3.1 访问等级
PhysioNet 把这份数据定为 Restricted Access。原话是:
Only credentialed users who sign the DUA can access the files.
要同时满足三个条件。
一是成为认证用户。 需要在 PhysioNet 上提交身份信息并通过审核,通常需要机构邮箱与研究者身份。
二是完成 CITI 培训。 具体课程是「Data or Specimens Only Research」,这是一门面向人体数据研究的伦理与合规课程,通常需要数小时。
三是签署数据使用协议。 协议版本是 PhysioNet Credentialed Health Data Use Agreement 1.5.0。
三道门槛都不是技术门槛,是行政门槛。对机构内的研究者,通常几天到两周能走完;对独立研究者或个人,可能走不通(认证需要机构背书)。
3.2 协议的核心约束
DUA 1.5.0 的主要条款可以概括成四条:
不得尝试重新识别任何个体。不得把数据转给未签署协议的第三方。不得把数据用于协议声明的目的之外。发现任何泄露或再识别风险须立即报告。
其中「不得转给第三方」这一条对协作有实际影响:跨机构合作时,每一方都要各自签署,不能由一方代签后共享。
3.3 拿不到的那部分
如 §2.1 所说,文件清单、校验和、体量这些信息对非认证用户不公开。
这意味着:在申请之前无法评估这份数据是否够用。你只能从文档的定性描述(12 名患者、约 10 小时、每条记录 60 拍以上)来判断,看不到实际的记录数、每段多长、质量如何。
这是一个真实的决策困难。相比之下,开放数据可以先下载一小部分试试再决定要不要投入。
可缓解的办法:先读引用它的三篇论文(Fanelli 2019、Imaduddin 2020、Jaishankar 2020),论文里通常会给记录数、每段时长、患者年龄分布这些统计。这是申请前唯一能做的功课。
3.4 引用要求
文档明确要求:若使用这份数据,必须引用 Fanelli 等 2019 年发表在 Journal of Neurosurgery: Pediatrics 的那篇论文(24 卷 5 期,509 至 519 页)。
同时应引数据集本身的 DOI 10.13026/5kvn-pp29,以及 PhysioNet 的标准引用。
§4 质量:四处需要留意的地方
4.1 高度只记一次
§1.4 说过。文档的表述是「在每个数据采集场次,我们做了压力传感器垂直高度的床旁测量」。
一次场次可能持续几分钟到半小时。这期间如果护士抬了床头、或者患者翻了个身,两个传感器的相对高度就变了,而记录里还是那个初始值。
后果:用固定高度做校正,在姿态变化的场次上会引入残余误差。这个误差有多大,取决于场次内姿态变化有多频繁——数据里看不出来。
4.2 一侧血流,且声窗可能变
经颅多普勒靠颞骨的一处薄区(声窗)穿透颅骨。声窗的位置因人而异,同一个人的两侧也可能一侧好一侧差。
文档说测量由「在经颅多普勒超声方面有经验并持证、或接受过有指导的手把手培训的团队成员」执行。这保证了操作质量,但也意味着探头角度、深度、增益这些参数由人决定,不同场次之间可能不同。
后果:同一患者两次场次的血流速度绝对值不可直接比较。若要跨场次比较,只能用相对量(比如搏动指数、或归一化到平均流速)。
4.3 红细胞压积是场次级常数
§1.5 说过。补充一点:儿童重症里输血不罕见,而一次输血可以把压积从 25% 提到 35%,黏度变化近四成。若场次中途输血,用场次初的压积做校正就偏了。
4.4 缺什么
这份数据里没有的东西,列一下,因为它们都是建模时想要的:
脑血管自动调节状态(可用平均流速对平均动脉压的传递函数估,但需要血压的自发波动,而这份数据每段只有半分钟到几分钟,够不够算传递函数不好说)。
镇静深度(影响脑代谢与血流)。
机械通气参数(胸腔内压影响颅内压)。
体温(影响脑代谢)。
床头角度(影响静水压与颅内压)。
瞳孔与格拉斯哥评分(临床严重度)。
治疗事件(脱水、引流、升压药)。
这些缺失不是作者的疏忽——回溯性整理床旁数据,能对上时间戳的字段只有监护仪里那些。
4.5 受限访问对可复现性的实际影响
这一节说的不是数据质量,是这份数据的使用条件对研究工作本身的影响,因为它比多数人预想的大。
第一,结果无法被第三方直接复核。 开放数据的论文,审稿人可以自己下载复算。受限数据的论文,审稿人要么已经签了同一份 DUA,要么只能相信作者报的数字。这在方法学论文里是个真问题——而这份数据的主要用途恰恰是方法学。
第二,代码与数据的分离。 你可以公开代码,但不能公开数据。别人拿到代码跑不了,只能看你报的结果。这会削弱「可复现」这个词的实际含义。
第三,跨机构协作的成本。 每个参与方都要各自认证、各自签 DUA,不能由一方代签。一个三机构合作的项目,光走流程可能要一个月。
第四,数据不能进公开的基准平台。 任何需要把数据上传到评测服务器的比赛或榜单,都无法使用这份数据。这限制了它在社区里的传播。
第五,模型权重的合规性。 用受限数据训出来的模型,权重算不算「衍生数据」、能不能公开分发,DUA 里通常不写清。保守做法是不公开,这又进一步降低了可复现性。
这五条不是这份数据独有的问题,是所有受限医疗数据的通病。写在这里是因为:申请之前应该想清楚,你要的是「一份能验证想法的小数据」,还是「一份能支撑公开基准的大数据」。这份数据只适合前者。
§5 能做什么:五类用法
5.1 用法一:验证无创颅内压估计模型
这是作者的本意,也是这份数据最主要的价值。
做法:把动脉血压与血流速度当输入,颅内压当真值,训练一个从 $(P_a(t), v(t))$ 到 $P_{ic}(t)$ 的映射。评估时用留一患者交叉验证(12 人,每次留一人)。
三类常见建模路线:
黑箱回归。把一段波形的形态特征(峰、谷、上升时间、搏动指数、谐波幅值)喂给梯度提升树或小神经网络。优点是实现快,缺点是可解释性差、且 12 人的样本量极容易过拟合。
生理模型加参数辨识。用一个简化的脑血管模型(比如三元件 Windkessel 或更复杂的传递函数模型),把未知参数(顺应性、阻力)用观测数据拟合,再从拟合后的模型反推颅内压。Imaduddin 等 2020 年的「伪贝叶斯」路线属于这一类。优点是有物理约束,参数有含义;缺点是模型错了就全错。
频域方法。看血流速度与动脉血压的传递函数在不同频段的增益与相位,从中提取与颅内压相关的指标。Jaishankar 等 2020 年的谱方法属于这一类。优点是稳健,缺点是只给一个标量估计而非波形。
5.2 用法二:研究两个压力的静水压差
hAbp 与 hIcp 两个字段让一件平时做不了的事成为可能:量化「不校正会错多少」。
做法:对每条记录,算 $\rho g (h_{Icp} - h_{Abp})$,看这个量的分布。若多数记录在 5 至 15 毫米汞柱之间,说明不校正的颅内压读数普遍偏高或偏低这个量级。
这个分析不需要建模,几行统计就能做,但它的结论对临床有直接意义——它给「传感器高度必须记录」这个操作规范提供了一个定量依据。
5.3 用法三:搏动指数与颅内压的关系
搏动指数(pulsatility index)是一个从单路血流速度波形就能算的标量:
$$PI = \frac{v_{收缩} - v_{舒张}}{v_{平均}}$$
它反映下游血管阻力。颅内压升高会压迫脑血管、增加下游阻力,所以 PI 与颅内压正相关——这是一个有几十年文献支持的经验关系。
这份数据可以直接验证这个关系在儿童身上的强度。做法:对每条记录的每个心动周期算 PI 与同期的平均颅内压,做散点与相关。
预期结果是相关显著但不强($r$ 在 0.4 至 0.7 之间),且个体间差异大。若真是这样,就说明「单靠 PI 估颅内压」不可行,必须个体化校准——这正好支持作者做「免校准」模型时遇到的困难。
5.4 用法四:波形形态的跨患者差异
12 名患者的病理各不相同(创伤、颅缝早闭晚期、代谢病、脑病)。脑血流速度波形的形态在这些病理之间有没有系统差异,是一个开放问题。
做法:把每条记录的典型心动周期(比如中位数周期)对齐后取平均,得到一个「患者级模板波形」,然后看 12 个模板之间的聚类结构。
这属于探索性分析,没有标准答案,但它的价值在于:如果聚类结构与病理类型对得上,说明波形形态携带诊断信息;如果对不上,说明个体差异压倒病理差异,也就意味着任何群体级模型都需要个体化。
5.5 用法五:作为信号处理方法的测试床
三路信号、125 赫兹、有质量筛查、有真值——这套组合适合测试各种信号处理方法:
心动周期分割算法的稳健性(颅内压波形在病理状态下形态可以很怪)。压力波与流速波的相位差估计。多尺度熵、样本熵这类非线性指标在短段上的稳定性。缺失段与伪迹的检测。
这类用法不需要 12 人这个样本量做统计,只需要「几条真实的、有代表性的波形」,这正是这份数据能提供的。
5.6 前置工作:心动周期的分割
所有用法都依赖同一个前置步骤:把连续波形切成一个一个心动周期。这一步做不好,后面全是错的。
用什么通道切。 最稳的是动脉血压——它的收缩期上升支最陡、最容易定界。用血流速度切也可以,但在低流速或探头不稳时容易漏。用颅内压切最不稳,因为颅内压波形在病理状态下形态可以很怪(平台波、C 波)。
怎么定界。 常见三种:找上升支的最陡点(一阶导数最大处)、找收缩期峰值、找一个固定的压力阈值。三种在有噪声时表现不同:最陡点法对高频噪声敏感,峰值法对双峰(重搏切迹明显时)敏感,阈值法对基线漂移敏感。
一个实用的组合:先在动脉血压上找最陡点作为候选,再用一个最小间隔(比如 0.3 秒)去掉过密的候选,最后用峰值做微调。这套组合在多数监护波形上都能跑通。
分段之后的检查。 周期长度的分布应该是单峰且窄的(儿童心率变异小)。若出现双峰,说明有漏检或误检;若出现长尾,说明有漏拍。这两种都要在进入建模前处理掉——把异常的周期剔除,而不是让模型去学它们。
为什么这件事在这份数据上格外重要:每条记录只有 60 拍以上,一个误检就占百分之一点七。若剔除标准太松,样本量会掉得很快;若太严,又会引入选择偏倚(把最难的周期剔掉了,而难的周期恰恰是模型要面对的)。
5.7 DAIMS 二十四项检查
按 DAIMS 逐项过一遍。注意这份数据是受限访问,有些项在「可复现性」维度上先天受限,不能算作者的问题,但使用者必须知道。
| 维度 | 项 | 判定 | 依据 |
|---|---|---|---|
| 数据文档 | 目的说明 | 是 | Background 段明确:支持无创颅内压估计模型的开发与验证 |
| 数据文档 | 采集方法 | 是 | 设备型号、参考点、采样率、操作人员资质都写了 |
| 数据文档 | 采样率 | 是 | 明写 125 赫兹,三路波形一致 |
| 数据文档 | 单位 | 是 | 每个字段都标了单位 |
| 数据文档 | 许可与协议 | 是 | 三份文件名称与版本都明确 |
| 数据文档 | 版本管理 | 部分 | 只有 1.0.0 一版,无变更记录可参考 |
| 数据文档 | 引用格式 | 是 | 要求引 Fanelli 2019 与数据集 DOI |
| 数据质量 | 缺失值说明 | 否 | 未说明是否有缺失、缺失如何处理 |
| 数据质量 | 异常值说明 | 部分 | 提到质量筛查,但只针对动脉血压与血流速度 |
| 数据质量 | 事件标注 | 否 | 无治疗、无体位、无临床事件 |
| 数据质量 | 标签来源 | 是 | 颅内压是有创测量的物理量,不是人工标注 |
| 数据质量 | 时间对齐 | 部分 | 说做了事后对齐,未给误差指标 |
| 数据质量 | 采样时长 | 部分 | 给「至少 60 拍」下限,未给典型值 |
| 可复现性 | 数据可得性 | 否 | 受限访问,非认证用户无法获取 |
| 可复现性 | 文件清单公开 | 否 | 目录与校验和对非认证用户返回 403 |
| 可复现性 | 处理代码 | 否 | 未提供 |
| 可复现性 | 环境依赖 | 是 | 标准 WFDB 格式 |
| 可复现性 | 可复算性 | 部分 | 同机构可复算,跨机构受 DUA 限制 |
| 伦理与隐私 | 伦理审批 | 是 | 提到经相关伦理委员会批准 |
| 伦理与隐私 | 知情同意 | 是 | 患者或法定代理人书面同意,适龄者另有赞同 |
| 伦理与隐私 | 去标识 | 是 | 明写全部数据已去标识 |
| 公平性 | 人群构成 | 部分 | 给了年龄范围,未给年龄分布、性别比 |
| 公平性 | 病理构成 | 部分 | 只说「多种病理」,未给分类计数 |
| 可维护性 | 联系方式 | 是 | 页面有通讯作者入口 |
统计:是 10、部分 8、否 6。
六项「否」里有三项(数据可得性、文件清单公开、可复算性)不是数据本身的缺陷,而是访问模式的必然结果。真正属于内容缺失的是三项:缺失值说明、事件标注、处理代码。
缺失值这一项在这类数据上格外要紧。床旁监护波形的中断是常态(护士操作、转运、传感器校零),而文档完全没提这些中断是怎么处理的——是保留了平直段,还是删掉了,还是填充了。这直接影响每段记录的真实信息量。
§6 常见误读与五处陷阱
6.1 误读一:把 12 当队列
12 名患者,全部来自一家医院的神经重症病房,全部是「临床上已经需要颅内压监测」的患儿。这不是一个能代表儿童颅内压分布的人群。
误用的后果:算出来的「平均颅内压」「正常范围」都不能推广。
6.2 误读二:把约 10 小时当连续
10 小时是全部 12 名患者加起来的总时长,不是每人的监护时长。每人可能只有几十分钟到几小时,中间还有大量空档。
误用的后果:以为能做长时程趋势分析,实际每段只有几分钟。
6.3 误读三:忽略高度校正
直接读 ICP 通道的数值当颅内压用,不做高度校正。
误用的后果:系统偏差可能有十几毫米汞柱,足以让「正常」与「升高」的判定反过来。
6.4 陷阱一:把常数通道当波形
hAbp、hIcp、Hct 三路是常数,不是波形。若统一按波形处理并画图,这三条直线会把纵轴压扁。
正确的做法是先按信号名分流:前三路进波形数组,后三路进标量表。
6.5 陷阱二:一侧血流的绝对值跨场次比较
§4.2 说过。同一患者的 RMCA 场次与 RMCA 场次之间,若探头角度不同,平均流速可以差两三成。
正确的做法是跨场次比较时只用相对量,或先做归一化。
6.6 陷阱三:用 125 赫兹算高阶导数
血流速度波形的一阶导数在 125 赫兹下还能看,二阶导数基本是噪声。
若方法需要加速度特征,要么先做平滑(但会削峰),要么承认这个采样率不支持。
6.7 陷阱四:把质量筛查当全通道有效
§2.5 说过。筛查针对动脉血压与血流速度,颅内压未提及。
正确的做法是自己对 ICP 通道做一遍合理性检查。
6.8 陷阱五:忽视对齐误差
§2.4 说过。相位类特征对对齐误差极其敏感。
正确的做法是先看 Fanelli 2019 论文里对齐误差的量化,再决定能不能用相位特征。
§7 在生态中的位置
7.1 与成人神经重症数据的互补
成人侧有 MIMIC、eICU 这类大规模数据库,颅内压与动脉血压都有,但脑血流速度几乎没有。这份数据补的是流量这一路。
规模上它远不能与成人库比,但「有流量」这一点是决定性的——没有流量,颅内压估计这个问题的输入就不完整。
7.2 在儿童数据里的稀缺性
儿童重症公开数据本来就少,儿童神经重症的波形数据更少。这份数据大概是目前能公开申请到的少数几份之一。
稀缺性的代价是:它会被反复引用,即使 12 人这个规模不足以支撑强结论。
7.3 与无创颅内压研究的路线关系
无创颅内压估计有三条主流路线:经颅多普勒(这一份数据支持)、眼底或视神经鞘超声(需要影像,这一份不含)、以及基于体表生理信号的黑箱模型(需要大量配对数据,这一份不够)。
这份数据的定位是第一条路线的标准验证集。它不追求规模,追求「三件套齐全 + 有高度校正」。
7.4 规模上的定位
| 维度 | 数值 | 定位 |
|---|---|---|
| 患者 | 12 | 极小 |
| 总时长 | 约 10 小时 | 极小 |
| 每段底线 | 60 拍 | 短 |
| 信号路数 | 6(3 波形 + 3 标量) | 少但关键 |
| 采样率 | 125 赫兹 | 中低 |
| 访问 | 受限 | 高门槛 |
7.5 适合谁用
适合:做无创颅内压估计的研究组(这是唯一齐全的公开验证集之一);做脑血流自动调节分析的团队;需要真实儿童重症波形做教学或算法测试的人。
不适合:需要大样本训练深度网络的团队;需要正常对照的研究;需要治疗或预后标签的研究。
§8 建模的实操建议
8.1 特征工程:从三路波形到标量
先给一份能跑通的最简特征集,每条心动周期一组:
| 特征 | 来源 | 说明 |
|---|---|---|
| 平均动脉压 | ABP | 一个周期的均值 |
| 收缩压、舒张压 | ABP | 峰与谷 |
| 平均颅内压 | ICP | 一个周期的均值 |
| 颅内压峰、谷 | ICP | 心搏内波动幅度 |
| 平均流速 | CBFV | 一个周期的均值 |
| 收缩期峰值流速 | CBFV | 峰 |
| 舒张末期流速 | CBFV | 谷 |
| 搏动指数 | CBFV | (峰−谷)/均值 |
| 阻力指数 | CBFV | (峰−谷)/峰 |
| 上升时间 | CBFV | 从起点到峰值的时间 |
| 压力流速相位差 | ABP 与 CBFV | 互相关的峰位置 |
| 压积 | Hct | 场次级常数 |
| 高度差 | hIcp − hAbp | 场次级常数 |
其中「压力流速相位差」是最有信息量也最脆弱的一个——它的可靠性直接取决于 §2.4 的对齐精度。
8.2 交叉验证:留一患者
12 名患者,唯一合理的划分是留一患者交叉验证(leave-one-patient-out)。每一次用 11 人训练、1 人测试,重复 12 次,报告 12 个误差的分布。
不能用按记录划分——同一患者的多条记录高度相关,泄漏会让误差被严重低估。
也不能用按心动周期划分——同一个周期的相邻周期之间相关性极高。
8.3 评估指标
三个就够:平均绝对误差(毫米汞柱)、均方根误差(对大的偏差更敏感)、以及「是否超过 20 毫米汞柱」这个二分类的敏感度与特异度。第三个最重要——临床关心的是要不要处理,不是精确到小数点后一位。
8.4 一个必须做的基线
在报任何模型的性能之前,先算一个最朴素的基线:用平均动脉压减去一个常数当颅内压估计。这个常数的取值可以是从训练集算出的平均差。
若你的模型打不过这个基线,说明它没学到任何东西。若只比基线好一点点,要考虑是不是 12 人的样本量导致的偶然。
8.5 过拟合的迹象
12 人、几千个心动周期,这个比例下过拟合的表现有几个:训练集误差远低于测试集;留一交叉验证的 12 个结果方差极大(某几个人特别好、某几个人特别差);特征重要性排序在不同折之间剧烈变化。
出现其中任何一个,都应该先减特征而不是加模型复杂度。
8.6 从估计值到临床决策:阈值不是常数
模型输出一个毫米汞柱的数值,临床上要把它变成一个动作。这一步比建模更容易出错。
成人的颅内压处理阈值通常写 20 或 22 毫米汞柱,超过就考虑脱水、引流、或调整通气。儿童的阈值按年龄分层:婴幼儿更低,学龄期接近成人。而这份数据横跨 2 至 25 岁,也就是说同一个数值在不同年龄的患者身上意味着不同的事。
对建模的影响有两层。第一层是评估:若用统一的 20 毫米汞柱做二分类,婴幼儿的正例会系统性地被判成阳性。第二层是训练:若把「是否超过 20」当标签,模型会学到年龄与标签的虚假关联。
合理的做法有两个。一是用年龄分层的阈值(需要查儿科指南,本文不给具体数字,因为不同指南之间并不完全一致)。二是不做二分类,只报连续值的误差,把阈值判断留给临床。
还有第三层,更微妙:颅内压是一个会波动的量,一个心动周期内的波动可以有 5 至 10 毫米汞柱(脉搏波成分),呼吸周期内的波动也有几个毫米汞柱。任何「瞬时值超过阈值」的判断都要先定义用哪个统计量——周期的均值、周期的峰值、还是一分钟窗口的均值。这三者差别很大。
8.7 失败模式清单
在 12 人的规模上做建模,失败的方式是可预测的。列一份清单,便于自查。
失败一:把患者身份学进去了。 12 个人,每人有独特的波形形态。若模型在训练集上学会了「这 11 个人的平均波形长这样」,到第 12 个人身上就会失效。留一交叉验证能暴露这一点,但需要真的去做。
失败二:把高度差当成了信号。 hIcp − hAbp 是一个场次级常数。若某个患者的这个值特别大,而他的颅内压也特别高,模型可能把高度差当成预测因子。这在训练集上有效,在新患者身上毫无意义。
失败三:把压积当成了信号。 同理。压积与病情严重度相关(重症患者贫血常见),所以压积可能「预测」颅内压,但这不是因果。
失败四:把采样率当成了带宽。 125 赫兹下算二阶导数、算高频功率,得到的基本是噪声。而噪声在训练集与测试集之间的分布可能不同,导致性能不稳定。
失败五:把对齐误差当成了生理延迟。 压力波与流速波之间的相位差是真实存在的生理量,但对齐误差也会产生相位差。两者混在一起,且无法分开。
失败六:把「过质量筛查」当成了「质量好」。 筛查针对动脉血压与血流速度(§2.5),颅内压没有。若颅内压通道有系统性问题,筛查不会拦住。
六条里有四条(二、三、四、五)是这份数据特有的,另两条是通用问题。自查时按这个顺序过一遍,能省下不少时间。
§9 术语与口径速查
| 术语 | 本页用法 |
|---|---|
| ICP | 颅内压,颅腔内的压力,单位毫米汞柱 |
| ABP | 动脉血压,本文特指有创烧动脉置管测得的连续波形 |
| CBFV | 脑血流速度,本文特指大脑中动脉的多普勒测量值 |
| TCD | 经颅多普勒,用超声穿透颅骨测颅内大血管血流速度 |
| MAP | 平均动脉压,一个心动周期的血压均值 |
| CPP | 脑灌注压,等于平均动脉压减颅内压 |
| 搏动指数 | (收缩期峰值流速 − 舒张末期流速) / 平均流速 |
| 阻力指数 | (收缩期峰值流速 − 舒张末期流速) / 收缩期峰值流速 |
| 静水压 | 由液柱高度产生的压力,1 厘米血液柱约 0.78 毫米汞柱 |
| RMCA / LMCA | 右侧 / 左侧大脑中动脉 |
| 声窗 | 颅骨上超声可以穿透的薄区,通常在颞部 |
| DUA | 数据使用协议 |
§10 三条技术路线的对照
这一节对 §5.1 提到的三条路线做更具体的对照,因为它们对数据的要求不同——这也是判断「这份数据够不够用」的关键。
10.1 黑箱回归:对数据量的要求最高
输入:一段波形的形态特征(几十个标量)。
输出:一个颅内压数值。
需要多少数据:若特征数 30、患者 12 人,每个患者至少要有几百个独立的训练样本才不至于过拟合。而心动周期之间高度相关,有效独立样本远少于周期数。
在这份数据上的可行性:低。12 人做留一验证,每次训练只有 11 人,模型容量稍大就会记住人。可用的做法是把模型压到极小(线性回归、深度 2 的树),并严格做特征选择。
优势:实现快,不需要懂生理。
10.2 生理模型加参数辨识:对数据质量的要求最高
输入:连续的压力与流速波形。
输出:模型参数(顺应性、阻力),再由参数推颅内压。
需要多少数据:每个患者单独辨识参数,不需要跨患者的大量样本。
在这份数据上的可行性:中等偏高。13 人足够做「每人单独建模」的验证,而这正是这类方法的天然形态。风险在于模型本身是否合适——若真实生理比模型复杂,辨识出的参数再准也没用。
优势:参数有物理含义,可解释;个体化,不依赖大样本。
对数据的要求:波形质量、时间对齐精度、以及每个患者有足够长的连续段(至少要覆盖几个呼吸周期,否则无法分离心动与呼吸成分)。
10.3 频域方法:对采样率的要求最高
输入:压力与流速的功率谱、交叉谱、传递函数。
输出:与颅内压相关的频谱指标。
需要多少数据:中等,但要求每段足够长以得到稳定的谱估计。
在这份数据上的可行性:中等。125 赫兹的采样对低频段(0.5 至 10 赫兹)够用,但段长是限制——若每段只有 30 秒,谱估计的频率分辨率只有 0.03 赫兹,做传递函数时低频几个点会很粗糙。
优势:稳健,对单个伪迹不敏感。
对数据的要求:段长。而段长恰恰是文档最含糊的一项(§2.7)。
10.4 三条路线的选择建议
若目标是「证明这条路能走通」,选第二条(生理模型),因为它对样本量的要求最低,且能给出可解释的结论。
若目标是「做一个能用的产品原型」,选第一条(黑箱),但要接受它在这份数据上无法充分验证。
若目标是「找一个稳健的指标」,选第三条(频域),但要先确认段长够不够。
三条路线不是互斥的。文献里的主流做法是「生理模型给骨架、黑箱补残差、频域做诊断」,而这份数据支持这种混合路线——因为它同时提供了时域波形与足够长的段。
§11 事实清单与附录
11.1 核心事实
| 项 | 值 |
|---|---|
| 全名 | Neurocritical Care Waveform Recordings in Pediatric Patients |
| 版本 | 1.0.0(2024-01-08) |
| DOI | 10.13026/5kvn-pp29(最新 10.13026/n8k7-bh29) |
| 许可 | PhysioNet Credentialed Health Data License 1.5.0 |
| DUA | PhysioNet Credentialed Health Data Use Agreement 1.5.0 |
| 必需培训 | CITI「Data or Specimens Only Research」 |
| 访问 | Restricted,仅认证用户 |
| 机构 | 波士顿儿童医院 |
| 患者数 | 12 |
| 年龄范围 | 2 至 25 岁 |
| 总时长 | 约 10 小时 |
| 每段底线 | 60 个心动周期 |
| 采样率 | 125 赫兹(前三路) |
| 信号 | ABP、ICP、CBFV、hAbp、hIcp、Hct |
| 监护仪 | Philips MP-90 |
| 多普勒 | Spencer ST 3 |
| 归档系统 | Moberg 组件神经监护系统 |
| 颅内压零点 | 耳屏水平 |
| 动脉血压零点 | 心脏水平(通常) |
| 资助 | NINDS R21 NS084264 等 |
| 首选引用 | Fanelli 等,J Neurosurg Pediatr 2019;24(5):509-519 |
11.2 三篇关联论文
| 论文 | 主题 | 与本数据的关系 |
|---|---|---|
| Fanelli 等 2019,J Neurosurg Pediatr 24(5):509-519 | 全自动、实时、免校准的儿童无创颅内压连续估计 | 本数据即该文所述数据,含时间对齐方法细节 |
| Imaduddin 等 2020,IEEE TBME 67(6):1604-1615 | 伪贝叶斯模型驱动的无创颅内压估计与跟踪 | 用本数据验证模型路线 |
| Jaishankar 等 2020,IEEE JBHI 24(8):2398-2406 | 频谱方法的无创颅内压估计 | 用本数据验证频域路线 |
三篇论文合起来给出了三条技术路线,这也是这份数据最实用的入口——在拿到数据之前,先读这三篇能判断它是否够用。
11.3 六路信号的读取要点
| 信号 | 类型 | 读取后应做的第一件事 |
|---|---|---|
| ABP | 波形 | 检查有无超出 20–200 毫米汞柱的段 |
| ICP | 波形 | 检查有无超出 0–100 毫米汞柱的段、有无平直 |
| CBFV | 波形 | 检查有无零速或负速段(探头脱落) |
| hAbp | 常数 | 确认非零、非缺失 |
| hIcp | 常数 | 确认非零、非缺失 |
| Hct | 常数 | 确认在 15–60 百分比之间 |
11.4 附录 A:静水压校正的最小实现
RHO_G_PER_CM = 0.78 # 毫米汞柱每厘米血液柱,近似值
def correct_icp(icp, h_icp, h_abp):
"""把颅内压读数校正到与动脉血压同一水平面。
h_icp、h_abp 单位厘米,以同一任意基准测量。"""
return icp + RHO_G_PER_CM * (h_icp - h_abp)
三个注意:一是符号方向取决于两个高度用的是不是同一个参考地面,若一个用床面、一个用地面,差值就错了;二是 0.78 这个系数随压积略变,压积高时密度高,但差异在百分之一量级,一般可忽略;三是校正只对平均值有意义,对波形的峰谷也有意义(因为整个波形都平移),所以直接对整条波形加同一个偏移即可。
11.5 附录 B:六个可立即验证的疑问
一,两个传感器的实际高度差是多少?分布如何?这决定了校正的量级。
二,125 赫兹下血流速度波形的上升时间分辨率是多少?约 8 毫秒,够不够算脉搏波传导时间?
三,每条记录的实际时长是多少?文档只说 60 拍以上,没给上限。
四,ICP 通道有没有出现过平直或脱钩?质量筛查没提这一路。
五,同一患者不同场次的 RMCA 平均流速差异有多大?这能量化声窗变化的影响。
六,三路信号的对齐误差是多少?Fanelli 2019 论文里应有答案。
六个问题里,前五个自己拿到数据就能算,第六个要读论文。
11.6 附录 C:证据链
- 数据集条目页:
https://physionet.org/content/neurocritical-pediatric/1.0.0/(Abstract、Background、Methods、Data Description、Usage Notes、Ethics、Acknowledgements、References 各节) - 访问条款:页面 Files 段仅说明「须为认证用户、完成 CITI 培训、签署 DUA」,未列文件清单
- 本页在未认证状态下访问
https://physionet.org/files/neurocritical-pediatric/1.0.0/SHA256SUMS.txt,返回 403 Forbidden,因此文件数、体量、记录命名模板均无法给出 - 三篇关联论文见 §11.2
凡属分析性内容(§1.3 的物理关系、§5.2 到 §5.4 的用法建议、§8 的建模建议、§11.4 的校正公式)为基于公开材料与领域常识的推演,非官方结论。凡标注「文档说」的均为条目页原文表述。
编辑说明
本页依据 PhysioNet 条目页(2026-10-19 取)写成,未获得数据文件本体——该数据为受限访问,本页在未认证状态下访问文件目录与校验和均返回 403。因此本页不含任何按文件核对的统计,所有数字都来自条目页的定性或定量描述。
这与前几篇不同:前几篇的写作方式是把文档数字与文件内容对照,找出不一致。这一篇做不到,因为文件拿不到。作为补偿,本页把「拿不到什么」写清楚了(§2.1、§3.3),并在 §11.5 列出了拿到数据后可立即验证的六个问题——这些问题的答案不依赖本页,只依赖数据本身。
本页未做的事:未读三篇关联论文的全文(仅据条目页的引用信息与标题推断其主题与路线),因此 §5.1 对三条技术路线的描述是基于标题与摘要层面的理解,具体方法细节需自行核对原文;未评估时间对齐误差,这是本页反复强调但无法量化的参数。

