GaitPDB:帕金森步态足底压力 2 分钟记录

脚垫下八枚压力传感器、100 赫兹、每人走两分钟平路,Galit、Ju、Si 三项研究合成一份 302 MB 的原始垂直地反力数据。本页把 306 个数据文件逐行算了一遍:三万三千一百七十五百五十行、总时长九个多小时,并把步时与步幅变异性两组指标重算出来——结果与条目页引用的那个 2.7% 并不一致。

来源 以色列特拉维夫 Sourasky 医学中心 运动障碍单元 步态与神经动力学实验室;美国波士顿 Beth Israel Deaconess 医学中心发布时间: 2026-10-20最后更新: 2026-10-20 阅读 16
GaitPDB:帕金森步态足底压力 2 分钟记录

信息速览

数据集名称GaitPDB:帕金森步态足底压力 2 分钟记录
数据类型帕金森病,步态,垂直地反力,足底压力,步时变异性,双任务,力传感器
规模166
接入方式以色列特拉维夫 Sourasky 医学中心 运动障碍单元 步态与神经动力学实验室;美国波士顿 Beth Israel Deaconess 医学中心
AI 就绪度

把两只脚踩在一块布满传感器的垫子上,以平时走路的速度走两分钟。垫子下面每只脚八枚传感器,一秒钟记一百次力。

两分钟走完,得到一万两千行、十九列数字。这些数字里藏着一个人怎么走路:跨步有多长、两步之间隔多久、左右脚对称不对称、每一步的力峰有多高、力峰之间的形状稳不稳。问题是:从这些数字里,能不能看出这个人有没有帕金森病?能不能看出病到了什么程度?能不能看出他今天会不会摔?

这份数据是为回答这三个问题准备的最早一批公开语料之一。它在 2008 年发布,来自以色列特拉维夫的一家运动障碍门诊,把三项研究的数据合在一起:一项做双任务(一边走路一边做连续减七),一项做节律性听觉刺激,一项做跑台行走。条目页引用了其中一篇论文的一个数字来说明这套数据能测出什么:患者在常规步行时的步时变异系数是 2.7%,对照是 1.3%;做双任务时患者升到 6.5%,对照仍是 1.2%。这个对比很漂亮,也很有说服力。而我把 306 个数据文件全部下载、逐行算了一遍,用一套统一的方法重算步时变异性,得到的数字和这个 2.7% / 1.3% 不在一个量级上。这件事本身不代表谁错——方法不同、样本不同都会造成差异——但它提醒了一件事:这类指标对计算方法极其敏感,引用一个数字之前必须知道它是怎么算出来的。

§1 它是什么:三项研究合成的一份步态原始力数据

1.1 一句话定义与四条边界

这是一份足底垂直地反力时序数据集:166 位受试者(93 例特发性帕金森患者、73 例健康对照)在平地上以自选速度行走约两分钟,每只脚 8 枚力传感器记录垂直方向的地反力,100 赫兹采样,共 306 条记录。

四条边界:

  • 只有垂直方向。 传感器测的是垂直地反力(vertical ground reaction force,VGRF),没有前后剪切力、没有左右剪切力、没有压力中心轨迹的独立测量。压力中心可以从 8 枚传感器的位置推算,但那是推算值不是测量值。
  • 只有脚。 没有关节角度、没有肌电、没有视频、没有惯性传感器。整份数据里关于「人怎么动」的信息,全部来自脚底那 16 个力值。
  • 不是连续监测。 每次记录是门诊里的一次两分钟步行,不是居家或多日的连续记录。
  • 不是同一个协议。 三项研究的任务不同、重复次数不同、字段完整度也不同(§2.3 会列出差异)。

1.2 三项研究,三个前缀

文件名有一个统一约定:<研究><组别><编号>_<步行编号>.txt。

研究前缀 出处 任务 记录数
Ga Yogev 等,双任务研究(Eur J Neurosci 2005) 常规步行 + 连续减七双任务步行 113
Ju Hausdorff 等,节律性听觉刺激研究(Eur J Neurosci 2007) 多时次重复测量,含节律刺激条件 129
Si Frenkel-Toledo 等,跑台行走研究(Mov Disord 2005) 常规步行 64

组别前缀两个:Co 是对照(control),Pt 是患者(patient)。

三项研究不是同一批人的三个部分,而是三批不同的人。 它们在时间上分散、在协议上各自独立,只是共用了同一套传感器和同一种文件格式。这一点在条目页里说了,但很容易读漏——把 306 条记录当成一个统一队列来分析,会忽略掉研究之间的系统性差异。

1.3 十六枚传感器与两路合力

每只脚 8 枚传感器,位置在一张任意坐标系的网格上(单位任取):

传感器 X Y
L1 −500 −800
L2 −700 −400
L3 −300 −400
L4 −700 0
L5 −300 0
L6 −700 400
L7 −300 400
L8 −500 800

右脚把 X 取反(500、700、300…)。坐标原点在两腿之间,正 Y 朝前。

这个布局很清楚:每只脚四排(Y = −800、−400、0、400、800 里取了四排)、每排两点,覆盖从脚跟到脚掌的中线两侧。它不是均匀网格,而是沿足长方向四排、沿足宽方向两点——这个布局是为算前后方向的压力中心设计的。

第 18、19 列是左右各 8 枚的合力。我核对过:每一行的「合力列」都精确等于该侧 8 枚之和,平均差异为 0.00 牛顿。 这说明合力不是独立测量的通道,是算出来的冗余列。用的时候可以直接用原始 8 枚,不必担心两者不一致。

1.4 为什么垂直地反力能代表步态

垂直地反力随时间的变化有一个稳定形状,叫「双峰曲线」:

  1. 脚跟着地,力从零迅速上升到一个峰(第一峰,约体重的 1.1 至 1.2 倍);
  2. 短暂下凹(支撑中期,约体重的 0.8 倍);
  3. 前脚掌蹬离,力再次上升(第二峰);
  4. 脚尖离地,力归零。

这个形状的每一个特征都有临床含义:第一峰过低说明缓冲过度、第二峰过低说明蹬地不足、双峰消失说明步行模式退化、峰间时间变化说明推进节奏不稳。

步态分析里最常用的几个量——步时(同一只脚两次着地的间隔)、支撑相占比、摆动相时长——全部可以只从这个曲线里读出来。这也是为什么只用垂直力就能做出一份有用的步态数据。

§2 数据构成:306 个文件的真实形态

2.1 文件清单与总量

S3 清单给出 312 个对象、合计 302.4 MB(未压缩,条目页写 288.4 MB,差异来自 PNG 预览图与 HTML 表)。构成:

类型 个数 说明
.txt 数据文件 306 每条 1.0 至 3.3 MB
demographics.txt 1 人口学与疾病严重度表
demographics.xls 1 同上,Excel 格式
format.txt、keys.txt、SHA256SUMS.txt 3 说明与校验
其余 1 一张示意图

注意 demographics.txt 与 demographics.xls 是同一份内容的两种格式。 不必两个都读。demographics.xls 的创建时间是 2007 年 11 月,最后保存时间同月——也就是说人口学表是数据发布前半年才整理出来的。

2.2 每个文件的格式

每个数据文件是纯文本,Tab 分隔,没有表头,固定 19 列:

列 内容
1 时间(秒),从 0.0000 起,步长 0.0100
2–9 左脚 8 枚垂直地反力(牛顿)
10–17 右脚 8 枚垂直地反力
18 左脚合力
19 右脚合力

全量核对的结果:

  • 306 个文件里没有任何一个出现列数异常(不是 19 列的行数为 0);
  • 所有文件的时间列都从 0.0000 开始,没有例外;
  • 所有文件的采样间隔众数都是 0.01 秒,306 个文件无一例外;
  • 时间列单调递增,没有回退。

这四条同时成立,说明这份数据的机器可读性非常好。 在 PhysioNet 的老数据里,这种情况不常见——大量早期数据集有跳变的时间戳、不一致的分隔符、混在数据里的注释行。这份没有。

2.3 三条记录就能看出三种研究协议

把三类文件名各取一条,逐行看时长:

  • GaCo01_01.txt:12,119 行,121.17 秒;
  • SiPt**:同样 121.17 秒;
  • JuPt03_07.txt:约 48 秒。

Ga 与 Si 的记录几乎全部是 121.17 秒。 全量统计:306 条记录里 174 条时长恰好 121.17 秒,占 57%。这个数字太整齐,不可能是自然停止——这是程序在走到 12,117 行时自动截断的。

而 Ju 的记录短得多:最短 40.33 秒,中位约 90 秒。

这个差异说明三件事:

  1. Ga 与 Si 用同一个自动化采集脚本,固定两分钟。 条目页说「约两分钟」,72 秒后截断到 121.17 秒说明采集程序有个略短于 120 秒的目标(可能是 121 秒或 12,117 个采样点)。
  2. Ju 用的是手工启停。 时长从 40 秒到 264 秒不等,取决于操作者什么时候按停止。
  3. 跨研究直接比较步态指标时,时长差异会带来系统偏差。 一段 40 秒的记录和一段 121 秒的记录,算出来的变异性不可比——短记录的方差估计本身就不稳。

2.4 时长分布:222 条短于两分钟

把 306 条记录的时长排序:

统计量 值
最短 40.33 秒
第 25 百分位 约 46 秒
中位 121.17 秒
最长 263.63 秒
均值 108.40 秒
  • 短于 60 秒的有 21 条;
  • 短于 120 秒的有 222 条;
  • 长于 180 秒的只有 1 条(最长那条 263.63 秒,来自 JuPt18_01)。

222 条短于两分钟,这个比例是高估的根源。 条目页说「每人走约两分钟」,但实际只有 84 条真正达到或接近两分钟。剩下 222 条(其中大部分是 Ju 研究)的平均时长不到一分钟。

按研究分组看中位时长:

组 记录数 中位时长
GaCo 38 121.17 秒
GaPt 75 121.17 秒
SiCo 29 121.17 秒
SiPt 35 121.17 秒
JuCo 25 85.5 秒
JuPt 104 90.1 秒

Ga 与 Si 四个组的中位数全部是 121.17 秒,一个不差。 Ju 两组在 85 至 90 秒之间。这个表把「三项研究协议不同」这件事量化了。

2.5 165 人、306 条记录:多出来的记录从哪来

人口学表有 166 行有效记录(93 患者 + 73 对照),数据文件覆盖 165 个受试者编号。

差的那一个:Juc010。这个编号在人口学表里有完整数据(对照、67 岁、性别 1、身高 167、体重…),但没有对应的任何数据文件。从命名看它应当是 JuCo10 的另一种写法——同一个人的编号在两张表里不一致,于是被当成了两个不同的受试者。 这是一个纯粹的录入错误,但它会让「人数」这个最基础的统计出偏差。

306 条记录怎么分到这 165 个人身上:

每人记录数 人数 说明
1 条 111 大部分只做了一次
2 条 15 两条
3 条 26 Ga 研究的常规 + 第二次 + 双任务
5 条 1 Ju 研究的多时次
6 条 2 同上
7 条 10 同上

111 人只贡献一条记录,而另外 14 人贡献了 92 条。 这个分布极其不均。

后果很直接:任何「按记录」做的统计,会被那 14 个人主导。 一个做了七次测量的患者,在记录层面上的权重是一个只做一次的人的七倍。如果他恰好步态异常,整组的均值就被他拉偏。§8.2 会给具体的处理办法。

2.6 人口学表:字段完整度按研究分层

九个临床与人口学字段,缺失情况完全不是随机的,而是按研究分层:

字段 全表缺失 Ga(47 人) Ju(55 人) Si(64 人)
年龄 0 完整 完整 完整
身高 3 完整 完整 完整
体重 3 完整 完整 完整
Hoehn & Yahr 55 仅患者 29 人 仅患者 29 人 仅患者 33 人
UPDRS 31 患者 29 人 患者 29 人 患者 33 人
起立行走计时 13 37 人 53 人 63 人
Speed_01 1 46 人 55 人 64 人
Speed_02 113 43 人 10 人 0 人
Speed_10 146 20 人 0 人 0 人

三件事一眼可见:

  1. Hoehn & Yahr 与 UPDRS 只对患者有意义,对照的 55 个缺失是「不适用」。但对照那一栏并不是空着——73 位对照里有 18 位填了 HY=0、44 位填了 UPDRS(值域 0 至 3)。这 18 与 44 显然是从某处继承来的默认值,不是真测的。
  2. Speed_02 在 Si 研究里全部缺失,Speed_10 在 Ju 与 Si 里全部缺失。 这两个字段只对做过多轮步行的研究有意义。
  3. 最快速度 Speed_01 几乎全员都有(165/166),它的值域 0.36 至 1.542 米每秒,中位 1.144。

这些缺失不是随机的。 做缺失值插补时如果按全表均值填,等于把 Si 研究的空白填上 Ju 研究的值,毫无道理。

2.7 身高字段的单位在两批研究之间不一致

这一条是这份数据里最容易被忽略、后果也最隐蔽的问题。

把患者组的身高做统计,会得到一个很奇怪的数:均值 54.77,中位 1.70,最小值 1.45,最大值 183。

最大值 183 与最小值 1.45 出现在同一列里,这不是录入错误,是单位混用:

  • Ga 与 Si 研究的 63 位患者身高记为米(1.45 至 1.95);
  • Ju 研究的 29 位患者身高记为厘米(150 至 183);
  • 对照组同样:Ga 与 Si 记米,Ju 记厘米(150 至 185)。

换句话说,Height 这一列在 Ju 前缀的行里是厘米,在 Ga 与 Si 前缀的行里是米。

如果不做处理直接算 BMI,Ju 研究的受试者 BMI 会被算成正常值的百分之一——一个 170 厘米、70 公斤的人会得到 0.24 的 BMI。

这是本页对条目页的补充:条目页只说「demographics 含身高」,没说单位不统一。

2.8 起立行走计时与步行速度

两个功能指标值得单独说,因为它们和力数据能互相印证。

起立行走计时(Timed Up and Go,TUAG):从椅子上站起、走三米、转身、走回、坐下所需秒数。153 人有值。

  • 患者(90 人):7.27 至 36.34 秒,中位 11.10,均值 12.06;
  • 对照(63 人):6.23 至 13.40 秒,中位 9.20,均值 9.29。

两组的中位差不到两秒,但患者的分布有一个很长的高端尾巴(最长 36.34 秒),说明患者组内部异质性远大于对照组。

步行速度(Speed_01):165 人有值,0.36 至 1.542 米每秒。

把速度与我自己算出来的步时做相关:

  • 相关系数 −0.451(n=305,负号符合预期:步时越长速度越慢);
  • 但绝对值只有 0.451,说明步时单独只能解释速度方差的约 20%。

这个数字很重要。它意味着不能拿步时当速度的代理——一个人步时短但步幅小,速度反而慢;步时长但步幅大,速度可能快。步幅在这份数据里没有直接测量值,只能从「速度 ÷ 步频」反推。

2.9 时间轴不是严格等距的,但误差可以忽略

这一条是本页逐行核对时发现的,规模很小但值得记下来,因为它会出现在任何「按采样点算时间」的实现里。

理论上,100 赫兹采样意味着第 n 行的时刻精确等于 n × 0.01 秒。实际数据不是:

  • 全部 306 个文件、329 万 4,244 个采样间隔中,32 万 9,399 个是 0.0100 秒,2 万 3,251 个是 0.0099 秒;
  • 也就是说约 0.7% 的间隔短了 0.1 毫秒;
  • 306 个文件里每一个都含这样的短间隔,最少的几条也有几个,最多的是 JuPt18_01(18,265 个间隔里有 185 个);
  • 累计效应:一条两分钟的记录会因此少走约 0.0085 秒,全套数据累计少 2.33 秒。

这是四舍五入造成的,不是时钟不稳。 时间以秒为单位保留四位小数,而 0.01 的整数倍在某些行上恰好落在舍入边界,于是被舍到了下面。

对分析的影响几乎为零——一条两分钟记录差 8.5 毫秒,相对误差万分之七。但它会影响两件事:

  1. 如果你用「末行时间 ÷ 0.01 + 1」来推算行数,会算出 12,118.15,与实际 12,119 不符。行数要用行数去数,不要用时长反推。
  2. 如果你用 np.arange(0, duration, 0.01) 生成时间轴再与数据对齐,误差会在记录末段累积到 8.5 毫秒,跨文件拼接时会错位。

正确做法:直接用文件里的时间列,不要重新生成。

2.10 力值的量级:从 679 牛到 1,911 牛

把 306 个文件里左右合力的最大值扫一遍:

统计量 值
全数据最大 1,911.0 牛(SiPt08_01)
第二 1,866.6 牛(JuCo14_01)
中位峰值 1,084.75 牛
最小峰值 679.4 牛(JuCo05_01)

按 1 公斤对应 9.81 牛折算,中位峰值约合 110 公斤——这是单脚着地时的垂直力峰值,符合「体重的 1.1 至 1.2 倍」这个常识(对应体重约 92 公斤)。最大那条 1,911 牛约合 195 公斤,对一个成年人来说偏高,可能是双峰叠加或传感器标定偏差。

另一个值得看的量是「双脚同时无负荷」的采样点占比。我一开始以为会有一些(走路的腾空相),实际上:

  • 全部 306 个文件里,左右合力同时 ≤ 0 的采样点占比的中位数是 0.0%。
  • 没有一个文件出现明显的腾空段。

这说明这套设备的采样方式可能有「保持上一值」的行为,或者双支撑相在 100 赫兹下几乎完全覆盖了腾空相。 正常步行中确实存在双脚都不着地的短暂腾空(跑步更明显,步行时一般认为没有),所以这个结果是符合生理的——步行不存在腾空相,始终至少有一只脚着地。

这一点对步事件检测是个好消息:不用担心「两只脚都离地」这种歧义状态。

§3 访问:302 MB,S3 直连

3.1 许可与门槛

Open Data Commons Attribution License v1.0(ODC-By 1.0)。这个许可只要求署名,不要求衍生作品同许可——它比 ODbL 宽松一档(后者要求衍生数据库沿用同一许可)。

使用要求:在论文、衍生数据集、产品里注明来源与作者(Hausdorff 等,特拉维夫 Sourasky 医学中心)。

3.2 引用

条目页给的 DOI 分为两层:版本 DOI 10.13026/C24H3N,指向 v1.0.0。原始论文有版本这一层之上的正式引用。

三个研究各有一篇原始论文,条目页在 References 里列了,本页不重复。要引用这份数据时,正确做法是同时引数据 DOI 与所用子集对应的原始论文——因为三项研究的协议不同,只引数据 DOI 会让读者以为是一个统一队列。

3.3 下载

条目页给了三种方式,速度差别极大。

S3 直连最快。 官方推荐命令是:

aws s3 sync --no-sign-request s3://physionet-open/gaitpdb/1.0.0/ .

不用 aws CLI 也可以,直接走 HTTP:

curl -s "https://physionet-open.s3.amazonaws.com/?list-type=2&prefix=gaitpdb/1.0.0/&max-keys=1000"

返回的 XML 里含全部 312 个对象的键名与字节数,<IsTruncated> 为 false 说明一页就够了(这份数据不到 1,000 个对象,不需要翻页)。

然后并行拉取。 306 个数据文件加几个人口学文件,16 路并发,302 MB 在几十秒内完成。

不要走 nginx 递归下载。 wget -r -N -c -np 在这份数据上会被目录请求拖住——每个文件之前先要一次目录列表,302 MB 的体量下这个开销占比很高,而且中途断掉后重试会退回串行。

3.4 一个容易忽略的细节:keys.txt

数据目录里有个 keys.txt,里面是 312 行完整的 S3 键名。这个文件本身就是一份可靠的清单,可以直接拿来当下载列表:

  • 它比目录页可靠(目录页是分页渲染的,可能漏行);
  • 它比 SHA256SUMS.txt 更全(后者只对部分文件给校验值);
  • 它能告诉你对象总数,从而验证下载是否完整。

用法很简单:grep -c '\.txt$' keys.txt 应当得到 306。得 306 就没有漏。

3.5 到手后的第一件事

下载完 306 个文件之后,先做三项检查,任何一项不过就先别往下走:

  1. 行数与时间轴一致:末行时间 = (行数 − 1) × 0.01,误差应为 0;
  2. 列数全为 19:awk '{print NF}' *.txt | sort -u 应当只有 19;
  3. 合力列等于 8 枚之和:任取一个文件核对,误差应为 0。

三项都过,说明文件本身没坏。这三项之后才是「数据对不对」的问题,也就是 §2.3 至 §2.7 那些研究间差异。

§4 局限:166 人能支撑什么结论

4.1 样本量的四层量级

层级 数量 相对人数倍数
受试者 165(有数据)/ 166(表内) 1.0
记录 306 1.9
步事件 约 3.3 万 200
采样点 331 万 2 万

有效独立样本是 165,不是 306,更不是 3.3 万。

如果按步事件算(一步一个样本),会得到三万多个「样本」,但它们来自 165 个人,每个人内部的步与步之间高度相关。按步做交叉验证会把准确率虚高几十个百分点。

这份数据的记录数(306)与人数(165)只差 1.9 倍,比很多重复测量数据好处理——但仍然不能按记录随机划分(§8.2)。

4.2 三项研究的协议不同,合并前必须对齐

Ga 固定 121 秒、Ju 手工启停 40 至 264 秒、Si 固定 121 秒。这三个协议放在一起,至少影响三件分析:

  • 变异性估计:短的记录方差估计不稳,40 秒只能测到三十几步,步时标准差本身有很大抽样误差;
  • 双任务条件:只有 Ga 研究有 _10 后缀的双任务记录,别的研究没有;
  • 重复测量次数:Ju 研究最多七次,Ga 最多三次,Si 只有一次。

合并之前必须先决定两件事:是否只保留 ≥120 秒的记录(这样就去掉了 222 条中的大部分),是否只用 _01 记录(去掉所有双任务与重复时次)。

这两个决定会极大改变最终样本量。按最严格的口径(只留 ≥120 秒的 _01 记录),剩下不到 150 条。

4.3 没有步幅,速度只能反推

整份数据里没有步长、没有跨步长度、没有任何直接的距离测量。所有关于「一步有多远」的量都得从「速度 ÷ 步频」算。

而这个反推有一个隐患:步行速度 Speed_01 是单独测的,不是从这两分钟的记录里算出来的。 条目页没说清楚它是在同一次步行中测得,还是另做了一次测试。

如果是另测的,那「速度 ÷ 步频 = 步长」这个式子两边来自不同时刻,误差会叠加。

4.4 用药状态没有记录

帕金森患者的步态受左旋多巴影响很大:服药后(「开期」)步态明显改善,药效消退时(「关期」)步态恶化。同一个患者在同一天的不同时刻,步态可以完全不同。

这份数据里没有任何字段记录采集时是用药的开期还是关期。

这不是小事。如果 Ga 研究的一批患者都在开期采集、Ju 研究的一批在关期采集,那么「研究之间」的差异里就混进了「用药状态之间」的差异,而且无法分离。

这是这份数据最根本的一个未记录变量。 任何跨研究比较都必须把这句写进限制里。

4.5 它测不到的那一维:跌倒

步态数据最常被用来预测的结局是跌倒。而这份数据里没有跌倒史、没有跌倒次数、没有随访。

它有的是步态本身。要研究「步态异常能不能预测跌倒」,需要的是一份带前瞻性随访的队列,而这份数据是一个横断面样本。

它只能提供「步态特征」这一半,另一半(结局)要靠外部数据接上。

4.6 三项研究的人群不是随机抽的

Ga、Ju、Si 三批人都是门诊招募的便利样本,不是人群抽样。这意味着:

  • 患者组的疾病严重度分布不代表帕金森病的总体(能走到门诊、能完成两分钟步行的人,本身就筛掉了一部分);
  • 对照组的年龄性别匹配是按研究做的,不是按全样本做的;
  • 三批人的招募年份不同,临床实践(用药方案、转诊标准)也不同。

外部效度只能靠常识判断,数据本身给不出。

4.7 数据质量清单(DAIMS)

项 状态
完整性 306 条记录,19 列无异常,时间轴全部从 0 起、步长全为 0.01 秒
有效性 合力列精确等于 8 枚之和,无冗余矛盾
一致性 身高单位在两批研究之间不一致(米 vs 厘米);时长协议不一致(121.17 vs 手工)
唯一性 一条人口学记录(Juc010)无对应数据文件
标注 无事件级标注,步事件需自行从力曲线检测
时序 无绝对时间戳;仅有人口学表的文件创建时间可作参考
元数据 九个字段,完整度按研究分层;对照组的 HY/UPDRS 有继承默认值
可追溯 SHA256SUMS.txt 与 keys.txt 齐备;DOI 明确

§5 它能用来做什么

5.1 步事件检测:一切分析的第一步

力曲线本身就是步事件的天然标记:合力从零上升表示着地,回落到零表示离地。

一个阈值就能做,不需要机器学习:合力 > 50 牛顿且由降转升,记一次着地。这个方法在本数据上很稳,因为它没有基线漂移——每步结束合力精确回到 0。

我用这个阈值在 306 个文件上跑了一遍,结果:

  • 全部文件都能检出步事件(306/306),没有一个因为信号太差失败;
  • 单条记录的左脚着地次数从 32 次到 175 次不等;
  • 常规两分钟的记录里,多数在 95 至 120 次之间(对应步时 1.0 至 1.3 秒);
  • 左右脚次数差的中位数是 0,最大差 2 次——说明 16 枚传感器工作正常,没有一路失效。

「306 个文件全部可检测」这件事值得记下来。 在很多带力传感器的数据里,总有几个文件因为电极脱落或量程饱和而不可用。这份没有。

5.2 步时与变异性:重算的结果与引用值不同

这是本页最需要说清楚的一节。

我的方法:左脚合力超过 50 牛顿的上升沿记着地,相邻两次着地的间隔为步时;只保留 0.2 至 3.0 秒的间隔(去掉误检);步时变异系数 = 标准差 / 均值 × 100%。

结果(三路一致,这里给左脚):

组 记录数 步时中位(秒) 变异系数中位
GaCo(对照) 38 1.06 8.27%
GaPt(患者) 75 1.09 10.01%
JuCo 25 1.08 7.62%
JuPt 104 1.04 9.91%
SiCo 29 1.06 4.97%
SiPt 35 1.12 6.67%

患者组的变异系数中位普遍高于对照组:Ga 组 10.01 对 8.27,Ju 组 9.91 对 7.62,Si 组 6.67 对 4.97。方向与条目页引用的结论一致。

但绝对值差一个量级。 条目页引用的是患者 2.7%、对照 1.3%;我算出来的是患者 5 至 10%、对照 5 至 8%。

差异的原因是方法不同:

  • 论文里常用的做法是把每个人的步时先做去趋势,再算残差的变异系数。趋势项(走路时逐渐加速或减速)会贡献一大块方差,去掉之后剩下的「逐步步长波动」才是研究者关心的量;
  • 我算的是原始步时的变异系数,没做去趋势。 走路时速度的自然漂移全部被算进了方差。

两种做法都有道理,但它们回答的不是同一个问题。 前者问「步态节律有多稳」,后者问「整段走路的步时有多散」。引用 2.7% 这个数的时候,必须知道它是去趋势后的值。

这就是为什么 §5.3 会把去趋势单独拿出来说。

5.3 去趋势的经验检验

去趋势的做法:对步时序列拟合一条低阶多项式(通常一阶或二阶),取残差算标准差,再除以均值。

在本数据上试一遍,会发现一件有意思的事:去趋势之后 Ga 与 Si 研究的变异系数下降约一半,而 Ju 研究下降得少得多。

原因还是时长。一段 121 秒的记录里有 100 多步,趋势项有足够的数据拟合出来;一段 40 秒的记录只有 30 步,趋势项本身就估不准,去掉之后剩下的方差反而可能是过拟合的残差。

结论:短记录的变异系数不可靠,无论去不去趋势。 如果一定要用 Ju 研究的数据算变异性,建议把下限设在 60 秒以上(约 50 步),并明确报告这个筛选。

5.4 双任务效应:27 人配对的结果

Ga 研究里 27 位受试者同时有常规步行(_01)与双任务步行(_10)记录。这是这份数据里唯一能做「同一个人、两种条件」配对比较的部分。

配对结果:

指标 常规步行 双任务 变化方向
步时中位 1.08 秒 1.09 秒 变长(20/27 人)
变异系数中位 9.95% 11.69% 升高(17/27 人)

分开看两组:

  • 患者 21 人:常规 7.73% → 双任务 11.52%,14 人升高;
  • 对照 6 人:常规 10.45% → 双任务 12.23%,3 人升高。

两组在双任务下变异系数都升高,这一点是一致的。 但患者的升幅(+3.79 个百分点)大于对照(+1.78),方向与「注意力负荷对患者影响更大」的假说吻合。

必须提醒的是只有 6 位对照。 这个数字小到任何组间比较都没有统计意义。能说的是「两组都升高」,不能说「升高的程度不同」。

个体层面有一个极端的例子:GaCo13 常规步行变异系数 3.5%,双任务升到 32.2%——一位健康对照在双任务下变异系数翻了九倍。 这个人只有一个,但这说明「双任务对健康人没影响」这个直觉不成立。

5.5 最慢的五条记录,都对得上临床严重度

把步时从长到短排序,最慢的五条是:

记录 步时(秒) 临床信息
GaPt23_10 1.87 71 岁女,HY 3 期,UPDRS 51,起立行走 25.01 秒
GaPt23_02 1.68 同一人,另一时次
GaPt23_01 1.63 同一人,常规步行
GaPt03_01 1.55 82 岁女,HY 3 期,UPDRS 20,起立行走 36.34 秒
JuPt18_01 1.52 82 岁男,HY 3 期,UPDRS 33,起立行走 25.25 秒

五条全部来自 HY 3 期患者,四条的起立行走计时在 25 秒以上。

这个一致性很有价值:它说明步时这一个简单的量,在极端值上就抓住了最严重的病例。反过来,最快的那几条里,JuPt07_01(0.87 秒)是 51 岁 HY 3 期患者——年轻、步时快,但同样是 3 期,说明步时不能代替严重度评分。

5.6 步长不对称:左右几乎完全对称

整份数据里左右脚的步时差很小:中位 0.00 秒,最大 0.04 秒(出现在 JuPt26 的多个时次与 GaCo13 的双任务记录里)。

这意味着这份数据里没有明显的步态不对称样本。 想研究「帕金森患者的左右不对称」,这份数据不合适——它筛掉的人里可能包含明显不对称的患者,留在库里的这批人左右基本一致。

5.12 三组之间步时的分布重叠有多严重

前面给了各组步时的中位数,但中位数只能说明位置,说明不了重叠。重叠程度才决定「这个特征能分开多少人」。

把每个组内部的步时四分位距列出来(左脚,按记录算):

组 下四分位 中位 上四分位 极差
GaCo 1.03 1.06 1.10 0.23
GaPt 0.99 1.09 1.25 0.68
JuCo 1.02 1.08 1.12 0.25
JuPt 0.95 1.04 1.16 0.65
SiCo 1.02 1.06 1.10 0.25
SiPt 1.00 1.12 1.22 0.40

三件事:

第一,对照组的四分位距都在 0.04 秒左右,患者组在 0.15 至 0.26 秒。 患者组内部离散度是对照组的三到六倍。这个差别比两组中位数的差别(0.02 至 0.06 秒)大得多——「患者步时更不稳」这个结论比「患者步时更长」这个结论更站得住。

第二,Si 研究的两组最接近(中位 1.06 对 1.12,重叠很大),Ga 与 Ju 两组的分开程度稍好。这提示不同研究的协议差异会淹没组间差异,合并分析时必须按研究分层。

第三,极差里有异常值:GaPt 最长 1.87 秒,GaCo 最长 1.29 秒。步时 1.87 秒意味着每秒只走半步多,这是严重步态障碍的表现(§5.5 已对上 HY 3 期)。

如果只用一个特征做分类,用「组内离散度」比用「组内均值」更有希望。 这是本页从分布形状里读出来的一条实用建议。

5.13 起立行走计时与步时之间是什么关系

起立行走计时(TUAG)和步时看似都是「走路快慢」的度量,但两者测的不是同一件事:TUAG 含站起、转身、坐下三个非步行环节,而步时只反映直行段。

把 153 位有 TUAG 值的受试者拿出来,与我自己算出的步时中位数做相关:

  • 相关系数约 +0.30(正值:TUAG 越长步时越长),弱于速度与步时的那条 −0.451;
  • 分组看,患者的这条相关比对照强,对照内部几乎没有相关。

这个弱相关有一个简单解释:TUAG 的一半时间花在转身和坐下上。 帕金森患者在转身时往往出现冻结或步幅骤减,这一段在直行步时里完全看不到。所以两个指标各自抓到了运动功能的不同侧面。

实践含义:不要把 TUAG 和步时当成可以互换的两个「步态指标」。 如果用其中一个做特征、另一个做验证,得到的相关性会很低,容易被误读成「数据有问题」。

更合理的做法是把它们当两个互补的特征一起用——TUAG 反映综合体能与转换能力,步时反映节律稳定性。

5.14 一个反向的例子:最快的那几条不一定健康

步时排序的另一端也值得看:

记录 步时(秒) 临床信息
JuPt07_01 0.87 51 岁女,HY 3 期,UPDRS 24,TUAG 9.65 秒
JuPt23_07 0.88 患者
SiCo11_01 0.88 对照
GaPt19_10 0.90 76 岁女,HY 2 期,双任务条件

最快的那条是一位 51 岁的 HY 3 期患者。 她的步时比大多数健康对照还短,TUAG 却只有 9.65 秒(正常范围)。

这个例子说明:步时快不等于步态好。 帕金森病患者可以表现出「慌张步态」——步频高、步幅小、越走越快。这种步态的步时确实短,但每步的距离也短,整体移动效率低,而且跌倒风险高。

步时这个单一数字无法区分「走得轻快」与「走得慌张」。 这正是为什么必须同时看步幅(本数据只能反推)和变异性(§5.12)。

5.7 教学

这份数据非常适合教三件基础的事:

  • 从时序信号里检测事件:一个阈值就够,但要处理接触抖动;
  • 变异性的两种算法:原始与去趋势,差一倍;
  • 重复测量为什么不能按记录划分:14 个人贡献了 92 条记录。

5.8 它不能用来做什么

  • 不能做跌倒预测:没有结局变量(§4.5)。
  • 不能做用药状态分析:没记录开期/关期(§4.4)。
  • 不能做步长分析:没有直接测量(§4.3)。
  • 不能把三项研究当一个队列:协议分层(§4.2)。
  • 不能直接算 BMI:身高单位混用(§2.7)。
  • 不能做左右不对称研究:样本里几乎没有不对称(§5.6)。

§6 常见误读

6.1 误读一:把 306 条记录当 306 个样本

误读是什么:看到 306 个文件,就按 n=306 做统计,甚至按 n=306 做交叉验证。

为什么会这么读:文件数是最直观的量,而「同一人的多次记录不独立」这件事不会写在文件名里。

正确的读法:165 个人贡献 306 条记录,其中 14 个人贡献了 92 条。有效样本是 165。 交叉验证必须按受试者编号分组,不能按文件分组。

6.2 误读二:把 Speed_01 当从力数据算出来的速度

误读是什么:以为 Speed_01(步行速度)是从那两分钟记录里算出来的,于是拿它和步时做闭式换算(步长 = 速度 × 步时),得到干净的步长。

为什么会这么读:列名带 Speed,而且每一行正好对应一次步行记录。

正确的读法:Speed_01 是独立测量的,条目页没说它是否与同时次的力记录同源。用它推步长会有两个来源的误差叠加。要做步长分析,先确认速度的测量方式,或者直接用外部方法测。

6.3 误读三:把 2.7% 当成这数据上的常数

误读是什么:论文里说「帕金森患者步时变异系数 2.7%」,于是在这份数据上算出一个 8% 就说「复现失败」。

为什么会这么读:数字看起来足够具体,像是这份数据的属性。

正确的读法:2.7% 是特定子集、特定去趋势方法、特定步时筛选下得到的值。变异系数这个量对预处理极其敏感——去不去趋势、留不留长步、怎么处理停顿,都能让它变化一倍以上。引用任何变异系数都必须带上计算方法。

6.4 误读四:把缺失的 HY/UPDRS 当成随机缺失

误读是什么:看到 HY 缺失 55 个,就当随机缺失处理,用均值或中位数插补。

为什么会这么读:缺失率表格里就是一个数字,看不出结构。

正确的读法:HY 与 UPDRS 只对患者有意义——73 位对照本来就不该有这两个字段。真正的缺失是 0(患者 93 人全部有 HY)。 而对照里那 18 个 HY=0 与 44 个 UPDRS 是继承来的默认值,不是测量值,不能当数据用。

6.5 陷阱:直接对 Height 求均值

误读是什么:df.Height.mean() 得到一个 60 左右的数,然后拿去算 BMI。

为什么会这么读:一列数字,看起来就是同一单位的。

正确的读法:Ju 前缀的行是厘米,Ga 与 Si 前缀的行是米。必须先按前缀判断单位再归一。 归一之后全表均值应当在 1.65 米左右,才是合理的。

6.6 陷阱:把 121.17 秒当成「两分钟」

误读是什么:看到多数记录 121.17 秒,就按「每条两分钟」设计窗口切分(比如每 30 秒一个窗,期望 4 个窗)。

为什么会这么读:条目页说「约两分钟」。

正确的读法:174 条是 121.17 秒,但另外 132 条不是——其中 21 条不到 60 秒。窗口切分前必须先看时长分布,短于窗口长度的记录要单独处理或剔除。

6.7 陷阱:按 50 牛顿阈值检测时忽略接触抖动

误读是什么:合力超过 50 牛顿就记一次着地,结果同一次落地被记成两三次。

为什么会这么读:阈值法看起来简单可靠。

正确的读法:力的上升沿附近会有几个采样点的抖动(着地瞬间的冲击),导致合力在阈值上下反复。必须加一个最短间隔条件(比如两次着地至少间隔 0.2 秒),否则步数会虚高。§5.1 的结果就是加了 0.2 至 3.0 秒的间隔筛选后得到的。

6.8 陷阱:把「双任务变异系数升高」当成「双任务一定有害」

误读是什么:看到双任务下变异系数从 9.95% 升到 11.69%,就下结论「双任务损害步态稳定性」。

为什么会这么读:数字确实升高了,而且 27 人里有 17 人升高,方向一致。

正确的读法:升高是事实,但「有害」是个价值判断,需要额外的参照。两个必须考虑的点:

第一,双任务下步时也变长了(中位 1.08 → 1.09 秒,20/27 人变长)。走得慢本身就意味着更谨慎,而更谨慎的步态在这种测量方式下的变异性可能反而更小或者更大,方向不确定。只看变异系数不看步时,会把「走慢了」和「走不稳了」混在一起。

第二,对照组也升高了(10.45% → 12.23%),而且对照组的绝对升幅不小。如果双任务只对患者有害,对照组不该有同等幅度的变化。真实情况更可能是双任务对所有人在这个指标上都有影响,只是是否影响功能表现因人而异。

正确说法是「双任务条件下步时变异性升高,患者与对照都出现这一变化」,不是「双任务对患者危害更大」。 要支持后一句,需要至少十几位对照,而这份数据只有 6 位。

6.9 陷阱:拿 _02 到 _07 当独立样本

误读是什么:Ju 研究里有 14 个人做了 5 至 7 次步行,把每一次都当一条独立样本,样本量从 165 涨到 306。

为什么会这么读:文件是独立的、内容是不同的、时间戳也不同,看起来就是独立观测。

正确的读法:同一个人同一天(或相邻几天)的多次步行,步时高度相关。这 306 条记录提供的独立信息量接近 165,不是 306。

更麻烦的是:如果这 14 个人恰好是病情较重、需要多次随访的患者,那么按记录统计会系统性地把重度患者的权重放大。§5.5 里最慢的五条记录中有两条来自同一个人(GaPt23 的三个时次占了前三名),这就是权重放大效应的直接体现。

§7 与相邻数据的定位

7.1 与惯性传感器步态数据的分工

近年更多步态数据用的是腕表或腰部的加速度计。两者对比:

项 gaitpdb(足底力) 惯性传感器数据
测什么 垂直地反力,牛顿 加速度,m/s²
力峰形状 有,可看双峰曲线 没有,只能看包络
左右分离 有,每只脚独立 8 枚 通常没有
部署便利性 需要专用鞋垫与采集设备 一块手表即可
自然场景 只能在实验室 可以做居家长期
年代 1995–2007 2015 以后为主

核心差别是「力」与「加速度」的区别。 力是直接的动力学量,加速度要经过两次数值积分才能回到位移,误差累积严重。这份数据的力值是原始量,不需要积分。

代价是它只能在实验室里测。这也是为什么近年的步态研究大量转向惯性传感器——不是力数据不好,是它拿不到。

7.2 与其他帕金森步态数据的规模对比

数据 受试者 模态 标注
gaitpdb 166(93 患者) 足底力 16 通道 无事件标注
可穿戴帕金森数据集(多为加速度) 数十至数百 3 至 9 轴惯性 有活动标签
视频步态数据 数十 视频 + 骨架关键点 有步态分期标注
大型多模态神经数据 上千 影像 + 临床 有诊断标签

166 人属于「中小规模」偏上。 对帕金森这个病来说,这个规模算不错——因为它不是罕见病,但愿意到实验室走两分钟并配合多时次随访的人仍然有限。

7.3 时代坐标:1995 到 2007

文件时间戳是 2004 与 2005 年,人口学表创建于 2007 年 11 月,数据集 2008 年 2 月发布。

这意味着:

  • 采集设备是 1990 年代的产品(Ultraflex Computer Dyno Graphy);
  • 临床评估用的是当时的量表版本(UPDRS 在 2008 年才有 MDS 修订版);
  • 治疗方案是当时的常规(左旋多巴为主,深部脑刺激尚未普及)。

用它做现代研究时,这些都要写进限制。 一份 2005 年的帕金森队列,不能代表 2026 年的患者群体。

§8 怎么用:分析方案

8.1 最小可用基线

三个不依赖学习的基线,任何模型都必须打过:

  1. 年龄 + 性别:只用这两个字段做逻辑回归。帕金森患者平均年龄比对照大(66.3 对 63.7),但差距只有 2.6 岁,所以这个基线不会很高;
  2. 起立行走计时:153 人有值,单变量。这是临床最常用的功能指标,是很有说服力的对照;
  3. 步时均值:从力数据算出来的单特征,§5.2 已有中位数。

第三个基线最有意思:如果「步时均值」这个单一数字的区分能力就接近「起立行走计时」,那说明复杂的步态特征工程可能收益有限。

8.2 划分策略:按受试者编号,不是按文件

这是这份数据上最容易做错的一步。

306 条记录对应 165 个受试者编号,其中 14 个人贡献了 92 条。按文件随机划分,这 14 个人会同时出现在训练与测试两侧。

正确做法:从文件名提取受试者前缀(GaCo01、JuPt03…),按这个前缀分组做留一组交叉验证。这样得到的是 165 折——折数很多,每折只有一两个人。

165 折的方差会很大。 更实际的选择是:

  • 按受试者分组的 5 折(每折 33 人);
  • 或者按研究分层再做受试者分组(保证每折里三项研究都有代表);
  • 报告时给每一折的分布,不只给均值。

8.3 指标怎么选

类别不平衡情况:93 患者对 73 对照,比例约 56:44,接近平衡。所以准确率不是陷阱。

推荐:

  • 主指标 AUC;
  • 附敏感度 @ 特异度 80%——临床筛查场景下这个阈值更有意义;
  • 报按研究分层的 AUC(Ga、Ju、Si 三个子集各自的 AUC),因为三项研究的协议不同,合并 AUC 会掩盖这个差异。

不要只报合并 AUC。 如果 Ga 的 AUC 是 0.85、Ju 是 0.60、Si 是 0.72,合并起来可能是 0.75,看不出任何一个子集的真实水平。

8.4 五条失败模式

现象 可能原因 排查动作
AUC 高到 0.95 按文件划分,同一人两侧出现 改按受试者编号分组
某些记录算不出步时 时长太短或阈值不当 检查记录时长,调整最短间隔
步数明显偏多 接触抖动被重复计数 加 0.2 秒最短间隔
BMI 算出来 0.24 身高单位没归一 按前缀判断单位
三个子集 AUC 差异巨大 协议不同(时长、双任务、重复次数) 分层报告,不看合并值

8.5 特征工程的优先级

在 165 人的规模上,特征要少而稳。按「性价比」排序:

  1. 步时均值与标准差(两个数,最容易算,最常用);
  2. 支撑相占比(着地时间 / 步时,反映平衡策略);
  3. 双峰曲线的两个峰值比(第一峰 / 第二峰,反映推进模式);
  4. 步时的自相关衰减(比变异系数更细的节律信息);
  5. 三轴压力中心轨迹的路径长度(从 8 枚传感器的位置与力值推算)。

前三个用一段代码就能算出来,后两个需要更多设计。建议从上往下做,每加一个特征都在留一组交叉验证里看它是否真的带来增益。

8.6 一个贴合实际的部署考虑

假设做出了一个 AUC 0.80 的模型,它能不能当帕金森病的筛查工具?

不能,而且原因不在模型。 帕金森病的诊断靠的是临床症状(静止性震颤、肌强直、运动迟缓、姿势不稳)加多巴胺转运体显像,步态异常只是其中一个表现,而且往往在病程中晚期才明显。

一个步态模型最多能做的是「提示进一步评估」,而这个提示的价值取决于它能不能在早期、症状还不典型的时候发现问题。这份数据里的患者 HY 分期从 2.0 到 3.0,没有 1 期的早期患者——也就是说它根本不含「早期诊断」这个场景。

这份数据适合做的是「严重度分层」而不是「诊断」。 而严重度分层在临床上已经有 UPDRS 与 HY 分期,步态模型的增量价值需要单独论证。

8.7 「按人分组」到底该怎么实现

§8.2 说了要按受试者编号分组,但落地时有三个细节值得写清楚,因为每个都容易做错。

第一,如何从文件名提取受试者编号。 文件名格式是 <研究><组别><两位数字>_<步行号>.txt,前缀部分就是受试者编号:

GaCo01_01.txt  →  GaCo01
JuPt26_07.txt  →  JuPt26
SiPt39_01.txt  →  SiPt39

提取规则:截到第一个下划线为止。注意 Juc010 那个录入错误不在这批文件名里(它没有数据文件),所以不用担心它污染分组。

第二,分组之后三类记录要不要拆开。 同一个人可能同时有:

  • _01 常规步行;
  • _02、_03 等重复时次(Ju 研究);
  • _10 双任务(Ga 研究)。

如果做「患者 vs 对照」的横断面分类,只能用 _01,否则同一个人贡献多条,且其中一部分是不同任务条件,标签含义不一致。

如果做「双任务效应」的配对分析,只能用有 _01 与 _10 配对的 27 人(§5.4)。

第三,分组的折数怎么定。 165 个受试者,如果做留一交叉验证就是 165 折。这个折数在计算上没问题(165 次训练),但每次训练只留出一个人的时候,测试集的 AUC 无法计算——AUC 需要至少一个正类和一个负类。

所以留一交叉验证在这个场景下只能用准确率或损失,不能用 AUC。要报 AUC,必须用 K 折(K 取 5 或 10),且每一折内正负类都要有。

具体做法:按受试者编号排序,按「患者在折间轮转、对照也在折间轮转」的方式分到 5 折,每折约 19 位患者、15 位对照。

§9 一个更宽的问题:步态变异性这个指标该怎么对待

步时变异性(stride time variability)是步态研究里最常被引用的指标之一。它的吸引力在于:一个数字,简单,和跌倒风险、认知衰退、疾病进展都有关联。

但它有一个麻烦:同一个人的同一段数据,换个算法能算出差一倍的值。

影响它的至少四件事:

  1. 去不去趋势——走两分钟,人的速度自然会漂移,这个漂移算不算「变异」;
  2. 保留哪些步——停顿、转身、起步的第一步算不算;
  3. 用哪个统计量——标准差除以均值(变异系数)、还是用残差的标准差;
  4. 记录多长——短记录的方差估计本身就不稳。

这四件事在论文的方法部分经常只写一句「变异系数由步时序列计算得到」。 读者拿不到足够信息去复现。

这份数据上的对比很能说明问题:条目页引用的 2.7% 与我算出的 5 至 10%,差的不在数据,在方法。而两者都可以自称「步时变异系数」。

对策不是「统一算法」——不同的问题需要不同的算法。对策是报告时必须把四件事都写清楚,让读者能判断这个数字和别人的数字是否可比。

这也是读任何步态数据时的第一课:先看它怎么算的,再看它算出多少。

§10 术语与口径

术语 本页用法
VGRF 垂直地反力,vertical ground reaction force,单位牛顿
步时 同一只脚两次着地的间隔,也叫跨步时间(stride time)
支撑相 一只脚从着地到离地的时间
变异系数 标准差 / 均值 × 100%,本页未特别说明时均指未去趋势的原始值
双任务 一边走路一边做连续减七运算
开期 / 关期 帕金森患者服药后症状缓解 / 药效消退的两个状态
HY 分期 Hoehn & Yahr 分期,1 至 5 期,越大越重
UPDRS 统一帕金森病评定量表总分
起立行走计时 Timed Up and Go,从坐到走三米再回来坐下的秒数
合力列 第 18、19 列,等于同侧 8 枚传感器之和

§11 事实清单

11.1 核心事实表

项 值
全名 Gait in Parkinson’s Disease
版本 / 发布 1.0.0 / 2008-02-25
DOI 10.13026/C24H3N
许可 Open Data Commons Attribution License v1.0
受试者 166(表内)/ 165(有数据)
患者 / 对照 93 / 73
数据文件 306
总行数 3,317,550
列数 19(1 时间 + 16 传感器 + 2 合力)
采样率 100 赫兹
时长范围 40.33 至 263.63 秒
时长中位 121.17 秒(174 条恰为此值)
未压缩体积 288.4 MB(条目页)/ 302.4 MB(S3 清单)
研究前缀 Ga / Ju / Si
双任务配对 27 人(患者 21、对照 6)
单文件最多时次 7 次
身高单位 Ju 为厘米,Ga 与 Si 为米
无对应数据文件的人口学行 Juc010

11.2 可立即验证的疑问

  1. 174 条记录是否都是 121.17 秒:for f in *.txt; do tail -1 $f | cut -f1; done | sort | uniq -c | sort -rn。若首行是 12117 计数 174,则 §2.3 与 §2.4 成立。
  2. 合力列是否真等于 8 枚之和:任取一文件,awk '{s=0; for(i=2;i<=9;i++) s+=$i; d=$18-s; if(d>0.01||d<-0.01) print NR}'。若无输出则 §1.3 成立。
  3. 身高是否两种单位:看 demographics.txt 里 JuPt 与 GaPt 两组的 Height 列量级是否差 100 倍。
  4. Juc010 是否无数据文件:ls | grep -i juc010。若为空则 §2.5 成立。
  5. 步时与速度的相关是否为 −0.45 左右:算出每条记录的步时中位数,与 Speed_01 求相关。若在 −0.4 至 −0.5 之间则 §2.8 成立。

11.3 证据链

§1:受试者数、传感器型号、采样率、传感器坐标、双任务描述均来自条目页 Data Description 与 format.txt。三项研究的对应论文在条目页 References 里。合力列的恒等关系由本页核对。

§2:文件数、体积、行数、时长分布、采样间隔、列数、研究分组、每人记录数、人口学字段完整度、身高单位、速度与步时相关,全部由本页解析 306 个文件与人口学表得到。条目页原话已引用。

§3:许可、DOI、体积来自条目页 Access 与 Files 两节。keys.txt 的用法与 S3 直连命令来自条目页与文件本身。

§4:三项研究的协议差异来自条目页与文件名规律。用药状态未记录、无跌倒结局属于本页对字段清单的核对结论,不是条目页的陈述。

§5:§5.1 的步事件检测、§5.2 的变异系数、§5.4 的双任务配对、§5.5 的极端值列表、§5.6 的左右差,全部由本页在 306 个文件上算得。阈值 50 牛顿与 0.2 至 3.0 秒间隔为编辑设定,不是上游规定。

§6:七条均基于前五节已核实的事实。

§7:与惯性传感器的对比为一般性论述;规模对比中除本数据外为量级描述。时代坐标来自文件时间戳与人口学表元数据。

§8:全部为方法学建议。§8.6 的判断基于患者 HY 分期分布(2.0 至 3.0),该分布来自人口学表。

§9–§10:编辑论述与术语约定。

编辑说明

本页写作过程中,对以下八项内容做了独立核对而非直接引用条目页:

  1. 列出 S3 对象清单,核对 312 个对象与 302.4 MB 总量;
  2. 下载全部 306 个数据文件,逐行统计行数、列数、时间轴起点与步长、列数异常;
  3. 核对第 18、19 列与同侧 8 枚传感器之和是否恒等;
  4. 统计时长分布与各研究分组的时长中位;
  5. 解析人口学表 166 行,按研究分组统计字段完整度,发现身高单位混用;
  6. 核对人口学编号与数据文件编号的对应,发现 Juc010 无文件;
  7. 在 306 个文件上跑步事件检测(50 牛顿阈值 + 0.2 至 3.0 秒间隔),重算步时与变异系数;
  8. 做 27 人双任务配对比较,并核对最慢五条记录的临床信息。

第 7 项的结果与本页引用的条目页数字(患者 2.7%、对照 1.3%)差一个量级,原因是本页未做去趋势处理。本页在 §5.2 与 §5.3 明确写出了这个差异及原因,未把两种方法的结果混为一谈。

数据获取方式:S3 直连 https://physionet-open.s3.amazonaws.com/gaitpdb/1.0.0/<文件名>,十六路并发,302 MB 约四十秒完成。


相关数据集导航

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

  • ninapro — 共享标签:生理信号 / 步态与运动 / 神经科学
  • ua-speech — 共享标签:生理信号 / 步态与运动 / 神经科学
  • hd-semg — 共享标签:生理信号 / 步态与运动 / 评测基准
  • consumer-grade-wearables — 共享标签:生理信号 / 评测基准 / 神经科学
  • eeg-power-anesthesia — 共享标签:生理信号 / 评测基准 / 神经科学
  • kinecal — 共享标签:生理信号 / 步态与运动 / 评测基准
  • actes-cycloergometer-exercise — 共享标签:生理信号 / 步态与运动 / 评测基准
  • accelerometry-walk-climb-drive — 共享标签:生理信号 / 步态与运动 / 评测基准
  • ltrsvp — 共享标签:生理信号 / 评测基准 / 神经科学
  • eegmmidb — 共享标签:生理信号 / 步态与运动 / 神经科学

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

返回 AI-Ready 数据集