信息速览
步数是一个很诱人的指标。便宜、直观、人人能懂,几乎所有消费级手环都在算它。但在医院里,步数几乎没用。一个卧床三天的肺炎病人,与一个每天绕病区走十圈的心衰病人,步数差几十倍——这个差别太粗,粗到无法用来预测任何事。真正有信息量的,是动作的形态:起身的爆发力、步态的稳定性、夜间翻身的频次、久坐的时长。
这些都要从原始惯性信号里算。而多数公开的可穿戴数据集,给的正是算好的步数。这份数据反其道而行。五十八位内科住院病人,腕上戴一块博世开发的传感器,三轴加速度与三轴角速度以一百赫兹持续记录,另有温湿光压四种环境读数。数据里没有任何派生指标——没有步数、没有活动分钟数、没有睡眠分期。给的就是原始信号。这个选择的后果是双向的。一方面,它把「什么算活动」这个定义权交给了使用者,让新的活动识别算法有地方可试。另一方面,它让这份数据的使用门槛高了不少——你得先自己造出一个活动量,才能谈相关性。
五十八位病人,来自斯图加特的罗伯特·博世医院,内科与肿瘤病区,2016 年采集,最长监测十天。想知道目录长什么样,读 §2.1;想搞清楚佩戴依从性为什么关键,读 §4.3;只想判断能不能用来做再入院预测,直接读 §6.9。
§1 它是什么:原始信号加临床标签
1.1 一句话定义与四条边界
这是一份前瞻性观察数据集:58 位内科住院病人,住院期间佩戴腕戴传感器,采集原始惯性信号与环境信号,配以逐次测量的生命体征、化验值与出院后三十天再入院状态。
四条边界。
第一,给的是原始信号,不是活动量。 这一点是这份数据最鲜明的特征。目录里没有一个「步数」字段,也没有「活动强度」字段。所有活动相关的量都要自己算。
第二,监测有上限。 每位病人最多监测十天,出院早于十天则提前结束。所以院内活动只能观察住院的前半段,长期住院病人的后期没有数据。
第三,样本有明确的入选与排除。 十八岁以上、能独立或在辅具帮助下走三米、无佩戴手表的医学禁忌、因特定急性内科情况入院、预计住院至少四十八小时。排除截肢者、仅能轮椅活动者、卧床者。
第四,受限访问。 需要签署数据使用协议。
1.2 为什么不留步数
这个问题值得正面回答,因为它决定了这份数据的定位。
步数的问题不在于不准,而在于它是一个面向健康人的指标。消费级算法调优的目标是「走在街上的人」,假设是连续步行、步幅稳定、手臂自然摆动。住院病人不满足这些假设:走三步就停下、扶着输液架、手臂被限制、步幅因疼痛而缩短。
在这种条件下,步数算法会系统性失效——不是误差大,是根本检测不到。而如果数据提供方直接给步数,使用者无从知道效力如何,只能盲信。
给原始信号,等于把这个问题暴露出来:任何使用者都必须自己面对「这段信号里到底有没有走」的判断,而不是接受一个黑箱输出。条目页把这一点写得很清楚——目的是让人研究「适用于评估病人健康状态的活动识别算法」,而不是依赖步数这类通用指标。
这个理由站得住。代价是使用门槛高,且不同研究之间难以直接比较结果(因为各自定义的活动量不同)。
1.3 五个通道组
传感器给六类信号,可以分成五组看。
惯性组:acc_1 至 acc_3 是三轴加速度,gyro_1 至 gyro_3 是三轴角速度。采样率一百赫兹。这一组是活动识别的核心。
湿度:hum,百分比。
光照:light,单位焦耳。这个单位值得注意——光照通常用勒克斯,用焦耳意味着记录的是能量而非照度,可能经过某种累积或标定。使用前要确认。
气压:pres,单位写作千克每米每秒平方,即帕斯卡。气压可以用来估楼层变化(每上升一层气压略降),这是一条被低估的信息——住院病人每天走多少层楼梯或多少趟走廊,气压能给出线索。
温度:temp,摄氏度。
后四组的采样率都是一赫兹。
这四组环境信号的实际价值:光照与温度可以标记昼夜与室内外,湿度与气压可以标记位置变化。把它们与惯性信号合起来,能推断出比「动了多少」更丰富的东西——比如「夜里起来了三次,每次都去了卫生间」(气压与湿度变化加路径长度)。
1.4 双采样率带来的对齐问题
一百赫兹与一赫兹差两个数量级。两组合并时,必须先把惯性信号降采样,或者把环境信号插值升采样。
这两种做法各有代价。
降采样会丢掉高频信息。而加速度的高频成分恰恰是区分动作类型的关键——走路与翻身的差别在频谱的高段。
升采样会造出不存在的中间值。环境信号变化慢,线性插值勉强可用,但插值出来的曲线会让人误以为分辨率真的提高了。
建议做法:不要急着合并。先在一百赫兹上做活动识别,得到逐秒的活动标签序列;再把标签序列与一秒一格的环境信号对齐。这样高频信息用在了它该用的地方,对齐发生在语义层而不是采样层。
1.5 临床数据分两层
条目页把临床信息分成两层,这个设计值得单独说。
第一层,不随时间变的:放在 examineeInfo_publicReduced.json 里。含年龄、性别、住院总时长、居住与照护状况(自主、居家护理、养老机构)等。
第二层,随测量变的:放在 measurementInfo_publicReduced.json 里,每次测量一份。含体重、生命体征(心率、体温、血压、血氧)、以及化验值(C 反应蛋白、肌酐、白细胞计数、血红蛋白)。
为什么分两层?因为同一病人可能被测量多次(不同日期)。若把临床数据都放在病人层,多次测量的差异就丢了;若都放在测量层,重复存储病人级信息又浪费。
分层的实际好处是:可以做两种分析。一是「急性变化与活动的关系」——用测量层,看同一个人今天化验变差、活动是否也变少。二是「总体状况与活动的关系」——用病人层,看不同人的活动水平差异与结局的关联。
这两种分析的结论可能不同,甚至相反。分层设计让两者都能做,这是这份数据在结构上的一个优点。
1.6 入选条件划出了什么样的人群
入选条件是:十八岁以上、能走三米(可借助辅具)、无佩戴禁忌、因四类急性内科情况之一入院、预计住院至少四十八小时。
四类情况是:慢性肾病或心衰的容量负荷过重、急性感染、慢阻肺急性加重、恶性肿瘤进展或肿瘤治疗感染并发症导致的非计划入院。
排除:截肢、仅能轮椅活动、卧床。
这个条件组合,划出了一个特定的人群画像:能走、病情中等、以内科急性问题入院、预期不会当天出院。
画像之外的人被系统性地排除了:走不动的(最病重的)、能走的但只是来做个日间治疗的、外科病人、儿科病人、精神科病人。
所以这份数据描述的是「内科病房里还能下床的那批人」。这个限定在解读任何结论时都要带上。
1.7 它不适合回答什么
不适合回答「住院病人的平均活动量是多少」——样本经过筛选,且佩戴依从性不一。
不适合回答「活动量与再入院有因果关系」——观察性设计,且再入院只统计本院。
不适合回答「哪种活动识别算法最好」——数据本身不含算法,只含信号;比较需要自建标注。
不适合回答「老年人活动特点」——年龄分布未在条目页给出,但入选条件排除了走不动的老人,样本偏向功能较好的老年人。
适合回答的是方法学问题:在住院条件下,哪些信号特征能稳定区分活动类型?活动量的不同定义方式,对结局预测的影响有多大?单腕传感器的信息上限在哪里?
1.8 一个容易被忽略的设计:为什么是手腕
传感器戴在手腕上,不是腰、不是踝、不是胸。
这个选择有实际考虑。腕戴设备病人愿意长期佩戴,不影响洗漱之外的日常活动;腰戴与踝戴依从性差,且住院病人常有伤口、引流管、弹力袜。
代价是信号质量。手腕是人体活动最自由的部位之一——吃饭、写字、抓痒、翻身,手臂动而身体不动的情况极多。所以腕部加速度里混着大量「非位移性动作」,这些动作消耗能量很少,却会产生与走路相似的信号幅度。
这解释了为什么腕戴设备的步数算法普遍不如腰戴准。也解释了为什么这份数据强调「活动识别」而不是「活动计数」——识别动作类型,比数步数更能容忍腕部的噪声。
1.9 单侧传感器的信息上限
只用一只手腕,意味着另一侧身体的动作完全不可见。
对多数对称动作(走路、坐下、起身),单侧足够。但对不对称动作(单手持物行走、偏瘫病人的健侧代偿、扶拐),单侧会漏掉一半信息。
作者在限制里主动写了这一条:「我们只用了一个腕戴传感器来检测运动与体位」。这句话的分量在于,它承认了体位判断的可靠性受限——判断「躺着还是坐着」在单腕设备上本来就难,因为手腕的位置与躯干姿态只是弱相关。
若研究问题涉及体位(比如压疮风险、坠床风险),这份数据不够用。
§2 数据构成:目录、压缩包与文件
2.1 目录结构
每位病人一个目录,命名是 R401 到 R458——五十八个编号,连续。
每个目录下有一个 export 子目录,其下有:
examineeInfo_publicReduced.json:病人级信息,一份。
若干 measurement_1、measurement_2……子目录:每次测量一个。每个测量目录下有两个文件——sensorData.csv 与 measurementInfo_publicReduced.json。
所以文件数不是固定的。一位只测了一次的病人,目录里就一个测量子目录;测了五次的,就有五个。
条目页还说明:数据集按每档不超过十位病人切分成多个压缩包。五十八人大概会分成六到七个压缩包。
2.2 三层嵌套的读取逻辑
写读取代码时,要按三层来处理。
第一层是病人:R4xx。
第二层是测量:measurement_k,k 不连续,缺号是正常的(可能某次测量被剔除)。
第三层是信号:sensorData.csv 里一行一个时间点。
常见错误:假设每位病人的测量数相同。不能假设。必须先扫一遍目录,统计每人的测量次数分布,再决定怎么组织数据结构。
建议的数据结构:一个字典,键是病人编号,值是测量列表,每个测量是一个字典,含信号表、测量级临床信息、以及指向病人级信息的引用。这样既能按人聚合,也能按次分析。
2.3 sensorData.csv 的列
八列:time、acc_1、acc_2、acc_3、gyro_1、gyro_2、gyro_3、hum、light、pres、temp。
仔细数会发现这是十一列,不是八列。条目页列的是十一个字段,前面说「八列」是笔误——正确的读法是:一个时间列,六个惯性列,四个环境列。
time 是自测量开始起的毫秒数。这意味着每个测量文件的时间轴都从零开始,与病人的住院日历不对应。要把它挂到日历上,得靠 measurementInfo 里的日期字段。
2.4 惯性列的单位与量程
条目页没有给加速度与角速度的单位与量程。
这是一个必须自己反推的点。做法:读一段静置信号(病人躺着不动时),看三轴加速度的模长。若约为 1,单位是重力加速度 g;若约为 9.8,单位是米每二次方秒。量程则看最大值,若在 2 左右封顶,量程是正负二 g;若到 16,量程是正负十六 g。
角速度同理,静止时三轴应接近零,量程看峰值。
这两个参数直接影响特征工程——用 g 为单位算出的能量特征,与用米每二次方秒算出的差近十倍,跨数据集比较时必须统一。
2.5 环境列的四处疑点
四列环境信号各有一处需要核实。
湿度:单位是百分比,这个清楚。但传感器贴在手腕上,测得的是袖口与皮肤之间的微环境,不是病房湿度。袖子的厚薄、病人是否盖被子,都会影响读数。
光照:单位写作焦耳。这个单位很反常——焦耳是能量,而光照传感器通常输出照度(勒克斯)或光子通量。用焦耳可能意味着读数经过时间累积,也可能是单位标注有误。使用前必须核对。
气压:单位写作千克每米每秒平方,这是帕斯卡的展开式。量级应当在一千帕左右(海平面标准大气压约 1013 百帕)。若数值在 1000 附近,单位就是百帕;若在 100000 附近,是帕斯卡。
温度:摄氏度。同样受佩戴位置影响,腕部温度低于核心体温,且随环境变化。
这四列的共同问题是:它们测的是腕部微环境,不是病室环境。做位置推断时可以利用(比如从走廊进入病房,温湿度会跳变),但不能当作环境监测数据用。
2.6 两个 JSON 里有什么
条目页没有逐一列出 JSON 的字段,只给了概括。
examineeInfo 含年龄、性别、住院总时长、居住状况、照护方式等。
measurementInfo 含体重、生命体征(心率、体温、血压、血氧)、化验值(C 反应蛋白、肌酐、白细胞、血红蛋白)。
从 Methods 段还能推出一些:入组时问卷采集了种族、过去十二个月跌倒次数、上次住院、身高体重与 BMI、惯用手、吸烟状况、饮酒量、室内外行走辅具使用、居住与护理状况、以及德语版短版 IPAQ 问卷;还做了计时起立行走测试。
这些是否全部进入公开版 JSON,条目页没说。文件名带 publicReduced(公开精简版)这个后缀,暗示有删减。
2.7 体量估算与它的边界
体量只能估。
若一位病人测三次,每次二十四小时,一百赫兹采样,惯性通道每秒 600 个数值(六列),一天 86400 秒——单次约五千二百万个数值。三次一亿五千万。五十八人约八十七亿个数值。
即使按单精度存二进制,也是三十多吉字节;存 CSV 文本会膨胀数倍。
但实际不会这么大。条目页说监测上限十天,且要求单次记录至少八小时、佩戴占比超八成。若平均每次记录十二小时、平均两次,则每人约五千二百万个数值,五十八人约三十亿,二进制约十二吉字节。
这个量级意味着:全量装进内存不现实,必须按病人或按测量逐个处理。这也是为什么数据要切成多个压缩包。
2.8 缺失与不规则
条目页明说:数据质量与可用性参差不齐,部分病人有效记录很少甚至没有。
这类「有的病人有、有的病人几乎没有」的结构,比随机缺失更难处理。因为缺失可能与病人状况相关——病情重的测得少(不愿戴、常检查),病情轻的也测得少(早早出院)。中间那批数据最全。
做法:先做一张表,每人的测量次数、每次时长、佩戴占比。用这张表判断样本的实际可用规模,而不是用「五十八」这个名义数字。
2.9 佩戴占比是怎么算的
条目页说要求「佩戴时间超过总记录时长的八成」,但没有说怎么判定「佩戴」。
这是关键技术细节。常见判据有三类:基于加速度方差的静止检测、基于温度与皮肤接触的检测、基于光照的遮挡检测。
不同判据会给出不同的佩戴占比,进而影响哪些记录能入库。
对使用者来说,影响在于:数据里可能仍残留未佩戴的时段(比如设备放在床头柜上但被算作佩戴)。这些时段的信号是近乎恒定的小噪声,若当成「完全不动」参与分析,会拉低活动量估计。
建议:自己做一次静置检测——若某段连续若干分钟的三轴加速度方差低于阈值,标为「疑似未佩戴」,与真实的活动停止区分开。
§3 访问:受限访问,一道协议
3.1 门槛
注册 PhysioNet 账号,签署受限数据使用协议,说明研究目的。条目页的 Files 段明确写了「这是受限资源,访问文件须满足全部要求:签署数据使用协议」。
与凭证式相比,这一档不要求 CITI 培训证书,也不要求机构担保。与公开数据相比,多了协议签署。
3.2 处理的现实问题
即使签了协议,文件分发也可能受站点策略限制。若遇到页面显示不可用,属于分发层面而非许可层面的问题。
3.3 引用的正确写法
数据本身:DOI 10.13026/yrz5-5909,版本 1.0,2020 年 12 月 3 日发布。
条目页只列了三篇参考文献(急诊风险筛查、再入院预测综述、术后活动与住院时长的系统综述),没有列出配套的数据论文。这一点需要注意:这份数据缺少一篇正式的数据描述论文,方法细节只能靠条目页。
3.4 数据保护上的一个特别处理
条目页明确说:出于数据保护原因,不给确切的记录时间,只说明数据采集于 2016 年。
这个处理很克制,也很重要。它意味着无法把数据与季节、节假日、天气关联。做活动研究时,「住院期间是夏天还是冬天」这类变量不可得——而这在活动量研究里是有影响的(病房温度、病人衣着、日照时长)。
§4 局限:依从性、单腕、与看不见的时间
4.1 依从性是第一位的限制
可穿戴研究的老问题:愿意戴的人,与不愿意戴的人,不一样。
这份数据的入选条件要求病人同意佩戴,这本身就是一道筛选。同意的病人可能更配合、功能更好、对研究更信任。不同意的病人被系统排除,且排除的原因可能与结局相关。
条目页没有给拒绝率——有多少符合条件的人被邀请但拒绝了。这个数字若有,能让人判断选择偏倚的大小。
4.2 佩戴占比八成意味着什么
要求佩戴超过八成,是为了保证数据量。但反过来看,有两成时间是空的。
这两成不是随机分布的。病人洗澡时取下(条目页明说)、做检查时取下(磁共振、X 光)、觉得不舒服时取下。洗澡多在傍晚,检查多在白天,不舒服多在夜间。
所以缺口集中在特定时段。若某项分析依赖「全天活动总量」,缺口会直接造成偏差;若依赖「活动的时间模式」,缺口会破坏模式。
4.3 依从性随时间衰减
这是一个在多数可穿戴研究里被观察到、但很少被报告的现象:佩戴率随天数下降。
病人刚入院时配合度高,几天后觉得麻烦,开始间歇性不戴。若数据里记录了佩戴标记,可以验证这一点;若没有,只能从信号特征推断(长时间静置可能是不戴)。
这个衰减对「活动量与住院时长」的分析有直接影响:住院越久的人,后期数据越可能缺失,而恰恰是这批人的活动量最值得关注。
4.4 单腕的信息上限
§1.9 说过。这里补一层:腕部信号对「体位」的推断力弱。
条目页提到,研究目的之一是「测试用三轴腕戴传感器测量体位的附加价值」。但作者同时承认只用了一个传感器。这两句放在一起,说明体位测量是探索性的,不是这份数据能可靠支撑的。
若研究问题需要准确区分卧、坐、站、走,单腕不够。这需要至少加一个躯干传感器。
4.5 再入院只算本院
条目页明说:再入院状态只报告回到索引医院的情况,因此可能低估再入院率。
这一条的影响比看起来大。病人出院后若去了另一家医院,这份数据里记为「未再入院」。而跨院就医在现实中并不少见——尤其是出院后回老家、或者急诊去了更近的医院。
低估的方向是单向的,所以任何基于这个标签的「再入院率」都会偏低,「预测模型」的阳性样本会偏少。
4.6 十天上限与住院时长的关系
监测上限十天。若某位病人住院二十天,只有前十天有数据。
而住院时长本身是这份数据的核心结局之一。于是出现一个循环:住院越长的人,数据覆盖的比例越低;而住院越长,往往意味着病情越复杂、活动量越低。
这个循环会让「活动量低」与「住院长」的关联被夸大——因为长住院者的活动量只被观察了最差的那一段。
4.7 时间信息被刻意模糊
§3.4 说过。这里说它的具体后果。
无法分析季节性。无法分析星期效应(周末病房活动少、探视多)。无法分析节假日。无法把活动与天气关联。
这些在活动研究里都不是小事。特别是星期效应——住院病人的康复活动高度依赖治疗安排,而治疗安排在周末会变。
4.8 环境信号测的是腕部微环境
§2.5 说过。补一句:这意味着不能用来做病室环境暴露研究。
若研究问题是「病房温度对活动量的影响」,这份数据答不了——它测的是手腕附近的温度,受衣袖、被褥、体位影响远大于室温。
4.9 缺少数据论文
条目页列的三篇参考文献都是背景文献,没有一份是这份数据的方法学描述。
这意味着很多细节只能靠条目页文字与自行核对:传感器型号与量程、佩戴判定算法、预处理做了什么、活动识别的验证方式。
对一个要发表方法学论文的使用者,这构成额外工作量。
4.10 数据质量清单(DAIMS)
按二十四个常见维度逐项判定。
判为「是」的十二项:有明确许可与协议;有 DOI 与版本;有引用格式;有采集设备与采样率说明;有伦理批准编号(507/2016BO1);有入选与排除标准;有目录结构与文件说明;有字段列表;有已知局限的主动披露(数据质量参差、再入院只算本院、单传感器);有资助与利益冲突声明;采集年份明确;来源机构可核实。
判为「部分」的九项:加速度与角速度的单位与量程未给;佩戴判定算法未描述;预处理做了什么未说明;光照单位(焦耳)存疑;JSON 字段未逐一列出,且文件名标注为精简版;样本的年龄与性别分布未在条目页给出;拒绝率未给;活动识别的验证方式未描述;无配套数据论文。
判为「否」的三项:无派生活动量(这是设计选择,但确实构成使用门槛);无跨院再入院信息;无确切采集日期。
§5 它能用来做什么
5.1 开发住院场景的活动识别算法
这是这份数据的首要用途,也是作者明说的目的。
住院场景与日常场景的差别在哪?动作更慢、更碎、更不对称。走路可能只有三米,中间停两次;起身要扶床栏;躺下的过程分几个阶段。
通用算法在这些动作上会失效。这份数据提供了真实信号,让人可以针对这个场景设计算法。
具体做法:先人工标注一小段(看波形标出「走」「坐」「卧」「站」),再用监督学习训练分类器,最后在全量上推断。
5.2 比较不同活动量定义对结局预测的影响
因为数据不给活动量,使用者必须自己定义。这反而成了研究机会:同一个结局,用不同的活动量定义,预测性能差多少?
可以比较的定义至少有五种:总加速度积分、超过阈值的时长、活动片段数、活动片段平均时长、活动的昼夜分布。
这个比较本身有方法学价值——它回答「活动量该怎么量化」这个尚无共识的问题。
5.3 研究活动与化验值的同期关系
因为临床数据是逐次测量的,可以把「今天的 C 反应蛋白」与「今天的活动量」放在一起看。
这类分析在临床上是有意义的:感染加重时活动下降,好转时活动上升。若能定量刻画这个关系,活动监测就有了临床用途。
要注意的是样本量——五十八人、每人几次,能做的分析有限。
5.4 研究体位与气压的关系
气压可以用来估楼层。若病人在不同楼层间移动(去检查、去康复室),气压会有台阶状变化。
把它与加速度合起来,能推断「外出次数」——一条被低估的指标,因为它反映的是病人被带去检查、去做康复的频次,间接反映病情复杂度。
5.5 用于可穿戴信号处理的教学
五十八人、结构清晰、信号类型丰富(惯性加环境)、有临床标签。适合作为「可穿戴信号分析」课程的数据集。
学生可以在一个数据集上走完整链条:读信号、做特征、训分类器、关联临床结局。
5.6 作为其他可穿戴数据的对照
若手上有社区老人的活动数据,可以把这份当「住院状态」的对照,看活动模式如何因住院而改变。
前提是对齐三件事:设备佩戴位置、采样率、活动量的定义。
5.7 不能用来做什么
不能用来训练通用的步数算法(住院场景与日常场景差异太大)。
不能用来做再入院的风险预测模型(样本太小,且标签低估)。
不能用来研究体位(单腕不足)。
不能用来做环境暴露研究(测的是腕部微环境)。
不能用来推断人群活动水平(样本经过筛选)。
5.8 用之前必须做的五件事
第一,扫目录。 统计每人的测量次数与每次的时长,画出分布。这个分布决定了实际可用样本。
第二,反推单位。 用静置段确认加速度的单位与量程,用静止段确认角速度。
第三,核实光照单位。 焦耳这个标注必须与数值量级对照,判断是笔误还是累积量。
第四,做静置检测。 自己标出疑似未佩戴的时段,与真实活动停止分开。
第五,对齐时间。 把 time 的毫秒偏移与 measurementInfo 里的日期合起来,建立住院日历。
5.9 一个被低估的用途:检验活动量的定义之争
文献里对「住院病人活动量该怎么算」没有共识。有人用步数,有人用活动分钟,有人用加速度积分。
这些定义在同一批数据上会给出不同的结论,但很少有人在同一批数据上把它们全跑一遍。原因很简单:多数数据集只给一种算好的量。
这份数据给了原始信号,所以可以一次算五种、十种,看排序是否一致。若五种定义给出的病人排序高度一致,说明「活动量」这个概念是稳健的;若不一致,说明分歧不是技术细节,而是概念本身有歧义。
这个实验的价值超出这份数据本身——它能把一场定义之争变成可检验的问题。
§6 常见误读
6.1 误读一:把五十八当样本量
五十八是人数,不是测量次数。每人可能有多次测量,每次是不同日期的观察。
做「活动与结局」的分析,有效样本是五十八(因为结局是病人级的)。做「活动与化验」的分析,有效样本是测量次数(但同人多次测量不独立)。
症状:报告「n = 一百二十次测量」然后算 p 值。
6.2 误读二:把加速度模长当活动量
一个常见做法:算三轴加速度的模长,减去重力分量,得到「动态加速度」,再对时间积分当作活动量。
这个做法在腕部有严重问题:手臂的任意挥动都会产生大的动态加速度,包括吃饭、抓痒、翻身挥手。这些动作的能量消耗很小,但积分值很大。
后果:卧床但清醒、手臂乱动的病人,活动量可能高于安静走路的病人。
改进:先分类动作类型,只对「位移性动作」积分。
6.3 误读三:把未佩戴当静止
设备放在床头柜上时,加速度近乎恒定(只有微小的热噪声)。若当成「病人完全不动」,会把大量时间算作极低活动。
症状:某些病人的日间活动量出现长时间的平台期,且平台期的信号方差极小。
6.4 陷阱一:忽略双采样率对齐
直接把一百赫兹的惯性数据与一赫兹的环境数据按索引相减,会得到错位的结果。
正确做法:先在一百赫兹上算逐秒特征,再与一秒一格的环境数据合并。
6.5 陷阱二:用住院时长做特征又做标签
住院时长既是结局,也可能是筛选条件的一部分(要求预计至少四十八小时)。
若模型用「已住院天数」做特征预测「总住院时长」,会得到虚高的性能——因为在观察时点,已住天数与总时长高度相关。
6.6 陷阱三:把再入院的缺失当阴性
只统计本院,跨院再入院记为未再入院。这会让阳性样本偏少。
做法:在论文里明确写「再入院定义为回到索引医院」,不要把结论推广到「所有再入院」。
6.7 陷阱四:忽略佩戴率的时间衰减
§4.3 说过。若不做检查,会以为数据是均匀覆盖的。
做法:按住院日画佩戴率曲线。若曲线下降,后面的分析要加权或截断。
6.8 陷阱五:把环境信号当病室环境
§4.8 说过。腕部的温湿度受衣袖与被褥影响极大。
6.9 活动量与再入院相关,不等于能预测再入院
这是最需要强调的一条。
在五十八人里,很可能发现「活动量低的病人再入院率更高」。这个关联是真的,但它的用途有限。
原因有三。第一,样本太小,任何关联的置信区间都很宽。第二,再入院标签低估(只算本院)。第三,也是最关键的:关联不等于可干预。知道活动量低的人预后差,不等于提高活动量就能改善预后——后者需要干预试验。
把观察性关联包装成「预测模型」,是这类数据最常见的误用。
§7 与相邻数据的定位
7.1 与社区可穿戴数据的差别
社区老人活动数据(比如英国生物样本库的加速度子集)规模大、随访长、佩戴位置多为腰部。
这份数据的优势是临床标签密集(每次测量都有化验),劣势是规模小、随访短。
两者的用途不同:前者适合做人群流行病学,后者适合做机制探索与算法开发。
7.2 与 ICU 活动数据的差别
ICU 的活动数据关注的是早期活动、床上被动运动、呼吸机相关性肌无力。
这份数据是普通内科病房,病人能走三米。两者的人群与场景完全不同,算法不能通用。
7.3 与术后活动数据的差别
外科病人的活动恢复有明确的时间线(术后第一天、第二天……),且与手术类型强相关。
这份数据是内科急性入院,时间线不明确(入院时病情已在进展中)。所以它无法回答「术后第几天能走」这类问题。
7.4 在可穿戴公开数据里的位置
PhysioNet 上的可穿戴数据多数是生理信号(心电、光电容积脉搏波、睡眠),纯惯性信号的较少。
这份数据的独特性在于:它是院内场景、有临床标签、且给原始信号。这三点组合在一起,在公开数据里不常见。
7.5 利益冲突这件事
条目页写明:一位作者是博世医疗解决方案公司的雇员,该公司提供了传感器与技术支持。同时声明资助方未参与设计、采集、分析、解释、写作与发表决定。
这个声明的措辞是标准的,但读结论时要记得这层关系——尤其是在评估「这套传感器平台的表现」这类结论时。
7.6 适合谁用
做可穿戴活动识别的方法研究者、做院内活动与结局关联的临床研究者、需要一份真实惯性数据做教学的人。
不适合:需要大样本做预测模型的人、需要准确体位信息的人、需要跨院随访数据的人。
§8 怎么用:从信号到活动量
8.1 三条技术路线
路线一,手工特征加分类器。 从滑动窗口算时域与频域特征(均值、方差、过零率、频带能量、熵),接随机森林或梯度提升。
路线二,卷积网络端到端。 把三轴加速度的窗口当一维图像,直接训卷积网络。
路线三,无监督聚类。 不做标注,直接对窗口特征聚类,看能否自然分出「静止」「轻度活动」「行走」几类。
三条路线各有适用场景。样本只有五十八人,路线一最稳;路线三可以先用来看数据长什么样。
8.2 窗口怎么选
活动识别的标准窗口是一到两秒(识别单个动作)或十到三十秒(识别活动类型)。
住院场景建议用较长的窗口。理由:动作慢、碎片化,短窗口里可能一个完整动作都没有。
建议:先用两秒窗做初探,再用十秒窗做活动类型分类,最后用一分钟窗做活动量汇总。三层窗可以并存,各自服务不同问题。
8.3 特征怎么选
按四类组织。
时域:均值、标准差、峰峰值、均方根、偏度、峰度、过零率、相关系数(轴间)。
频域:各轴的主频、频带能量(0.5–3 赫兹对应步行、3–8 赫兹对应快动作)、谱熵。
时频:短时傅里叶变换后的能量分布,或者小波分解的各层能量。
跨通道:加速度与角速度的互相关、模长的自相关(周期性动作会呈现明显峰)。
对角速度这一路要特别重视——它是区分「手臂摆动」与「身体移动」的关键。走路时手腕的角速度有明显的周期性,而躺着挥手则没有稳定的周期。
8.4 基线与它的意义
必须给基线,否则无法判断模型有没有学到东西。
基线一,静止检测。 只区分「动」与「不动」,用方差阈值。这是最粗的基线。
基线二,模长阈值。 算动态加速度模长,超过阈值算活动。
基线三,多数类。 若绝大部分时间是不动,全预测为不动就有很高的准确率。
三个基线里,第三个最重要——它揭示了类别不平衡的程度。住院病人一天里真正在走的时间可能只有几十分钟,占百分之几。
8.5 过拟合的典型表现
五十八人,若按窗口随机划分,训练集与测试集里会有同一病人的相邻窗口。模型只需记住这个人的信号特征,就能在测试集上表现很好。
典型表现:随机划分的准确率零点九以上,按病人划分掉到零点六。
正确做法:按病人划分,或者按「病人加日期」划分。
8.6 从活动量到结局的具体流程
若目标是研究活动与结局,按这个顺序。
一,对每次测量,算出逐分钟的活动强度序列。
二,汇总成日级指标:总活动时长、活动片段数、平均片段长度、活动的时间分布(上午、下午、夜间)。
三,把日级指标与当日的化验、生命体征合并。
四,按病人聚合,得到每人一个概况,再与住院时长、再入院关联。
五,报告时给出每人的散点,不只是一个相关系数。
8.7 五条失败模式
失败一,未区分未佩戴与静止。 见 §6.3。
失败二,用模长积分当活动量。 见 §6.2。
失败三,按窗口随机划分。 见 §8.5。
失败四,忽略佩戴率的时间衰减。 见 §6.7。
失败五,把住院时长当特征又当标签。 见 §6.5。
8.8 结果该怎么读
三个问题。
一,活动量的定义对结论影响多大? 换一种定义,结论是否还成立?若不成立,说明结论依赖于定义,不是稳健发现。
二,个体间差异有多大? 五十八人的活动量分布若很宽,任何「平均活动量」都没有代表性。
三,与化验的同期关系是否在个体内也成立? 组间相关可能由混杂造成;个体内的同期变化更能说明问题。
8.9 与临床判断的比较
临床上,医生判断病人「能不能出院」,靠的是查房时看病人状态、问活动情况。
这份数据能否提供增量信息?这是它最有价值的应用方向,也是最难验证的。
验证方式:让医生在不知道传感器数据的情况下做出院判断,再比较「医生判断」与「基于活动量的模型」的一致性。若两者高度一致,说明传感器没有增量价值;若不一致且模型更准,才有意义。
这份数据本身不支持这样的验证(没有医生的判断记录),只能作为未来研究的设计参考。
§9 三条技术路线的细节
9.1 手工特征加树模型
最实用的一条。特征可解释,模型训练快,在小样本上不容易过拟合。
具体配置建议:窗口两秒、重叠一半;每窗算二十到三十个特征;用随机森林(几百棵树,深度限制);按病人做交叉验证。
优点:能输出特征重要性,可以解释「模型靠什么判断」。
缺点:特征要手工设计,可能有遗漏。
9.2 卷积网络
把三轴加速度排成三行,时间作列,当成一维图像处理。
在小样本上的问题:参数多、易过拟合。缓解办法是加深数据增强(时间抖动、幅度缩放、轴旋转)、用较小的网络、早停。
优点:无需手工特征,能自动学出频域与时域的模式。
缺点:可解释性差,训练不稳定。
9.3 无监督与自监督
先不标注,用聚类或自编码器看数据的自然结构。
聚类能回答一个基础问题:这份数据里的活动,到底有几种典型形态?若聚类出四类,可能对应「静止」「轻微动作」「坐姿活动」「行走」。
自监督(比如掩码重建)能学出表示,再用少量标注微调。这在标注成本高的场景里有价值。
9.4 一条被忽略的路线:物理模型驱动
既不想纯手工,也不想纯黑箱,可以从物理模型出发。
思路:人体的加速度信号是重力与运动加速度的叠加。若能估出重力方向(低频成分),就能把信号分解为「姿态」(重力方向)与「运动」(残差)。
姿态可以给出体位(卧、坐、站的粗略判断,虽然单腕精度有限),运动可以给出活动强度。两者合起来,比单纯的模长积分更有物理意义。
这条路线的好处是可解释、不需要大量标注,且能直接给出「体位」这个临床关心的量。
9.5 选择建议
要快速出结果且要解释性,走 §9.1。有足够数据与算力,走 §9.2。想先摸清数据结构,走 §9.3。想要物理意义,走 §9.4。
§10 术语
加速度计:测量比力(重力加运动加速度)的传感器,三轴可给出空间中的加速度向量。
陀螺仪:测量角速度的传感器,三轴可给出绕三个轴的旋转速率。
惯性测量单元:加速度计与陀螺仪的组合。
活动识别:从传感器信号推断人正在做什么动作或活动类型。
佩戴时间占比:设备被认为戴在身上的时长占总记录时长的比例。
Charlson 共病指数:根据合并症种类与严重程度加权求和的评分,用于量化整体疾病负担。
IPAQ:国际体力活动问卷,用于自报活动量的标准化工具。
计时起立行走测试:让受试者从椅子起身、走三米、转身、返回坐下,计时间,评估 mobility。
容量负荷过重:体内液体过多,常见于心衰与慢性肾病,表现为水肿、呼吸困难。
再入院:出院后一定期限内再次住院,常用三十天为窗口。
动态加速度:从原始加速度中去除重力分量后剩下的部分,反映运动。
谱熵:功率谱的熵,衡量信号频率分布的复杂度。
§11 事实清单
11.1 核心事实
| 项 | 值 |
|---|---|
| 标题 | In-hospital physical activity measured with a new Bosch accelerometer sensor system |
| 发布 | PhysioNet,2020 年 12 月 3 日,版本 1.0 |
| DOI | 10.13026/yrz5-5909 |
| 采集地 | 德国斯图加特罗伯特·博世医院(1100 床转诊中心) |
| 病区 | 三个普通内科病区(共 100 床)+ 一个 30 床肿瘤病区 |
| 采集年份 | 2016 年(出于数据保护不给确切日期) |
| 样本 | 58 位病人,编号 R401–R458 |
| 入选 | ≥18 岁;能走 3 米(可借辅具);无佩戴禁忌;四类急性内科情况之一;预计住院 ≥48 小时 |
| 排除 | 截肢;仅能轮椅活动;卧床 |
| 监测上限 | 10 天 |
| 入库要求 | 单次记录 ≥8 小时;佩戴时间占比 >80% |
| 惯性采样率 | 100 赫兹 |
| 环境采样率 | 1 赫兹 |
| 信号 | 三轴加速度、三轴角速度、湿度、光照、气压、温度 |
| 派生指标 | 无(只有原始信号) |
| 临床数据 | 病人级 JSON + 测量级 JSON |
| 伦理 | 图宾根大学医学院与大学医院伦理委员会 507/2016BO1 |
| 许可 | PhysioNet Restricted Health Data License 1.5.0 |
| 资助 | 罗伯特·博世基金会与博世医疗解决方案公司 |
| 利益冲突 | 一位作者为博世医疗解决方案公司雇员 |
11.2 六个可立即验证的疑问
一,加速度的单位与量程是什么?用静置段的模长反推。
二,光照为什么用焦耳?是笔误还是累积量?用数值量级判断。
三,佩戴占比是怎么判定的?条目页未描述算法。这决定了数据里残留多少未佩戴时段。
四,每人的实际测量次数分布如何?条目页只说「有些病人测了多次」。
五,年龄与性别分布如何?条目页未给,需从 JSON 里统计。
六,预处理到底做了什么?条目页说「做了些预处理以应对传感器与技术障碍」,但没说什么。
11.3 一个病人的读取流程
import json, pandas as pd, os
def load_patient(root, pid):
d = os.path.join(root, pid, 'export')
with open(os.path.join(d, 'examineeInfo_publicReduced.json')) as f:
info = json.load(f)
ms = sorted(x for x in os.listdir(d) if x.startswith('measurement_'))
out = []
for m in ms:
sd = pd.read_csv(os.path.join(d, m, 'sensorData.csv'))
with open(os.path.join(d, m, 'measurementInfo_publicReduced.json')) as f:
mi = json.load(f)
out.append(dict(name=m, signal=sd, info=mi))
return info, out
注意 measurement_ 目录的排序:若编号超过九,字符串排序会把 measurement_10 排在 measurement_2 之前。要按编号数值排。
11.4 附录 A:反推单位与检测静置
import numpy as np
def infer_unit(sig):
acc = sig[['acc_1','acc_2','acc_3']].values
mag = np.linalg.norm(acc, axis=1)
lo = np.percentile(mag, 5)
print(f"模长 5% 分位 = {lo:.3f} -> 单位应为 {'g' if lo < 2 else 'm/s^2'}")
print(f"模长最大值 = {mag.max():.2f}, 99.9% 分位 = {np.percentile(mag,99.9):.2f}")
def still_mask(sig, win=100*60, thr=1e-3):
"""按一分钟窗检测方差极低的时段,返回布尔掩码(True = 疑似未佩戴/静止)。"""
acc = sig[['acc_1','acc_2','acc_3']].values
n = len(acc)//win
out = np.zeros(n, dtype=bool)
for i in range(n):
seg = acc[i*win:(i+1)*win]
out[i] = seg.var(axis=0).mean() < thr
return out
第一段回答「单位是什么」,第二段标出「长时间几乎不动」的时段。后者要人工看几段确认——可能是未佩戴,也可能是深度睡眠。
11.5 附录 B:活动量的几种定义
def activity_enmo(acc, fs=100):
"""ENMO:欧几里得范数减一,负值截零。单位需为 g。"""
m = np.linalg.norm(acc, axis=1) - 1.0
return np.clip(m, 0, None)
def activity_counts(acc, fs=100):
"""把动态加速度按秒求绝对值和,近似「活动计数」。"""
dyn = acc - acc.mean(axis=0, keepdims=True)
n = len(dyn)//fs
return np.abs(dyn[:n*fs]).reshape(n, fs, 3).sum(axis=(1,2))
def activity_bouts(intensity, thr, min_len=10):
"""按阈值切出活动片段,返回片段长度列表(单位:秒)。"""
b = intensity > thr
runs, cur = [], 0
for x in b:
if x: cur += 1
elif cur:
if cur >= min_len: runs.append(cur)
cur = 0
if cur >= min_len: runs.append(cur)
return runs
三种定义回答三个不同问题:ENMO 给强度、counts 给总量、bouts 给碎片化程度。三者对同一批数据会给出不同的排序——这正是 §5.2 想研究的东西。
11.6 附录 C:证据链
- 数据集条目页:
https://physionet.org/content/hospital-activity-bosch/1.0/,含 Abstract、Background、Methods(Clinical assessment 与 Accelerometry 两小节)、Data Description、Usage Notes(含 Limitations、Example usage)、Acknowledgements、Conflicts of Interest、References - 样本与入排标准:条目页 Methods 段,四类诊断与三条排除逐条给出
- 设备与采样率:条目页 Methods 段 Accelerometry 小节,六类信号、100 赫兹与 1 赫兹、入库两条门槛
- 目录结构:条目页 Data Description 段,给出目录树与压缩包切分规则
- 字段含义:条目页 Files 段,逐列解释
- 伦理与资助:条目页 Methods 段编号 507/2016BO1;Acknowledgements 段资助来源;Conflicts of Interest 段照录
- 文件清单:条目页 Files 段显示为受限资源,本页未取得实际文件清单,故不含按文件核对的统计
凡属分析性内容(§2.7 的体量估算、§2.5 的单位疑点、§4.10 的判定、§8 与 §9 的方案、§11.3 至 §11.5 的代码)为基于条目页描述与领域常识的推演,非官方结论,代码亦未在真实数据上运行验证。凡标注「条目页」的均为该页原文表述。
编辑说明
本页数值来自 PhysioNet 条目页(版本 1.0),未做数据下载与实测。四处需提示:一是体量为量级推测;二是加速度单位、量程、光照单位三处疑点为编辑判断,条目页未给;三是佩戴判定算法与预处理内容条目页未描述,相关分析均为推断;四是附录代码仅为示范,未在真实数据上运行。资助与利益冲突两节照录条目页原文,不含评价。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- hd-semg — 共享标签:生理信号 / 步态与运动 / 电子健康记录 / 评测基准
- kinecal — 共享标签:生理信号 / 可穿戴传感 / 步态与运动 / 评测基准
- accelerometry-walk-climb-drive — 共享标签:生理信号 / 可穿戴传感 / 步态与运动 / 评测基准
- grabmyo — 共享标签:生理信号 / 可穿戴传感 / 步态与运动 / 评测基准
- tpehgt — 共享标签:生理信号 / 电子健康记录 / 评测基准
- rehab-motion-capture — 共享标签:生理信号 / 可穿戴传感 / 步态与运动 / 评测基准
- scientisst-move — 共享标签:生理信号 / 可穿戴传感 / 步态与运动 / 评测基准
- sisfall — 共享标签:生理信号 / 可穿戴传感 / 步态与运动 / 评测基准
- wisdm — 共享标签:生理信号 / 可穿戴传感 / 步态与运动 / 评测基准
- ppg-dalia — 共享标签:生理信号 / 可穿戴传感 / 步态与运动
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

