R 生物统计执行
本 skill 把已经确认的研究问题转成最小、可运行、可核验的 R 分析。
1. 输入与方法
- 读取本轮必要输入;项目执行或正式发布时,再读取项目
CLAUDE.md、PROTOCOL、SAP、配置、方法决定与尚未解决且需要后续处理的事项。 - 确认分析集、暴露或干预、终点、比较、时间零点、协变量和主要方法。多个合理口径会改变答案时先确认。
- 多个产物共享变量但口径不同时,在当前计划或项目既有状态文件中列出每项产物的分析数据、缺失处理、关键方法参数和样本量呈现;用户纠正后先更新这份当前口径,再修改受影响代码。不得把一个产物的插补、完整病例或检验选择外推到另一个产物,也不为已有明确口径另建清单文件。
- 从最早输入核对字段、类型、键、重复、缺失、范围和逐步样本量。
- 方法必须匹配 estimand、研究设计、结局类型、时间结构和抽样设计,不按包的便利性替代研究问题。
按本轮实际方法读取对应参考。只要新增、修改或重构 R 代码,必须先读 代码风格,在编写过程中按其组织主线,并在运行前检查受影响脚本;这不是可跳过的格式建议。需要选择或替换 R 包、准备编写新的辅助函数,或发现同类实现重复时,必须先读 包选择与复用。其他方法参考只在相应分析适用时读取:
- 描述统计:references/descriptive.md
- 回归与诊断:references/regression.md
- 生存分析:references/survival.md
- 中介分析:references/mediation.md
- Meta 分析:references/meta.md
- 预测模型:references/prognostic-models.md
统计图转 publication-figures;其通用绘图实现说明见 references/visualization.md,但正式投稿格式以目标期刊当前官方要求为准。
2. 实现与运行
- 沿用能够满足当前方法与输出要求的现有包、对象命名和脚本结构;需要新增实现时先核对成熟包的官方接口和当前项目版本。已有包能完整表达已确认口径时直接使用,只为路径、标签、格式或跨包衔接保留短小适配层,不重写包已经稳定提供的统计、整理或导出能力。
- 编写时保持分析主线、分节、函数边界和输出行为清楚。文件与参数预检集中在总运行入口,稳定科学不变量留在最接近风险的位置,本次运行与显示核验放入相应检查步骤;不要让普通分析或表图脚本被重复输入检查、逐项结果互证及嵌套失败分支主导。
- 项目没有相反的既有规范时,以 tidyverse 作为正式研究代码的整体默认表达方式:连续数据变换优先管道,批处理优先
purrr,字符串、分类和读写分别优先使用相应 tidyverse 包。仅在底层工具、性能瓶颈、包接口或基础 R 明显更清楚时局部采用其它写法,并保持同一分析主线一致;不得在一次分析中无理由改成大量循环、标量if/else、data.table或基础 R 拼装。 - 发现跨脚本重复工具、无意义控制台输出或把长篇论文正文写成 R 字符向量时,在本次受影响范围内按
code-style.md收束后再运行。 - 原始数据只读,处理后数据写入项目规定的结果目录。
- 只有随机抽样、模拟、重采样、数据拆分或随机算法固定并记录种子。
- 普通 R 包缺失时按
biostat-principles的依赖政策在项目隔离环境补齐;失败不得静默换包、换方法或改用 Python。 - 多行代码写入
.R文件。局部任务直接运行目标脚本;项目执行和正式发布通过run_pipeline.R从项目根启动新的Rscript --vanilla进程,并按明确清单和已确认顺序运行正式分析脚本。论文装配、长期检查和本次验收按各自职责单独运行,不因编号或可被调用而混入分析入口。 - 非机械修改
.R后,先在新 R 进程执行parse(file = "<受影响脚本>"),通过后再运行受影响的最小入口或总运行脚本。语法通过只是一道即时门禁,不能替代实跑、样本量、估计、诊断和输出检查。 - 核对完整输出、样本量链、缺失、估计范围、区间、收敛、适用的模型假设和预期文件;warning、error、failed、nan 不得略过。
发现方向反转、无穷估计、异常缺失或样本量跳变时回到最早来源。可能改变口径或结论时停下报告,不通过删记录或改模型掩盖。
3. 结果及其使用文件
项目执行和正式发布的关键结果使用 scripts/emit_summary.R 写入 results/results.yaml。调用 add_result() 时必须填写实际生成结果的脚本、脚本中提取结果的对象、输入文件或其哈希值、分析集、运行编号,以及实际使用该结果的文件;禁止直接修改 YAML。文件结构和旧项目读取方式见 结果数据文件。
表格、图件、论文、报告和 PPT 按每项结果的固定名称从 results/results.yaml 取数。结果改变时应重新运行实际生成结果的脚本,并同步更新所有使用该结果的文件。方法选择或方案偏离写入 DECISIONS.md;总运行脚本自动记录实际命令、状态、输入输出文件哈希值和环境信息。只有需要后续补充材料、外部资源或由用户决定的事项才写入 BACKLOG.md。
试新方法按 biostat-principles 的 E0/E1/E2 分级隔离;未达到预设条件或未经必要确认的方案不得覆盖主流程。
4. 完成条件
- 原始数据未改,声明脚本已实跑且状态成功。
- 输入行数、分析集分母、缺失与排除链可核对。
- 估计、区间、诊断和不确定性与研究目标匹配;异常已修复或明确解释。
- 新增或修改的 R 代码已按
code-style.md完成可读性检查;tidyverse 默认表达、研究对象式命名、分析主线、分节、函数边界、检查位置、重复工具、目录职责和运行输出均有可核对结论。涉及新包或自定义实现时,已按package-selection.md核对方法覆盖、版本接口、返回对象、依赖、警告和回退条件。仅有语法通过或全链成功不能替代这项检查,包选择检查也同样不能省略。 - 项目执行和正式发布时,
results/results.yaml、自动运行记录、方法决定和实际使用结果的文件保持一致。 - 局部任务只交付已经确认的产物和必要的复现说明,不补建范围外记录。