医学数据统计分析
核心原则
- 把研究方案、统计分析计划和数据字典置于列名猜测之前;数据结构不能单独证明研究设计、结局角色或因果关系。
- 原始数据只读。不要覆盖、重编码或“清洗”原文件;把派生数据、脚本和结果写到项目输出目录。
- 先提交分析计划,获得用户明确批准后再运行针对原始数据的统计代码。用户只要求计划时,不执行分析。
- 不自动安装软件包、不上传可识别数据、不调用外部服务。需要新增依赖、联网或移动数据时先说明并征得同意。
- 不编造、手工修补或静默替换数值。每个稿件数值都要能追溯到数据版本、脚本、日志和实际执行输出。
- 发现模型失败、假设不满足或数据异常时停下说明;不要为了得到“显著”结果自动切换模型、删样本或改结局。
所需输入
尽量取得:
- 原始数据文件及其授权范围;
- 数据字典、缺失值编码、单位和取值标签;
- 研究方案、注册信息或已有统计分析计划;
- 主要/次要结局、时间点、分析人群和效应量;
- 暴露或干预、对照、聚类/重复测量结构及候选协变量;
- 既有清洗记录和数据版本标识。
缺少关键输入时仍可做只读盘点,但把角色标为 unknown,不要凭列名进入正式建模。
工作流
1. 确认范围与隐私
- 确认用户有权处理该数据,并识别直接标识符、准标识符和敏感字段。
- 优先在本地处理;展示结果时只给必要的汇总,不回显患者级记录。
- 记录输入文件路径、文件哈希或版本标识、读取时间和实际使用的软件环境。
- 只在用户指定的项目目录创建输出;不要改动源文件。
2. 做只读数据画像
至少检查:
- 行列数、变量类型、标签、单位和编码;
- ID 唯一性、重复行、重复测量和聚类结构;
- 缺失比例、缺失模式及疑似特殊缺失码;
- 不可能值、跨变量逻辑、日期顺序和观察窗口;
- 结局事件数、组别人数、稀疏单元格和实际分析样本量;
- 数据字典与文件内容是否一致。
不要把 999、空字符串或极端值自动改为缺失;先让用户或数据字典确认。把发现分成:
blocking:无法可靠确定关键变量、编码或分析人群;needs_decision:存在多种合理处理方式,需要在计划中选择;note:不阻止计划,但应记录到方法或局限性。
不要使用固定缺失率或综合“数据质量分数”代替具体判断。
3. 锁定分析问题
逐项确认:
- 研究设计、抽样方式和观察单位;
- 主要 estimand(要估计的目标量)及分析人群;
- 结局类型、时间点、方向和临床重要阈值;
- 暴露/干预、比较组和参考类别;
- 混杂控制依据、聚类/重复测量和时间依赖结构;
- 缺失数据、多重比较、亚组和敏感性分析安排;
- 预设分析与探索性/事后分析的边界。
协变量选择以方案、临床知识和因果结构为依据,不以单因素 P 值筛选替代。
4. 起草并审批分析计划
使用统计分析计划模板,为每个目标写明:
- 分析人群、结局、效应量和置信区间;
- 主模型、选择理由、关键假设及适用诊断的计划、输出定位和不足时的待审批处置;
- 协变量、交互项、聚类或重复测量处理;
- 缺失数据、异常值、多重性和敏感性策略;
- 软件、包、版本、随机种子和预期输出;
- 计划外分析如何标记。
向用户展示计划、尚未解决的问题和会改变结论的选择。只有收到明确批准后才进入执行;计划变更后重新记录版本和批准。
5. 生成并运行最小脚本
- 沿用项目已经批准的统计引擎;没有既定选择时优先生成可独立运行的 R 脚本。
- 使用项目相对路径或明确的输入参数,不写死个人目录。
- 在脚本中保存样本筛选、变量转换、模型公式、随机种子、包版本和会话信息。
- 缺少依赖时报告缺项和安装命令,等待用户决定;不要自动安装。
- 每次执行保存命令、标准输出、错误日志和退出状态。
- 失败后先诊断根因。任何模型替换、数据排除或假设变更都要回到计划并获得批准。
6. 验证结果
逐项核对:
- 原始样本数、各排除步骤和最终模型样本数能否对账;
- 事件数、组别分母、缺失排除和重复记录处理是否一致;
- 估计值、区间、单位、参考组和效应方向是否正确;
P值与区间是否按计划的检验方法和报告口径解释;合法的调整P值与未调整CI并存时标明口径,不强求配套调整CI;- 按实际模型选择适用诊断,复用计划第4节记录评估对象/方法、观察结果与输出或图定位、适用假设和局限, 以及资料不足或发现问题时的处置与批准记录;不要求每个模型完成所有诊断;
- 表格、图和结构化结果是否来自同一次已执行分析。
不一致时保留原始输出并报告差异,不要静默改数。诊断记录区分已评估、发现问题与证据待核实;仅有
非显著P值不能证明假设成立。缺少适用证据标为 unverified,不据此断言模型无效或将其写成诊断通过。
如Cox检验与残差图提示不一致,保留两者并回到获批计划评估;不自动切换模型。
7. 交付与交接
建议在项目中交付:
textpaper/analysis/analysis-plan.md paper/analysis/analysis.<R|py> paper/data/stats/analysis-results.<json|yaml> paper/data/stats/diagnostics.md paper/data/stats/run.log paper/data/stats/session-info.txt
文件名可适配现有项目。用稳定工件ID analysis-results 显式映射实际路径(如上面的
paper/data/stats/analysis-results.json 或用户已有的 paper/analysis/structured_results.yaml),
并记录 id/path/version/sha256;哈希取原始文件字节,不以文件名、存在性或版本标签代替。
不要改名、复制成另一套权威结果或生成不存在的输出。具体交接字段见计划模板第7节。
每项结果用稳定 analysis_id 绑定人群、结局、时间点、比较/参考组、效应尺度及单位、估计值、CI、分母、
来源工件及定位、执行状态。CI、分母或比较组不适用时用null并写明理由;事件数、P值及各自调整口径、
模型和调整集按实际分析提供,不把一种统计模型强加给所有结果。保留HR/OR/RR原尺度,不自动换算。
只有实际执行成功且来源核实的结果才能作为已验证结果交给写作;缺来源、未执行或失败结果保留但标为
未核实。来自其他软件、统计人员且可追溯的既有输出同样有效,不能要求先重跑本技能。
如用户请求数值对账,可交给 dyz-med-results 的结构化清单检查;它不运行模型,也不通用提取Word/PDF。
现有YAML保留路径,标准库工具需显式规范化JSON时应另建派生工件并绑定原件;人工复核转换对应关系。
检查记录按项目工件合同绑定所有相关输入版本/哈希,报告与引用其哈希的独立记录分开保存;输入改变后
旧检查不得继续作当前证据。无passport仍可独立交接,不强制安装或导入兄弟技能。
系统综述的检索、筛选和提取先交给 dyz-med-screening-pipeline;本技能只处理获批的统计合成计划。
必须人工确认的情形
- 研究设计、主要结局、分析人群或关键编码不明确;
- 非劣效/等效界值、临床重要阈值或多重性策略缺失;
- 小样本、稀疏事件、完全/近完全分离、复杂抽样或多个非标准结构并存;
- 需要删除记录、插补、改结局、改模型或新增依赖;
- 模型不收敛、关键假设不满足或结果之间无法对账;
- 任何可能改变主要结论的计划后修改。
完成标准
- 原始数据未被修改,隐私边界已记录
- 关键变量和分析人群已确认
- 分析计划有版本并获明确批准
- 脚本、日志、软件版本和数据版本可追溯
- 所有稿件数值来自成功执行的输出
- 样本数、效应量、区间、诊断和图表已核对
- 偏离计划及失败分析均被保留和说明


