信息速览
一项试验做完之后,真正留下来的往往不是结论,而是那张把每个人治疗前后的分数并排放在一起的表。结论会被后来的更大样本修正,表却可以一直被翻出来核对:谁的分数变了、变了多少、在哪个量表上变。
inipdmsa 就是这样一张表被公开后的样子。它是 PhysioNet 在 2019 年 4 月 10 日上线的一份试验数据表,对应一项鼻喷胰岛素治疗帕金森病与多系统萎缩认知障碍的概念验证研究:十六人入组,八人用药、六人用生理盐水,每日一次四十国际单位,连续四周,最后十四人完成了基线与治疗后的同一套评估。
它的全部内容就是三张 CSV:一张五十二列的汇总宽表、一张十六列的 UPDRS 分表、一份二十五项的变量字典。没有影像,没有波形,没有原始病例报告表。也正因为如此,它适合被当作一份可以逐格核对的台账,而不适合被当作训练集。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | Safety and Preliminary Efficacy of Intranasal Insulin for Cognitive Impairment in Parkinson Disease and Multiple System Atrophy |
| 短名与展开 | inipdmsa,平台按标题首字母拼合(INI + PD + MSA),官方未给释义 |
| 发布方 | PhysioNet(MIT 计算生理学实验室维护) |
| 署名作者 | Vera Novak、Peter Novak |
| 作者机构 | Beth Israel Deaconess Medical Center、Brigham and Women’s Hospital(均属哈佛医学院) |
| 首次发布 | 2019 年 4 月 10 日,版本 1.0,此后无新版本 |
| DOI | 10.13026/bn1x-my19(v1.0);最新版 DOI 10.13026/2572-db54 |
| 研究类型 | 概念验证、随机、双盲、安慰剂对照的单中心试验 |
| 干预 | 鼻喷胰岛素 40 国际单位或生理盐水,每日一次,连续四周 |
| 入组与分析 | 入组 16 人;完成评估并进入分析 14 人(用药 8、安慰剂 6) |
| 诊断构成 | 13 例帕金森病、1 例多系统萎缩 |
| 交付物 | 3 张 CSV + LICENSE.txt + SHA256SUMS.txt,共 5 个文件 |
| 主要表 | PD-Table1.csv:16 行 × 52 列;PD-Table2.csv:16 行 × 16 列 |
| 变量字典 | Data_Dictionary.csv:25 个变量,含两个示例受试者的取值 |
| 数据形态 | 标量汇总表,无原始信号、无访视流水、无影像 |
| 许可 | ODC 署名 1.0,免注册下载,允许商用与再分发 |
| 论文 | Novak 等,PLoS One 2019;14(4):e0214364;试验注册号 NCT02064166 |
§1 它要解决的具体麻烦
1.1 一份试验表能回答的问题,比一个结论更耐用
帕金森病的认知损害有一个尴尬的地方:它很常见,却很难量化。官方背景段给出的说法是,确诊帕金森病的人里约百分之二十六会发展出轻度认知障碍,且以非遗忘型更常见;这个比例随年龄、病情严重度与病程上升,并进一步抬高痴呆与失能的风险。
要在这类人群里试一种干预,最朴素的办法是给每个人在治疗前后各做一遍同一套量表,然后看分数怎么动。量表本身并不神秘:蒙特利尔认知评估测整体认知,F、A、S 三字母言语流畅性测音位流畅性与言语记忆,二十一项贝克抑郁量表测情绪,改良 Hoehn and Yahr 分期测病情阶段,UPDRS 测运动与非运动症状的细项,再加一个四米步行试验测走行能力。
麻烦在于,这套东西做完之后通常只以论文表格里的均值加标准差出现。均值抹掉了每个人,标准差抹掉了方向。想知道某一例为什么从 34 分掉到 28 分,只能去看原始表。inipdmsa 公开的就是这张原始表的一层汇总版本:一人一行,两次评估并排。
1.2 三条常见的错误期待
第一条是把 inipdmsa 当成帕金森病的公开队列。它不是队列,是一次试验的参与者名单,招募有明确的纳入与排除条件,观察窗只有四周,随访到治疗结束为止。用它估计患病率、做自然史建模、算年发病率,都会得到没有意义的结果。
第二条是把「八人对六人」当成可以忽略的细节。这个样本量在原论文里对应的表述是概念验证与初步疗效,作者自己在摘要末尾写了「需要更大规模的研究」。任何在这十四人身上跑出来的分层结果,都不足以支撑一个亚组结论;如果脚本输出了按性别、按病程、按基线 MoCA 分层的差异,那多半是在拟合噪声。
第三条是把 CSV 当成干净的结构化数据。这批表的列名有重复、有拼写错误、有尾随空格,缺失值有三种写法,未进入分析的受试者还占着行位。它是一份人工整理的表格,不是数据库导出。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 核对某例治疗前后的量表原始分 | 一人一行,基线块与终点块并排 | 够,逐格可读 |
| 复现论文的组间比较 | 分组标记、所有进入分析的分数 | 基本够,需自行配对与检验 |
| 训练认知评分预测模型 | 十四例、两次时点 | 不够,样本量与标签都不支持 |
| 研究步态与认知的关联 | 四米步行的时间、步数、步幅、步速 | 只够做相关性描述,不够做机制 |
| 分析药物安全性 | 不良事件仅以「退出」二字出现在一行 | 不够,无事件表、无实验室流水 |
| 做数据清洗教学 | 重复列名、三种缺失写法、拼写不一致 | 很够,是现成的坏味道样本 |
| 做多中心外部队列验证 | 单一招募点、单一族群构成 | 不够,无外部中心 |
| 引用一个稳定的数据 DOI | v1.0 DOI 与最新版 DOI 各一 | 够,注意版本对应 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 手上有一个鼻喷给药的小样本试验,想找个公开表对照字段设计 | 提供一份真实使用过的变量清单与列命名惯例 | 抄结构不抄列名,先修掉重复名再建自己的表 |
| 审稿时需要核对某篇论文的基线表数字 | 表内保留每例的年龄、病程、BMI、血压、量表分 | 按研究编号定位行,注意后缀 2 与 3 的时点归属 |
| 想做一个临床试验数据清洗的教学案例 | 三种缺失写法、重复列名、拼写错误一应俱全 | 先写清洗脚本,再让学生对同一批数据做配对检验 |
| 正在选帕金森病的公开数据源做影像或信号研究 | 明确告诉你这里没有影像与波形 | 转向带影像的公开库,把这份表当临床协变量参考 |
| 需要向同行说明「小样本试验的结论有多脆」 | 十四例、八对六的分组,可直接复算 | 用自助法重采样展示置信区间宽度 |
| 想找一份鼻喷胰岛素的人体试验原始数据 | 提供量表层面的汇总,不提供药代与给药记录 | 到临床试验注册库查方案,数据需另行申请 |
1.5 一句话判断
它不是训练集,是一份可以逐格核对的试验台账:价值在于每个人治疗前后的分数都还在,局限在于这样的人只有十四个。
1.6 不适合谁:四条边界
第一条边界是样本量。十四例、两组八与六,这个规模适合做配对的描述性比较,不适合任何需要统计效力的推断。凡是要报告置信区间、要做亚组、要比较两个以上协变量交互的研究,都不该以它为主数据。
第二条边界是数据层级。它只到汇总表这一层。原始病例报告表、访视时间、合并用药、不良事件明细、实验室检查流水、随机化盲底,全都不在包里。需要做时间到事件分析、安全性分析、依从性分析的研究,在这份数据上无法开展。
第三条边界是模态。它没有影像、没有生理信号、没有视频、没有语音。任何以「多模态」为卖点的模型,都不能把它当作非表格的那一路。
第四条边界是人群。招募集中在波士顿的两家医院,族群构成以白人为主,只有一例多系统萎缩,年龄集中在五十至八十岁,且排除了痴呆与严重共病者。把它当作帕金森病总体代表,会系统性地高估认知水平、低估疾病异质性。
§2 数据构成与规格
2.1 五个文件的全貌
包内一共五个文件,全部平铺在同一个目录下,没有子目录。三张 CSV 是数据,两个文本文件是合规与校验材料。
| 文件名 | 大小 | 内容 | 是否含数据 |
|---|---|---|---|
| PD-Table1.csv | 3.0 KB | 基线与终点汇总宽表,16 行 × 52 列 | 是 |
| PD-Table2.csv | 818 B | UPDRS 三部分与运动迟缓分,16 行 × 16 列 | 是 |
| Data_Dictionary.csv | 1.1 KB | 25 个变量的名称、说明、单位与两个示例值 | 是(示例) |
| LICENSE.txt | 19.9 KB | ODC 署名 1.0 全文 | 否 |
| SHA256SUMS.txt | 3.4 KB | 逐文件校验和 | 否 |
页面在文件列表下方标注整包未压缩体积为 7.5 MB。把五个文件的字节数相加,得到的是二十余 KB 的量级;两个数字并列存在,差额构成官方未作说明。实际操作时以逐文件下载为准,整包体积不影响使用。
2.2 字段与记录的完整字典
变量字典是二十五个变量,每条给名称、说明、单位与两个示例受试者的取值。它是理解两张表的入口,但只覆盖了宽表五十二列中的一部分。
| 变量 | 说明 | 单位 | 字典示例一 | 字典示例二 |
|---|---|---|---|---|
| Study Number | 受试者编号 | — | 4 | 5 |
| IversusP | 胰岛素对安慰剂 | 0 安慰剂,1 胰岛素 | 0 | 1 |
| Age | 年龄 | 岁 | 53 | 71 |
| Gender | 性别 | 1 男,2 女 | 2 | 1 |
| Etnicity | 族裔(原文拼写如此) | — | White | African American |
| Smoking | 吸烟史 | 0 否,1 是 | 0 | 0 |
| Height (in) | 身高 | 英寸 | 67 | 68 |
| Weight | 体重 | 磅 | 155 | 157 |
| BMI | 体质指数 | 千克每平方米 | 24.3 | 23.9 |
| Disease | 诊断 | PD 或 MSA | PD | PD |
| Disease Duration | 病程 | 年 | 5 | 17 |
| SBP | 收缩压 | 毫米汞柱 | 113 | 114 |
| DBP | 舒张压 | 毫米汞柱 | 69 | 74 |
| HR | 心率 | 次每分 | 70 | 62 |
| Walk-Duration | 四米步行用时 | 秒 | 3.84 | 3.37 |
| Walk-NoSteps | 步数 | 步 | 8 | 7 |
| AverStride (in) | 平均步幅,走行距离除以步数 | 英寸 | 18 | 21 |
| MOCA | 蒙特利尔认知评估总分 | 分 | 28 | 26 |
| Glucose | 血清葡萄糖 | 毫克每分升 | 98 | 83 |
| Gait Speed | 步速 | 米每秒 | 1.136 | 1.567 |
| BDI | 贝克抑郁量表总分 | 分 | 15 | 6 |
| F#words | F 字母词数 | 个 | 11 | 16 |
| A#words | A 字母词数 | 个 | 11 | 12 |
| S#words | S 字母词数 | 个 | 12 | 9 |
| FAS | 言语流畅性合计 | 分 | 34 | 37 |
字典没有收录的列包括:药房配药编号、排除原因、评估时点标记、患者总体印象改善、改良 Hoehn and Yahr 分期,以及基线块之后所有带后缀 2 与 3 的重复变量。这些列只能从列名本身推断含义。
单位也值得单独留意。身高用英寸、体重用磅、步幅用英寸,血压用毫米汞柱,血糖用毫克每分升,步速用米每秒;同一张表里英制与公制混排,与国际单位制并不统一。量表分则一律无单位,MoCA、BDI、FAS 与 UPDRS 的数值只在各自量表的语境里可比,跨量表求和没有意义。字典把这些差异写在单位列里,但只在它覆盖的那二十五项上。
2.3 一条记录的完整解剖
一行记录横跨五十二列,从左到右大致按「标识—人口学—基线—终点」排列。把 4 号受试者那一行按列切开,能看到一次完整评估的构成。
#-- 4 号受试者的宽表切片(列名与取值均照原文,未改动拼写)
Study No : 4
Pharmacy : 3-PD
excluded : (空)
IversusP : 0 #-- 0 表示安慰剂
Pre-Post : Pre #-- 首次出现的时点标记
Age : 53
Gender : 2 #-- 2 表示女性
Etnicity : w #-- 表内用首字母,字典用全称
Smoking : 0
Height (in) / Weight : 67 / 155
BMI : 24.3
Disease / Duration : PD / 5
SBP / DBP / HR : 113 / 69 / 70
Walk-Duration : 3.84 #-- 秒
Walk-NoSteps : 8
AverStride (in) : 18
MOCA : 28
Glucose : 98
Gait Speed : 1.136363636
HnH / PGI-I / BDI : 2.5 / 3 / 15
MOCA 2 : 29 #-- 后缀 2 为终点
F#words 2 / FAS 2 : 11 / 28
同一个人在同一行里出现两次分数:MOCA 与 MOCA 2、BDI 与 BDI 2、FAS 与 FAS 2。后缀 2 与后缀 3 并存,使「第二次评估」在表内有两个不同的列名体系。
后缀 3 只出现在认知总分与步行四项上,后缀 2 则覆盖整个终点块。这意味着所谓「第二次评估」在两处的指向不完全一致:有的变量只加了一次,有的加了两次。读表时若把 MOCA 2 与 MOCA 3 当成两个不同时点,会得到三次评估的错觉;而实际上受试者只做了基线与终点两次,多出来的后缀是录入时的分块痕迹,不是额外的访视。
2.4 缺失与占位的写法
缺失在这份表里不是一种写法,而是三种,外加两种特殊标记。
| 形态 | 出现位置 | 含义 | 处理建议 |
|---|---|---|---|
| mv | 血压、身高、体重、BMI、步速、步幅等列 | 缺失值标记,小写两字母 | 读入时按字符串处理并转空 |
| -99 | PD-Table2 的排除行 | 缺失占位,数值型 | 与真实取值区分,勿当异常值 |
| 空白 | 排除行的绝大部分列 | 未采集 | 读入后为空字符串或 NaN |
| n/a | 药房编号列的首行 | 不适用 | 保留原文,不转换为缺失 |
| excluded | 排除原因列 | 筛查失败或不良事件 | 转成布尔标记后剔除该行 |
把 mv 直接交给数值解析会得到字符串,把 -99 直接交给统计会拉低均值。两种错误都很常见,且在十四例的规模上足以改变结论方向。
2.5 与同类临床试验表格的字段差异
| 字段类型 | inipdmsa 的做法 | 常见公开库的做法 | 差异后果 |
|---|---|---|---|
| 主键 | 研究编号,另一列给药房配药编号 | 通常只有受试者编号 | 多一个可与分组对照的编码列 |
| 时点 | 同一行并排基线块与终点块,用后缀区分 | 长表,一行一个访视 | 需自行折叠,且后缀不统一 |
| 诊断 | 单列 PD 或 MSA | 常用 ICD 或 SNOMED 编码 | 无法直接与编码体系对接 |
| 缺失 | mv、-99、空白三种 | 约定单一标记或空值 | 清洗脚本需逐列判断 |
| 单位 | 英寸、磅、毫米汞柱混排 | 多倾向国际单位 | 需换算,且步幅用英寸 |
| 不良事件 | 只在排除原因里出现一次 | 单独事件表,含术语与严重度 | 无法做安全性汇总 |
| 方案偏离 | 无 | 常见偏离表 | 无法评估依从性 |
| 数据字典 | 二十五项,覆盖不全 | 覆盖全部列 | 有列需按名称猜含义 |
§3 试验设计与它的身份
3.1 这不是观察性队列,是随机对照试验的附表
整份数据的骨架由试验设计决定,而不是由数据采集决定。官方摘要给出的设计是概念验证、随机、双盲、安慰剂对照:受试者被分到鼻喷胰岛素或生理盐水,每日一次,每次四十国际单位,连续四周,然后比较基线与治疗后的认知与功能表现。
这个设计决定了三件事。第一,观察窗只有四周,任何关于长期进展的问题都超出数据范围。第二,双盲意味着分组信息在采集时不可见,因此表内只有最终的分组标记,没有盲底、没有随机化种子、没有区组长度。第三,安慰剂对照意味着「变化」必须相对于生理盐水组来读,单独看用药组的升降没有意义。
3.2 五次接触与两个可用时点
方案里受试者一共经历五次接触,但只有两次产生进入数据表的分数。
| 次序 | 接触 | 内容 | 是否进表 |
|---|---|---|---|
| 1 | 筛查访视 | 病史、神经系统查体、基础代谢面板、育龄女性妊娠试验 | 仅以纳入或排除体现 |
| 2 | 基线评估 | 全套量表与四米步行,照常服药状态下进行 | 是,无后缀 |
| 3 | 随访一 | 安全性随访 | 否 |
| 4 | 随访二 | 安全性随访 | 否 |
| 5 | 治疗终点评估 | 与基线相同的全套量表,当日给最后一剂 | 是,带后缀 2 或 3 |
两个随访访视在表内没有对应的列,这一点在使用时要记住:四周内的中间状态在这份数据里是空白的,任何「随时间变化」的曲线都只能画两个点。
3.3 量表工具箱
| 工具 | 测什么 | 结构 | 表内对应列 |
|---|---|---|---|
| 蒙特利尔认知评估 | 整体认知,含记忆、执行、注意、语言 | 单总分 | MOCA、MOCA 2、MOCA 3 |
| 言语流畅性 FAS | 音位流畅性与言语记忆 | 三字母各一分钟,合计 | F#words、A#words、S#words、FAS |
| 贝克抑郁量表 | 抑郁症状 | 二十一项 | BDI、BDI 2 |
| 改良 Hoehn and Yahr | 病情阶段 | 半级递增的分期 | HnH、HnH 2 |
| UPDRS 第一部分 | 智力、情绪、动机 | 分项求和 | updrs1_base、updrs1_tre1 |
| UPDRS 第二部分 | 进食、日常生活、行走与平衡 | 分项求和 | updrs2_base、updrs2_tre1 |
| UPDRS 第三部分 | 言语、震颤、强直、运动迟缓 | 分项求和 | updrs3_base、updrs3_tre1 |
| 运动迟缓分 | 手指拍击、姿势稳定、躯体迟缓与异动 | 五个项目双侧相加 | brady_base、brady_tre1 |
| 患者总体印象改善 | 受试者主观改善程度 | 七级 | PGI-I、PGI-I 2 |
| 四米步行试验 | 习惯步速下的走行能力 | 时间、步数与推算量 | Walk-Duration、Walk-NoSteps、AverStride、Gait Speed |
运动迟缓分的算法在官方方法段写得很具体:UPDRS 第 23、24、25、26、31 项双侧相加。运动不对称性则用第 20 至 26 项的偏侧分数估计。这两条算法说明了为什么第二张表要单列一个 brady 列,而不是让使用者自己从分项加。
3.4 四米步行试验的算法
步行部分的采集简单到可以用一句话说完:受试者以自己习惯的速度走完四米,记录用时与步数。由此派生出两个量。
| 派生量 | 官方给出的算法 | 单位 | 说明 |
|---|---|---|---|
| 平均步幅 | 走行距离除以步数 | 英寸 | 四米换算后除以步数 |
| 步速 | 距离除以时间 | 米每秒 | 单独成列,长小数位 |
以 4 号受试者为例,3.84 秒走完四米,按距离除以时间应得约 1.04 米每秒,而表内 Gait Speed 记为 1.136 米每秒。两列并存,换算口径页面未作说明,使用时若需要速度,建议直接用时间与距离自算,并注明所用口径。
3.5 数据身份卡
| 项 | 值 |
|---|---|
| 平台 | PhysioNet,RRID:SCR_007345 |
| 版本 | 1.0,2019 年 4 月 10 日 |
| 版本 DOI | 10.13026/bn1x-my19 |
| 最新版 DOI | 10.13026/2572-db54 |
| 论文 DOI | 10.1371/journal.pone.0214364 |
| 论文 PMCID | PMC6483338 |
| 试验注册号 | NCT02064166 |
| 主题词 | 萎缩、随机对照试验、认知评估、运动评估、帕金森病、胰岛素 |
| 页面访问量 | 当前版本 234 次,全部版本 234 次 |
| 获取方式 | 网页下载、wget 递归、AWS 命令行同步 |
§4 表格是怎么排的,以及排法留下的痕迹
4.1 一张宽表:基线块与终点块并排
PD-Table1.csv 的组织方式不是长表,而是宽表。一行一名受试者,列按块排列:先是标识块(编号、药房配药号、排除原因、分组、时点标记),再是人口学与体格块(年龄、性别、族裔、吸烟、身高、体重、体质指数),再是疾病与基线功能块(诊断、病程、血压、心率、步行、认知、血糖、抑郁、流畅性),最后是终点块,用后缀 2 与 3 重复同一批变量。
宽表的好处是一眼能看见同一个人的前后对比。坏处是列数翻倍、列名重复、时点信息藏在列名里而不是单独一列。同一张表在 R 或 pandas 里读进来,列名不是唯一的,按名字取列会取到两列。
按列数算,从 Study No 起的前五列是标识块,跨时点存在;紧接的八列是人口学与体格块,属基线;疾病与生命体征四列、步行与认知五列、生化与情绪三列、言语流畅性四列,全部属基线;然后是一个单独的时点标记列,仍跨时点;再往后十八列是终点重复块,从血糖起把基线那批变量重排一遍;最后四列是第二个终点块,只包含认知总分与步行四项。
九个列块里,只有两块跨时点。这意味着同一行既能被读成「一个人的基线」,也能被读成「一个人的终点」,取决于你取的是哪一段列。脚本若不显式指定列区间,很容易把两个时点混在一张图里。
宽表的好处是一眼能看见同一个人的前后对比。坏处是列数翻倍、列名重复、时点信息藏在列名里而不是单独一列。同一张表在 R 或 pandas 里读进来,列名不是唯一的,按名字取列会取到两列。
4.2 列名的重复与后缀约定
宽表里同一变量最多出现三次,但后缀并不统一:有的加「2」,有的同时存在「2」与「3」,有的完全不加后缀直接重名。
| 变量 | 基线列 → 终点列 | 后缀规则 |
|---|---|---|
| 收缩压 | SBP → SBP | 完全重名,无后缀 |
| 舒张压 | DBP → DBP | 完全重名,无后缀 |
| 心率 | HR → HR | 完全重名,无后缀 |
| 体质指数 | BMI → BMI 2 | 加空格与数字 |
| 步行用时 | Walk-Duration → Walk-Duration 2、Walk-Duration 3 | 两个终点列 |
| 平均步幅 | AverStride (in) → AverStrid (in) 2 | 终点列拼写少一个 e |
| 认知总分 | MOCA → MOCA 2、MOCA 3 | 三级后缀并存 |
| 抑郁总分 | BDI → BDI 2 | 单级后缀 |
| 时点标记 | Pre-Post → Pre-Post | 重名,两列均为 Pre 或 Post |
| 分期 | HnH → HnH 2 | 单级后缀 |
「AverStrid (in) 2」这一列既是拼写错误又是后缀,两个问题叠在一起。任何按字符串匹配列的脚本都会在这里断掉,稳妥写法是按列序号切片。
4.3 编码体系:数字、字母与文字混用
同一批语义在不同列用不同编码,字典只解释了其中一部分。
| 语义 | 编码方式 | 出现在 | 字典是否解释 |
|---|---|---|---|
| 分组 | 0 安慰剂,1 胰岛素 | IversusP、Group | 是 |
| 性别 | 1 男,2 女 | Gender | 是 |
| 吸烟 | 0 否,1 是 | Smoking | 是 |
| 族裔 | w、a 单字母 | Etnicity | 否(表内用字母,字典用全称) |
| 诊断 | PD、MSA 两字母 | Disease | 是 |
| 时点 | Pre、Post 单词 | Pre-Post | 否 |
| 配药号 | 数字加连字符加诊断,如 3-PD | Pharmacy | 否 |
| 排除 | 短语,如 excluded/screen failure | excluded | 否 |
族裔一列最能说明这批表的来历:字典的示例值写 White 与 African American,表里存的却是 w 与 a。字典是按人读的,表是按录入效率压过的,两者并不严格对应。
4.4 案例:4 号受试者的两次评估
4 号受试者是一个适合逐格看的例子,因为数据字典里的第一个示例值就取自这一行,任何读表的人都会先碰到它。
这位受试者五十三岁,女性,白人,不吸烟,身高六十七英寸,体重一百五十五磅,体质指数 24.3,诊断帕金森病,病程五年,随机分到安慰剂组,药房配药号 3-PD。基线时血压 113/69 毫米汞柱,心率七十次每分,四米步行用时 3.84 秒走八步,平均步幅十八英寸,蒙特利尔认知评估 28 分,血糖 98 毫克每分升,贝克抑郁量表 15 分,改良 Hoehn and Yahr 2.5 级,患者总体印象改善 3 分,言语流畅性 F 11、A 11、S 12、合计 34 分。
四周之后,同一套评估再做一遍,变化并不一致:认知从 28 升到 29,抑郁从 15 降到 13,分期仍是 2.5,总体印象仍是 3,而言语流畅性从 34 掉到 28。步行用时从 3.84 秒延长到 4.55 秒,步数仍是八步,平均步幅仍是十八英寸。
| 变量 | 基线 | 终点 | 方向 |
|---|---|---|---|
| 蒙特利尔认知评估 | 28 | 29 | 升 |
| 贝克抑郁量表 | 15 | 13 | 降(分数越低越好) |
| 改良 Hoehn and Yahr | 2.5 | 2.5 | 不变 |
| 患者总体印象改善 | 3 | 3 | 不变 |
| 言语流畅性合计 | 34 | 28 | 降 |
| 四米步行用时(秒) | 3.84 | 4.55 | 延长 |
| 步数 | 8 | 8 | 不变 |
| 平均步幅(英寸) | 18 | 18 | 不变 |
| 血糖(毫克每分升) | 98 | 98 | 不变 |
一个人身上同时出现升、降、不变三种方向,这正是均值表看不见的部分。安慰剂组里出现这种混合变化,是四周窗口内量表测量误差与状态波动的正常表现,也是为什么原论文要把组间差异而不是个体差异作为主要结论。
这个案例在后面的取数、清洗与配对章节里会被反复用到:它的行号、它的重名列、它的三种缺失边界,都足以检验一套脚本是否写对。
4.5 数据字典的示例行就是这条记录
字典给两个示例,第一个是 4 号,第二个是 5 号。对照可见示例值与表内取值逐项一致,包括那些看起来像噪声的长小数。
| 字典变量 | 示例一 | 4 号受试者表内值 | 是否一致 |
|---|---|---|---|
| Study Number | 4 | 4 | 一致 |
| IversusP | 0 | 0 | 一致 |
| Age | 53 | 53 | 一致 |
| Gender | 2 | 2 | 一致 |
| BMI | 24.3 | 24.3 | 一致 |
| Walk-Duration | 3.84 | 3.84 | 一致 |
| Gait Speed | 1.136363636 | 1.136363636 | 一致 |
| FAS | 34 | 34 | 一致 |
一致性说明字典不是另写的一份说明,而是从同一张表里抽出来的。它的价值在于提供了单位与编码解释,局限在于只覆盖二十五列。
4.6 表一与表二为什么不建议直接合并
两张表都有十六行、都以研究编号为主键,看上去可以直接 join。实际合并时会碰到三个问题。
| 问题 | 具体表现 | 后果 |
|---|---|---|
| 主键名不同 | 表一叫 Study No,表二叫 Study_No | 不重命名则无法连接 |
| 分组列重复 | 表一有 IversusP,表二有 Group,取值同构 | 合并后出现两列同义字段 |
| 疾病列重复 | 表一 Disease 为 PD 或 MSA,表二同 | 需择一保留 |
| 人群列重复 | 年龄、性别、族裔在两表都有 | 可能因录入差异产生冲突 |
| 空行处理不同 | 表一用空字符串,表二用 -99 | 合并后缺失标记混在一起 |
| UPDRS 只在表二 | 表一没有 UPDRS 任何列 | 必须合并才能做运动评分分析 |
正确做法是先统一主键名、把表二的 -99 与表一的空值都转成同一种缺失表示,再按编号左连接,并在连接后核对行数仍为十六。
§5 怎么把它取下来并读进内存
5.1 三种取数方式
| 方式 | 命令形态 | 适合 | 注意 |
|---|---|---|---|
| 网页整包 | 页面上的 Download ZIP | 一次性拿走全部 | 页面标注 7.5 MB,与实际文件体量不同量级 |
| 递归抓取 | wget 递归到版本目录 | 脚本化、可增量 | 会连带抓取索引页 |
| 云存储同步 | AWS 命令行同步开放桶 | 批量、可并行 | 桶名与路径固定,需 --no-sign-request |
不需要账号,不需要签署使用协议,下载即用。这也是这份数据最容易被低估的优点:一份临床试验数据,从看到页面到本地可用不超过一分钟。
5.2 取数并校验
#-- 建目录并抓取 1.0 版全部文件
mkdir -p data/inipdmsa && cd data/inipdmsa
wget -r -N -c -np https://physionet.org/files/inipdmsa/1.0/
#-- 只取三张表与校验和,避免连带索引页
BASE=https://physionet.org/files/inipdmsa/1.0
for f in PD-Table1.csv PD-Table2.csv Data_Dictionary.csv SHA256SUMS.txt; do
curl -sSLO "$BASE/$f"
done
#-- 校验下载完整性;校验和文件里含相对路径,先落到同目录再比对
sha256sum -c SHA256SUMS.txt 2>&1 | tail -8
5.3 读进内存并复原分组
import pandas as pd
base = "data/inipdmsa"
t1 = pd.read_csv(f"{base}/PD-Table1.csv", encoding="utf-8-sig")
t2 = pd.read_csv(f"{base}/PD-Table2.csv", encoding="utf-8-sig")
print("表一行列:", t1.shape) #-- (16, 52)
print("表二行列:", t2.shape) #-- (16, 16)
#-- 列名有重复,pandas 会自动改成 SBP.1 这类名字,必须显式确认
print("原始重复列:", [c for c in pd.read_csv(f"{base}/PD-Table1.csv", nrows=0).columns
if list(pd.read_csv(f"{base}/PD-Table1.csv", nrows=0).columns).count(c) > 1])
#-- 只保留真正进入分析的十四行
t1 = t1[t1["excluded"].isna()].copy()
print("进入分析的行数:", len(t1))
print("分组计数:", t1["IversusP"].value_counts().to_dict())
excluded 列只有两种非空写法:筛查失败与不良事件。用「非空即排除」判断即可,不必匹配具体短语。
5.4 把宽表折成长表
宽表的列名不规则,正则比手工列清单更稳。
import re
import pandas as pd
t1 = pd.read_csv("data/inipdmsa/PD-Table1.csv", encoding="utf-8-sig")
#-- 按列名末位的 2 或 3 判断时点,其余视为基线
def timepoint(col: str) -> str:
m = re.search(r"\s([23])$", col)
if not m:
return "baseline"
return "end" if m.group(1) in ("2", "3") else "baseline"
tidy = t1.melt(
id_vars=["Study No", "IversusP", "Disease"],
var_name="column",
value_name="value",
)
tidy["timepoint"] = tidy["column"].map(timepoint)
tidy["variable"] = tidy["column"].str.replace(r"\s[23]$", "", regex=True)
print(tidy.groupby("timepoint")["value"].count())
print(tidy["variable"].nunique(), "个去后缀变量名")
折叠之后会发现,去后缀的变量名仍有重名:SBP 在基线与终点各一列,折叠后同名同时点各两条。这类冲突只能靠列序号区分,无法靠名字。
5.5 用 SQL 做基线到终点的配对
---- 读入宽表后,把基线与终点两侧的关键分数配对求差
WITH wide AS (
SELECT
"Study No" AS sid,
IversusP AS arm,
Disease AS dx,
MOCA AS moca_base,
"MOCA 2" AS moca_end,
BDI AS bdi_base,
"BDI 2" AS bdi_end,
FAS AS fas_base,
"FAS 2" AS fas_end
FROM pd_table1
WHERE excluded IS NULL
)
SELECT
sid,
CASE arm WHEN 1 THEN 'insulin' ELSE 'placebo' END AS arm_label,
dx,
moca_end - moca_base AS d_moca,
bdi_end - bdi_base AS d_bdi,
fas_end - fas_base AS d_fas
FROM wide
ORDER BY arm_label, sid;
差值为正的含义随量表方向而变:认知与流畅性越高越好,抑郁量表越低越好。这条规则必须写进结果表的脚注,否则读者会把符号读反。
5.6 复算一次配对差异
import pandas as pd
from scipy import stats
t1 = pd.read_csv("data/inipdmsa/PD-Table1.csv", encoding="utf-8-sig")
t1 = t1[t1["excluded"].isna()].copy()
pairs = {"MOCA": "MOCA 2", "BDI": "BDI 2", "FAS": "FAS 2"}
rows = []
for base_col, end_col in pairs.items():
d = (t1[end_col] - t1[base_col]).dropna()
rows.append({
"变量": base_col,
"配对例数": len(d),
"差值中位数": round(d.median(), 2),
"符号检验 p": round(stats.wilcoxon(d).pvalue, 3) if len(d) > 5 else None,
})
print(pd.DataFrame(rows).to_string(index=False))
这里的 p 值只用于演示流程,不构成任何疗效结论。十四例的符号检验在最小可检测差异上非常迟钝,任何小于十的数量级差异都不应被解读。
5.7 取数时的四条硬规矩
第一条是先按排除列剔行,再算样本量。十六行里有两行不属于分析集,直接拿行数当样本量会高估两例,误差约百分之十四;在十四例的规模上,这个偏差足以改变一个组间比较的方向。
第二条是列名去重之后再按名字取列。四个列名在表内各出现两次,按名字取会静默返回第一列,也就是基线那一列。取终点数据时如果用名字,得到的其实是基线值,而这种错误不会报错,只会让差值全部变成零。
第三条是把两种缺失写法统一。mv 与 -99 语义相同,类型不同:前者是字符串,后者是数值。若只处理其中一种,数值列会整列变成对象类型,或让 -99 混进均值。
第四条是分组标记只用一列。表一的 IversusP 与表二的 Group 同义,连接后会出现两列同名字段,取值若有一处录入偏差就会互相矛盾,需要先仲裁再使用。
§6 与库内其他条目的关系
6.1 关系图谱
这份表在库内属于临床试验汇总表这一支,四周是最靠近它的几个邻居。
| 邻居 | 关系 | 差异 |
|---|---|---|
| 帕金森病影像类资源 | 同一疾病,不同模态 | 那边有影像,这边只有量表与步行 |
| 步态与运动类资源 | 共享四米步行这一测量传统 | 那边是连续信号,这边只有四个标量 |
| 电子病历类资源 | 共享表格形态 | 那边是诊疗流水,这边是试验随访 |
| 认知评测类资源 | 共享 MoCA 与言语流畅性 | 那边常用于筛查,这边用于疗效终点 |
| 其他小样本试验表 | 同一体裁 | 疾病、干预与量表各不相同 |
与步态类资源的关系值得单独说:四米步行试验在老年医学与运动障碍领域是标准工具,但它的产物通常就是时间与步数两个数。inipdmsa 沿用这套惯例,因此它和那些提供连续足底压力或加速度的库并不构成替代关系,只构成上下游关系——如果哪天真要做信号级分析,得去别处找波形,再按研究编号把这里的临床分数接上去。
6.2 检索路径
| 你想找的 | 在本库中检索 | 在 PhysioNet 上检索 |
|---|---|---|
| 帕金森病的量表数据 | 帕金森病 + 电子健康记录 | 主题词 parkinsons |
| 鼻喷给药的人体数据 | 鼻喷胰岛素 | 关键词 insulin |
| 小样本随机对照试验表 | 临床试验 + 帕金森病 | 主题词 randomized controlled trial |
| 多系统萎缩 | 神经退行性疾病 + 多系统萎缩 | 主题词 atrophy |
| 四米步行相关 | 步态与运动 | 关键词 gait |
检索时容易漏掉它,因为标题里没有「数据集」字样,也没有缩写。以疾病名加干预名组合检索,命中率最高。
§7 质量评估与局限
7.0 阅读本节前的一个前置校正
评估这份数据时最容易发生的一种误判,是拿数据集的尺子去量论文。论文关心的是组间差异是否显著,数据集关心的是这些数字能不能被重新读出来、能不能被接到别的流程里。两者评价的对象不同,结论自然不同。
第二个容易发生的误判,是把「小」直接等同于「差」。十四例在疗效推断上确实不够,但在教学、字段设计参考、清洗练习、结论稳健性演示这些用途上,小反而是优点:一个人可以在十分钟内把全部数字读完,并且记住它们。
第三个误判是把官方页面当成完整技术文档。它不是。页面给的是摘要级描述,字段级信息要靠字典与逐列读表补齐,两者的覆盖范围并不一致。
7.1 DAIMS 五维评分
按 DAIMS 五维框架打分,每维二十分,满分一百。这个框架在本站用于把可发现、可获取、可互操作、可复用、可引用五项分开评估,避免用一句「好不好用」笼统带过。分数是相对同类公开临床试验表的水平,不是绝对结论。
| 维度 | 得分 | 依据 | 扣分点 |
|---|---|---|---|
| 可发现 | 14 | 有 DOI、有 RRID、有六条主题词 | 标题不含缩写,页面访问量两百余次,站内检索易漏 |
| 可获取 | 19 | 免注册、三张表、三种取数方式 | 无查询接口,无按受试者筛选的 API |
| 可互操作 | 10 | 纯 CSV,编码为 UTF-8,主键清晰 | 列名重复、拼写不一、三种缺失写法、无标准术语映射 |
| 可复用 | 12 | 许可宽松,可自由再分发与商用 | 十四例、仅汇总层、无原始记录与盲底 |
| 可引用 | 17 | 版本 DOI 与论文 DOI 齐备,引用格式页内生成 | 平台侧无独立数据论文,两个 DOI 易混 |
| 合计 | 72 | — | — |
七十二分里扣得最重的是互操作。它给得出五十二列数字,却给不出一份能直接映射到 CDISC 或 OMOP 的对照表:没有变量代码、没有受控术语、没有单位标准化,连列名都要靠人去猜「MOCA 3」与「MOCA 2」的差别。这在单篇复现里可以忍受,在跨库合并时会变成实打实的工作量。
7.2 三处需要自己核对的地方
第一处是样本量的三个口径。官方摘要写十六人入组、八人与六人完成并进入分析,相加是十四;数据表有十六行,其中两行标着排除。三个数字分别对应入组、分析集与行数,各自成立。写方法学部分时应当在同一句里说清用的是哪一个,否则审稿人会追问剩下两人去哪了。
第二处是体积。页面在文件列表下方标注整包未压缩 7.5 MB,而五个文件逐个相加只有二十余 KB 的量级。两种口径并列,差额构成官方未说明。按 7.5 MB 规划存储不会出错,按它估算传输时间则会高估两个数量级。
第三处是步速。4 号受试者四米用时 3.84 秒,按距离除以时间应得约 1.04 米每秒,表内 Gait Speed 为 1.136 米每秒。§4.4 的案例里保留了两列原值,没有替官方选一个。若分析对步速敏感,建议自算并注明口径。
7.3 已知的、可枚举的偏差
| 偏差 | 方向 | 依据 | 后果 |
|---|---|---|---|
| 样本极小 | 效应不稳 | 分析集十四例,两组八与六 | 置信区间极宽,排序易翻转 |
| 单一诊断占绝对多数 | 多系统萎缩结论无支撑 | 十四例中仅一例为多系统萎缩 | 标题里的第二个疾病不能单独成组 |
| 观察窗短 | 只见四周内变化 | 方案为四周治疗期 | 无法评估长期疗效与安全性 |
| 无洗脱期描述 | 基线可能受既往用药影响 | 评估在照常服药下进行 | 药物背景噪声无法剥离 |
| 两家医院招募 | 外推受限 | 作者机构集中于波士顿 | 族群与地理构成单一 |
| 排除标准偏严 | 认知偏好的样本 | 排除痴呆与严重共病 | 上限效应,量表改进空间小 |
| 缺原始记录 | 无法复核录入 | 仅三张汇总表 | 抄录错误不可检测 |
| 缺盲底与随机序列 | 分组不可复现 | 只有最终分组标记 | 无法评估分配隐藏 |
7.4 外部验证矩阵
| 验证角度 | 可用材料 | 能验证什么 | 不能验证什么 |
|---|---|---|---|
| 论文摘要 | PLoS One 2019 摘要 | 入组数、分组数、干预剂量与周期 | 逐例分数 |
| 论文全文 | PMC6483338 | 统计方法与亚组描述 | 原始病例报告表 |
| 试验注册库 | NCT02064166 | 主要终点、纳入排除、样本量目标 | 个体数据 |
| 数据字典 | 二十五项变量 | 单位与编码 | 未收录的其余列 |
| 表内自洽 | 编号、分组、配药号三列交叉 | 分组是否一致 | 录入是否忠实于源文件 |
| 第三方复算 | 本页 §5.6 的脚本 | 配对差值方向 | 显著性推断 |
矩阵里最实用的一格是表内自洽:编号、分组标记与药房配药号三列互相可以对照,任何一列被改动都会露馅。这也是判断一份二手拷贝是否被篡改的最低成本办法。
7.5 它为何能持续:一份小表的长尾来自可核对
公开数据里活得久的,往往不是最大的那一份,而是能被反复核对的那一份。inipdmsa 的全部价值建立在「每个数字都能追到人」这件事上:十六行、三张表、一份字典,任何人下载后都能在几分钟内把论文摘要里的十四例、八与六对上。
它也因此长尾很慢但很稳。做鼻喷给药的研究者需要一份人体试验的字段清单时会翻到它;讲小样本试验为什么不可靠的教学材料会引用它;做数据清洗练习的人会拿它的重复列名当反面教材。这些用途都不需要它变大,只需要它一直在。
§8 生态位与历史
8.1 一条反常的上线时序
多数数据集是先有论文、再被平台收录。这一份的时序反了过来:数据页面标注的上线日期是 2019 年 4 月 10 日,论文的发表日期是同年 4 月 25 日,数据比论文早半个月公开。
| 时间 | 事件 | 依据 |
|---|---|---|
| 试验期内 | 十六人入组,十四人完成基线与终点评估 | 官方摘要与表内行数 |
| 2019-04-10 | PhysioNet 上线 v1.0,五个文件同日入库 | 页面日期与文件修改时间 |
| 2019-04-25 | 论文发表于 PLoS One | 论文 DOI 与卷期 |
| 2026 年 | 仍为 1.0,无新版本目录 | 版本页只列 1.0,1.1 路径不存在 |
页面另给出一个「最新版 DOI」,与 v1.0 的 DOI 不同,但版本列表里只有 1.0,且 1.1 路径返回不存在。两个 DOI 并存而只有一个版本可下,是引用时最容易踩的一处:写版本 DOI 更稳,写最新版 DOI 则可能指向一个尚无对应目录的标识。
8.2 这条研究线上的四个节点
鼻喷胰岛素不是新想法。官方背景段列出的三项早期工作,勾勒出它进入帕金森病之前的路。
| 节点 | 做了什么 | 与本数据的距离 |
|---|---|---|
| 2012 年系统综述 | 汇总鼻喷胰岛素对认知功能的影响 | 提供可行性依据 |
| 2014 年 2 型糖尿病研究 | 报告鼻喷胰岛素改善血管反应性与认知 | 提供给药与终点设计的先例 |
| 2015 年静息态连接研究 | 报告海马与默认网络连接增强,血糖不变 | 提供机制假设 |
| 2019 年本试验 | 在帕金森病与多系统萎缩中试安全性与初步疗效 | 就是这份数据 |
四个节点串起来的逻辑是:中枢胰岛素信号可能参与认知衰退,鼻喷途径可以绕过血脑屏障且不影响外周血糖,那么在帕金森病里也值得一试。这条逻辑是否成立,四周、十四例的数据回答不了,它只回答了「安全」和「方向可能对」。
8.3 它在平台上的位置
PhysioNet 以生理信号库起家,波形与重症监护数据是它的主干;临床试验的汇总表属于后来的支流,数量少、体量小、曝光低。inipdmsa 就落在这条支流上:页面主题词里没有一个是模态词,全是疾病、干预与评估类型。
包内结构也因此极简,没有分层目录:
inipdmsa/1.0/
├── PD-Table1.csv #-- 3.0 KB 基线与终点宽表
├── PD-Table2.csv #-- 818 B UPDRS 分表
├── Data_Dictionary.csv #-- 1.1 KB 25 项变量字典
├── LICENSE.txt #-- 19.9 KB ODC-BY 1.0 全文
└── SHA256SUMS.txt #-- 3.4 KB 逐文件校验和
五个文件平铺,没有 README,没有 schema 文件,没有加载脚本。所有说明都在网页上,下载之后本地没有任何导读。这是使用它时第一个要适应的地方:离线状态下,字典就是唯一的文档。
平台对这类表的收录逻辑与波形库不同:波形库要求通道、采样率、导联与单位可被工具自动解析,临床试验表则只要求「有人愿意公开、有 DOI、有许可」。标准因此松得多,代价是每一份表的字段约定都要单独读一遍。inipdmsa 的三个 CSV 没有任何机器可读的模式声明,列名即全部约定。
8.4 三种被复用的方式
| 方式 | 做法 | 产出 |
|---|---|---|
| 复现 | 按 §5.5 的配对求差,重算论文方向 | 一张差值表,用于核对结论 |
| 教学 | 用重复列名与三种缺失写法做清洗练习 | 一份清洗前后对照 |
| 借字段 | 抄它的量表清单与列命名,另建自己的表 | 一份变量清单草案 |
三种方式都不需要它变大。这也是它和那些动辄几十 GB 的影像库最不一样的地方:它的使用门槛在理解,而不在算力。
§9 使用指引
9.1 三种角色的路径
| 角色 | 最短路径 | 产出 |
|---|---|---|
| 临床研究者 | 读 §3.3 量表清单,按编号取每例分数,重算配对差 | 可与论文对照的基线表 |
| 数据工程师 | 先解 §4.2 的重复列名与 §2.4 的缺失写法,再折长表 | 可入库的整洁表 |
| 教学者 | 直接给学员三张 CSV 与一句话任务:把十六行解释成十四例 | 清洗与统计练习 |
三条路径的共同点是都要先处理行的问题再处理列的问题。行的问题只有一条:两行不属于分析集。列的问题有两条:四个列名重复,一个列名拼写错误。
可以用 §4.4 的案例做一次验收:以 4 号受试者为样本,按编号取行,按列区间取基线与终点,再核对认知、抑郁与流畅性三项的方向。三项应当是一升两降,与表内取值一致;若脚本跑出的方向与此相符,说明列区间与后缀判断都写对了。这也是最快的一次端到端检验,比通读五十二个列名省时间。
9.2 一条最短的可用流程
#-- 1. 取数(三个数据文件 + 校验和)
BASE=https://physionet.org/files/inipdmsa/1.0
for f in PD-Table1.csv PD-Table2.csv Data_Dictionary.csv SHA256SUMS.txt; do
curl -sSLO "$BASE/$f"
done
sha256sum -c SHA256SUMS.txt
#-- 2. 一行命令确认行数与列数
python3 -c "import pandas as pd; t=pd.read_csv('PD-Table1.csv',encoding='utf-8-sig'); print(t.shape)"
#-- 3. 剔除未纳入分析的两人,确认剩下十四人
python3 -c "import pandas as pd; t=pd.read_csv('PD-Table1.csv',encoding='utf-8-sig'); a=t[t['excluded'].isna()]; print(len(a), a['IversusP'].value_counts().to_dict())"
三步跑完,行数应为十六、列数应为五十二、分析集应为十四、分组应为八与六。四个数字对不上,说明下载或读入环节出了问题。
9.3 引用方式
页面自带六种引用格式的生成器,从 APA 到 BibTeX 一应俱全,并附一条平台层面的标准引用。
| 引用对象 | 标识 | 建议用途 |
|---|---|---|
| 数据 v1.0 | 10.13026/bn1x-my19 | 引用具体下载的这一版 |
| 论文 | 10.1371/journal.pone.0214364 | 引用研究结论与方法 |
| 试验注册 | NCT02064166 | 引用方案与终点定义 |
| 平台 | RRID:SCR_007345 | 方法学部分声明数据来源 |
@article{PhysioNet-inipdmsa-1.0,
author = {Novak, Vera and Novak, Peter},
title = {Safety and Preliminary Efficacy of Intranasal Insulin for
Cognitive Impairment in Parkinson Disease and Multiple System Atrophy},
journal = {PhysioNet},
year = {2019},
month = apr,
note = {Version 1.0},
doi = {10.13026/bn1x-my19}
}
论文与数据各有 DOI,引用时应同时给出:结论来自论文,数字来自数据版本。只引论文而不标数据版本,会让复现者不知道该下哪一版;只引数据而不引论文,则丢掉了方法学交代。
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 写作方式 | 人工阅读官方页面、三张 CSV 与论文摘要后撰写,AI 参与资料整理与文字组织 |
| 事实来源 | PhysioNet 项目页、Data_Dictionary.csv、PD-Table1.csv、PD-Table2.csv、Europe PMC 摘要 |
| 未做的事 | 未做分布统计,未重跑论文的统计检验,未申请原始病例报告表 |
| 数字口径 | 入组数与分组数以官方摘要为准,行列数与逐例取值以 CSV 为准 |
| 口径冲突 | 体积(7.5 MB 与逐文件合计)、步速(表列与距离除时间)两处并列,未替官方择一 |
| 未核实项 | 招募起止年份、随机化方法与区组长度、盲底存放方式 |
| 许可判断 | 按页面标注的 ODC 署名 1.0 表述,不代替法律意见 |
| 适用边界 | 仅描述数据资源,不构成临床用药或诊疗建议 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「这是一个帕金森病队列」 | 是一次为期四周的随机对照试验的参与者名单 | 官方摘要的设计描述 |
| 「有十六个样本可用」 | 进入分析的是十四例,另两行是筛查失败与不良事件退出 | 表内 excluded 列与摘要 |
| 「包含多系统萎缩的一组」 | 只有一例多系统萎缩,无法成组 | 诊断列的取值构成 |
| 「表里有原始步行信号」 | 只有时间、步数、步幅、步速四个标量 | 字典与列清单 |
| 「列名可以直接当字段名用」 | 四个列名重复,一个列名拼写有误,后缀 2 与 3 并存 | 表一表头 |
| 「缺失值都是空的」 | mv、-99、空白三种写法并存 | 表内逐列可见 |
| 「十六行就是十六个人」 | 有两行未采集任何评估值 | 排除行的空白与 -99 |
| 「四周内有多次随访数据」 | 表内只有基线与终点两次取值,无随访列 | 官方方法段与列清单 |
| 「可以直接拿来做分类模型」 | 十四例、两次时点,标签与样本量都不支持 | 分析集规模 |
| 「许可要求申请」 | 免注册下载,只需署名 | 页面访问策略与许可全文 |
FAQ
Q1:inipdmsa 的全名是什么,缩写怎么展开?
全名是 Safety and Preliminary Efficacy of Intranasal Insulin for Cognitive Impairment in Parkinson Disease and Multiple System Atrophy。官方页面没有给出缩写释义,短名是平台按标题首字母拼出的检索标识:INI 为鼻喷胰岛素,PD 为帕金森病,MSA 为多系统萎缩。正式引用应写全名。
Q2:到底有多少人?十六还是十四?
两个数都对,指的不是同一件事。十六是入组人数,十四是完成基线与终点评估并进入分析的人数,其中用药八人、安慰剂六人。数据表十六行,两行标着排除。写方法学时要说明用的是哪一个口径。
Q3:为什么数据比论文先上线?
页面标注上线日为 2019 年 4 月 10 日,论文发表于同年 4 月 25 日。数据先行的好处是论文投稿时可以把 DOI 写进数据可用性声明。两份材料的内容并不完全重叠:论文有统计方法与讨论,数据有逐例分数。
Q4:这批表能直接喂给机器学习模型吗?
不建议。十四例、两次时点、几十个高度相关的量表分数,任何监督学习都会过拟合。若一定要用,只能做特征工程的演示,并且必须按人划分训练与测试,不能按行划分。
Q5:表里为什么有重复的列名?
因为宽表把基线与终点并排放,第二次出现的变量本应统一加后缀 2,但收缩压、舒张压、心率与时点标记四列没有加,直接重名。读表时按列位置取,不要按列名建字典。
Q6:mv 和 -99 分别是什么意思?
都是缺失标记。mv 是小写两字母,出现在表一的血压、体格与步行列;-99 出现在表二的排除行,是数值型占位。两者语义相同但类型不同,清洗时应统一转成同一种缺失表示,避免 -99 被当成真实取值参与均值计算。
Q7:四米步行试验的数据够做步态分析吗?
不够。它只留下走行时间、步数、平均步幅与步速四个标量,没有加速度、足底压力或关节角度。若研究问题是步态的节律结构或姿态协调,需要另找带波形的数据源。
Q8:为什么步速和距离除以时间对不上?
以 4 号受试者为例,四米 3.84 秒应得约 1.04 米每秒,表内记为 1.136 米每秒。页面与字典都没有说明步速的换算口径。若分析对速度敏感,建议自算并注明,或直接使用用时与距离两列。
Q9:许可允许商用吗?
ODC 署名 1.0 允许共享、修改与商业使用,义务是署名。页面访问策略写明任何人只要遵守许可即可访问。署名时应同时给出数据版本 DOI 与平台名,具体条款以包内许可全文为准。
Q10:两个 DOI 该引哪个?
引你实际下载的那一版,即版本 DOI。页面另有一个「最新版 DOI」,但版本目录里只有 1.0,1.1 路径不存在。若期刊要求引最新版,应同时注明所用版本号,避免读者找不到对应文件。
Q11:能据此说鼻喷胰岛素有效吗?
不能。论文自身的措辞是安全性与初步疗效,并明确呼吁更大规模研究。十四例、四周、单中心,这三个条件中的任何一个都足以让疗效结论停留在假设层面。这份数据的用途是核对与复现,不是提供证据等级。
术语表
| 术语 | 含义 |
|---|---|
| inipdmsa | PhysioNet 的短名,由标题首字母拼合,非官方缩写 |
| 鼻喷胰岛素(INI) | 经鼻腔给药的胰岛素制剂,本试验剂量为四十国际单位每日一次 |
| 概念验证试验 | 以可行性、安全性为首要目的的小样本研究 |
| 双盲 | 受试者与评估者均不知分组,本数据只保留最终分组标记 |
| 安慰剂 | 本试验使用生理盐水 |
| UPDRS | 统一帕金森病评定量表,本数据用运动障碍学会修订版 |
| MoCA | 蒙特利尔认知评估,总分越高认知越好 |
| FAS | 言语流畅性测验,要求一分钟内说出以 F、A、S 开头的词 |
| BDI | 贝克抑郁量表,二十一项,分数越高抑郁越重 |
| Hoehn and Yahr | 帕金森病分期,常用半级递增 |
| PGI-I | 患者总体印象改善,七级主观评定 |
| brady | 运动迟缓分,由 UPDRS 五个项目双侧相加 |
| 四米步行试验 | 以习惯步速走四米,记录时间与步数 |
| 平均步幅 | 走行距离除以步数,本数据以英寸记 |
| 分析集 | 完成基线与终点评估、进入统计的十四例 |
| 排除行 | 标有筛查失败或不良事件的两人所在行 |
| 宽表 | 一行一例、多个时点并排为列的表格形态 |
| 长表 | 一行一个观测、时点单列成一列的表格形态 |
| 后缀 2 / 3 | 宽表中第二次、第三次出现的同义变量标记 |
| mv | 缺失值标记,表一使用 |
| -99 | 缺失值占位,表二排除行使用 |
| ODC-BY 1.0 | 开放数据署名许可,允许商用,要求署名 |
| RRID | 研究资源标识,本平台为 SCR_007345 |
| DAIMS | 本站用于评估数据集可发现、可获取、可互操作、可复用、可引用五维的框架 |
附录 A:核心数字核对表
| 项 | 值 | 来源 |
|---|---|---|
| 入组人数 | 16 | 官方摘要 |
| 分析人数 | 14(用药 8、安慰剂 6) | 官方摘要与分组列 |
| 排除人数 | 2(筛查失败 1、不良事件 1) | 表内排除列 |
| 诊断构成 | 帕金森病 13、多系统萎缩 1 | 表内诊断列 |
| 表一行列 | 16 行 × 52 列 | 逐行读表 |
| 表二行列 | 16 行 × 16 列 | 逐行读表 |
| 字典变量数 | 26 | Data_Dictionary.csv |
| 重复列名 | 4 个(收缩压、舒张压、心率、时点标记) | 表一表头 |
| 文件数 | 5 | 目录列表 |
| 干预剂量 | 40 国际单位,每日一次 | 官方摘要 |
| 治疗期 | 四周 | 官方摘要 |
| 版本 | 1.0,2019-04-10 | 页面版本栏 |
| 许可 | ODC-BY 1.0 | 页面与许可全文 |
| 页面访问量 | 234 | 页面访问统计 |
附录 B:数字的来源分层
| 层级 | 数字 | 说明 |
|---|---|---|
| 官方页面 | 16、8、6、40 国际单位、四周、7.5 MB、234 次 | 摘要与页面栏位直接给出 |
| 文件本身 | 52 列、16 列、25 项、5 个文件、3.0 KB | 下载后逐文件读取 |
| 由文件推算 | 14 例分析集、13 与 1 的诊断构成、4 个重复列名 | 读表后统计,口径明确 |
| 未核实 | 招募起止年份、随机化方法、盲底 | 页面与文件均未载 |
附录 C:完整参考文献
- Novak V, Novak P. Safety and Preliminary Efficacy of Intranasal Insulin for Cognitive Impairment in Parkinson Disease and Multiple System Atrophy (version 1.0). PhysioNet. 2019. doi:10.13026/bn1x-my19.
- Novak P, Pimentel Maldonado DA, Novak V. Safety and preliminary efficacy of intranasal insulin for cognitive impairment in Parkinson disease and multiple system atrophy: a double-blinded placebo-controlled pilot study. PLoS One. 2019;14(4):e0214364. doi:10.1371/journal.pone.0214364.
- PhysioNet 项目页:https://physionet.org/content/inipdmsa/1.0/(访问日期 2026-10-28)。
- 试验注册:ClinicalTrials.gov NCT02064166。
- Open Data Commons Attribution License v1.0 全文,随包 LICENSE.txt。
- Pollard T, Moody BE, Lehman L, 等. PhysioNet as a global platform for biomedical research. Nature Health. 2026. doi:10.1038/s44360-026-00096-z.
附录 D:任务代码
把「十六行读成十四例」这件事写成可重复的检查,是最小的一次复用。下面这段代码同时核对行数、分组数与配药号的一致性。
import pandas as pd
t1 = pd.read_csv("PD-Table1.csv", encoding="utf-8-sig")
t2 = pd.read_csv("PD-Table2.csv", encoding="utf-8-sig")
#-- 行数:两表都应十六行
assert len(t1) == len(t2) == 16
#-- 分析集:排除列非空者剔除
a1 = t1[t1["excluded"].isna()]
a2 = t2[t2["Group"].astype(str) != "-99"]
assert len(a1) == len(a2) == 14
#-- 分组:表一 IversusP 与表二 Group 应逐行一致
merged = a1.merge(a2, left_on="Study No", right_on="Study_No")
assert (merged["IversusP"] == merged["Group"]).all()
print(merged["IversusP"].value_counts().to_dict()) #-- {1: 8, 0: 6}
#-- 配药号:数字部分应与研究编号一致
kit = merged["Pharmacy"].str.split("-").str[0].astype(int)
bad = merged.loc[kit != merged["Study No"], ["Study No", "Pharmacy"]]
print("配药号异常行:", len(bad))
若四步全部通过,说明下载、剔除、连接三个环节都没有引入错误。任何一步报错,都先去核对编码与缺失写法,而不是怀疑数据本身。想进一步验证读表逻辑,可以把 §4.4 的案例那一行单独取出来,逐列打印,与文中列出的九个变量对照。
附录 E:如果只记五件事
| 一件事 | 一句话 |
|---|---|
| 它是什么 | 一次四周、十四例的鼻喷胰岛素试验的汇总表 |
| 它有什么 | 三张 CSV:五十二列宽表、十六列 UPDRS 表、二十五项字典 |
| 它没有什么 | 没有影像、波形、原始记录、访视流水、盲底 |
| 它最适合 | 复现核对、字段设计参考、数据清洗教学 |
| 它最不适合 | 训练模型、亚组推断、疗效结论 |
编辑说明
本篇的全部事实取自 PhysioNet 项目页(2026-10-28 访问,HTTP 200)、随包的三张 CSV、许可全文,以及 Europe PMC 收录的论文摘要。行列数与逐例取值来自下载后的文件,未使用任何二手转述。体积与步速两处存在官方口径不一致,文中并列保留,未作取舍。未覆盖的内容包括:招募起止年份、随机化与盲底细节、原始病例报告表、随访期的安全性数据。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- nacc — 共享标签:电子健康记录 / 临床电子病历 / 神经退行性疾病
- mimic-br — 共享标签:电子健康记录 / 临床电子病历
- pcornet — 共享标签:电子健康记录 / 临床电子病历
- seer-nci — 共享标签:电子健康记录 / 临床电子病历
- hrs — 共享标签:电子健康记录 / 神经退行性疾病
- emrqa — 共享标签:电子健康记录 / 临床电子病历
- pad-ufes-20 — 共享标签:电子健康记录 / 临床电子病历
- mc-med — 共享标签:电子健康记录 / 临床电子病历
- virus-registry — 共享标签:电子健康记录 / 临床电子病历
- outcomerea — 共享标签:电子健康记录 / 临床电子病历
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

