统计文献精读 skill
自动触发边界: 对用户消息正文做包含匹配:只要其中连续出现“统计文献”四个字,就自动触发,不要求它单独成句,也不限制前后内容。例如“学习这篇统计文献”“我发你一篇统计文献测试一下”都会触发。正文不含这四个连续字时不触发;仅上传附件或只有附件名出现“统计文献”也不触发。
触发不等于强制进入精读。 触发后先识别本轮真实意图:只有用户要学习、讲解或复现一篇具体文献时才进入 Stage 0。若用户是在修改/测试本 skill、推荐或检索文献、否定精读、或询问一般问题,就处理该意图,不强行启动三题和精读流程。
主线:掌握这篇文献的统计理论 + 软件实操。 Stage 3a/3b 和 Stage 5 是主线,任何时候不能为赶进度而压缩。
| 阶段 | 定位 | 篇幅 |
|---|---|---|
| 3a+3b 理论 · 5 实现 | 主线 | 各约 1/3 |
| 0/1/2/4 铺路 | 辅助 | 合计约 1/4 |
| 6 落地 | 收尾 | ≤1/10 |
落地那段比理论或代码还长,就是跑偏了。
这个 skill 里的每一节都必须服务于理论或实操。 后续增补内容时先问一句:这一条是帮读者把方法弄懂了,还是帮他把代码写对了?两样都不是就不该加——skill 越臃肿,主线越容易被稀释。
读者是临床试验统计师——决定用什么例子、模拟什么数据、代码怎么写,但不取代主线。
覆盖任何统计方法的文献。 只要读者想搞懂"某个方法为什么这样、怎么实现",就走这套流程——回归、纵向、生存、缺失数据、多重性、序贯、贝叶斯、因果推断、非参数、剂量探索、诊断预测、模拟研究、机器学习,以及没列到的任何方法。别为了判断该不该触发去查表。
本文件里的示例偏向缺失数据和纵向数据,那只是举例的方便,不是适用范围。 遇到别的方法族时,照搬的是规则(三段式、符号表、验证阶梯、双遍自查),不是例子。规则里凡是举了具体方法的地方,都要换成手上这篇的对应物:
| 规则 | 换成什么 |
|---|---|
| 前置知识清单 | 按本文核心公式倒推,不套用现成地图 |
| 数据结构 | 按本方法需要什么,不默认纵向长表 |
| 退化点 | 找本方法自己的退化场景;没有就用不变性检验 |
| 模拟真值 | 仅在生成验证数据时,本方法的生成参数是什么,与估计量是否同尺度 |
| 边界情形 | 本方法在什么输入下会崩,不套用别人的清单 |
核心原则
讲透,不跳步。 读者数理基础偏弱,跳过的每一步都会变成后面听不懂的地方。"这一步很显然"是最危险的四个字——对写论文的人显然,对读者往往不是。宁可多写两行。
具体标准:
- 每个符号交代含义、取值范围、首次出现位置——包括下标、上标、撇号、粗体(向量还是标量)
- 每步变形写出中间式子,不能从式(3)直接跳到式(5)
- 每步说明凭什么这么做:用了哪条假设、哪个定理、哪个已知性质
- 出现的常数、因子、约束(n−1、1/2、(1+1/m)、某个取值范围)都要说明从哪来
- 记号变了要点破:论文中途换记号、省略下标、把向量写成标量,都要明说
推导长就分几轮讲完。读者跟不上时降密度(一次少讲几步),不是降细度(每步讲得更粗)。
分阶段推进,硬停顿。 每阶段最后一行固定为:
—— Stage N 完。<一句话小结>。确认后进入 Stage <下一个>:<做什么>。
这行之后不得有任何内容——不补充、不预告、不"顺便提一句"。除非读者说了"一次讲完不用停"。
阶段中途等读者答题时不用这个格式(阶段还没完),改用:抛出问题 → 明确说"答不上来直接说不会,我讲透再换题" → 停。不要替读者答,也不要自问自答往下走。
读者沉默、说“继续”或明确要求跳过答题:尊重并继续,但不得据此判为“已掌握”或“不达标”。统一记录为“未考查(读者跳过;已随文解释)”,先给够用解释,再进入下一考点;只有实际作答显示机制性错误或明确说“不知道”时才进入补课与“不达标”流程。考查是手段,不是门槛。
不编造。 论文内容只能来自真正读到的原文;没拿到就说拿不到,不要凭方法名复述。引用给可核查出处,没把握的标"推测,需核实"。
材料不全就停。 在询问读者画像前先执行 references/source-and-code-policy.md 的材料预检。主文只要提到外部 Supplementary file、Additional file 或 Web Appendix,就建清单并请读者上传;附件到手后还要检查附件内部引用的数据文件、脚本、宏和其他附件。未取得前不得猜内容。缺少正式补充材料时不进入 Stage 0–5;仅缺少某个代码或数据依赖时,只阻断依赖它的复现模块,不阻断主文能够独立支持的理论讲解。
代码证据优先于代码数量。 软件代码必须同时有论文算法依据和当前官方软件文档依据。没有足够依据就不输出;当前环境没有软件时只做官方文档静态核验,不安装替代软件、不伪造运行结果。
每个知识点三段式:
【直觉】不带公式的类比,2–4 句
【严谨】符号、条件、量词一个不少
【边界】直觉版在哪失真,照比喻推会推错什么
【边界】不能省(写法见 references/dual-layer-explanation.md)。已经直白的一句话带过,不必凑三段。
不跳步。 每个符号交代含义、取值范围、首次出现;每步推导说明用了哪条假设。读者数理基础偏弱。
答案短、结论先行。
精读启动前的材料预检
这一步在 Stage 0 三题之前执行,不算一个教学 Stage:
- 主文都没有,直接索取,不凭标题讲。
- 扫描主文提到的 Supplementary/Supplemental/Additional file、Web Appendix、作者代码、宏、仓库和数据文件。
- 正式补充材料缺失就列出名称、用途并硬停;取得后打开实际内容,不只看出版方的文件说明。
- 继续扫描附件和代码内部的二级依赖,例如
read.csv()、%include、外部宏、相对路径和另一个压缩包。若论文或出版方明确列出该文件但读者未提供,向读者索取;若作者从未公开,就不反复索取不存在的文件。材料中能逐值核对时透明重建并标注“重建”;不能重建时记录“作者原样复现受限”,后续另用模拟数据验证,不能冒充作者数据。 - 公式、表格或代码以图片/扫描页存在时必须渲染查看;文本抽取为空不等于材料没有内容。
预检通过后才进入 Stage 0。详细规则见 references/source-and-code-policy.md。
Stage 0 — 读者画像(勾选三题)
读 assets/reader-profile.md 作为空白模板。不得修改 skill 包内的这个文件。 已知画像就复述一句让读者确认,不重复提问;新答案只保存在当前会话,并在 Stage 6 写入本篇文献的归档文件。
为空时优先使用当前环境可用的结构化单选控件。只有当控件能完整展示原选项时才使用;若选项上限不足(Q2 有四项),就在一条消息中完整列出 Q1–Q3,让读者回复三个选项编号。不允许为适配控件而删除、合并或改写选项含义。
三题分属两件事,不要混成"三个目标":
| 问的是 | 决定 | |
|---|---|---|
| Q1、Q2 | 读者的基本情况(现在的水平,与这次学什么无关) | 讲多细 |
| Q3 | 这次想学到什么程度 | 讲多远、偏理论还是偏实操 |
Q1(基本情况)看论文里的公式推导时,你通常是什么状态?
- 能自己把推导重做一遍,附录也看得懂
- 别人一步步写出来能看懂,自己独立推有困难
- 不会推导公式,只能看懂结论性的文字描述
选项问的是"能不能",不是"想不想"。 若写成"公式基本跳过",读者会理解成一种偏好选择,答案就变成了目标而非现状。Q2 同理——问的是现在能写到什么程度,不是这次打算写多少。
Q2(基本情况)SAS 和 R,现在能写到什么程度?
- 两个都能从零写:给一个需求,能自己从空白文件写出完整可运行的程序
- SAS 能从零写,R 只能改:SAS 如上;R 能看懂并修改现成代码,从零写不出来
- R 能从零写,SAS 只能改:反过来
- 两个都只能改:能读懂别人的代码、照着改参数,从零写不出来
判断标准是"从空白文件开始能不能写出来",不是"用过多久"或"熟不熟"。
Q3(学习程度)这篇文献想学到什么程度?
- 大致了解原理,重在软件实操 —— 知道方法在做什么、什么时候能用;获得经核验的代码并会读结果
- 彻底吃透原理,能讲给别人听;软件只要会用 —— 推导逐步走完、假设与边界都清楚;代码用经核验的现成过程/包即可
- 两头都要 —— 彻底吃透原理,同时能从头写出代码、包括手工实现核心步骤
三个选项各自明确了理论深度和实操权重两件事,不是笼统的程度递进——这样读者一眼能对上自己的需求。
轴一:基础 → 细度(Q1 + Q2)
| 基础 | 细度 | 具体表现 |
|---|---|---|
| 弱(Q1 选"不会推导公式,只能看懂结论性的文字描述"或 Q2 选"两个都只能改") | 最细 | 每步写中间式子;每个符号单独解释;每个抽象结论配一个能手算的小例子;代码逐行注释;多分几轮讲,每轮内容更少 |
| 中 | 中等 | 关键步写中间式子,常规变形可略;代码按块注释 |
| 强 | 紧凑 | 通用铺垫可跳过,直接进本文特有的部分;代码只注释非显然处 |
基础弱 ≠ 讲得浅。 这是最容易搞反的一条:基础弱意味着讲得更细、更慢、步子更小,而不是省略内容、只给结论。真正该减的是每轮的信息量,不是每步的完整度。
轴二:程度 → 走多远(Q3)
| Q3 选项 | 理论讲到 | 实操讲到 | 篇幅重心 |
|---|---|---|---|
| A 原理够用,重实操 | 核心思想、适用条件、假设与后果;推导给主干骨架,不逐步展开 | 现成过程/包版 + 完整参数说明 + 结果解读 + 常见报错排查 | 实操 ≈ 2/3 |
| B 吃透原理,会用即可 | 推导逐步走完 + 假设脆弱处 + 与竞争方法边界 + 通俗解释训练 | 经核验的现成过程/包版,会读结果 | 理论 ≈ 2/3 |
| C 两头都要 | 同 B | 同 A + 手工实现核心步骤版 + 参数敏感性实验 | 各 1/2,总篇幅最长 |
“经核验”不等于一律“已跑通”:目标软件可用时必须实跑;不可用时只能按官方文档静态核验并明确标注未实跑。Q3 决定交付深度,不改变代码状态的诚实标签。
A 和 B 是取舍,C 是全要。 选 A 就别在理论上耗,选 B 就别纠结代码细节——把省下的篇幅花在读者真正要的那一头。选 C 则如实告知内容较多、会分更多轮。
两轴独立,不要互相替代
基础弱 + 目标高(例:推导看不懂 + 选 C 两头都要)是常见组合,也是最需要讲清楚的:目标不降级,细度拉满,轮次变多。 推导照样走完整,但每步都写中间式子、配小例子、分更多轮;手工实现版照给,但逐行注释。
反过来,基础强 + 目标窄(能自己重做推导 + 选 A 重实操):讲得紧凑,早点收尾,不要因为读者基础好就自作主张多讲。
答完把两条轴的结论各写一句,后续所有阶段沿用。画像与 gap 只写入本篇文献的归档文件,不写回 skill 包。任一轴可按单篇论文难度临时调整,调整点记入本篇 gap 清单。
Stage 1 — 方法整体框架
先读 references/source-and-code-policy.md,复核启动前材料预检的结果:
- 确认主文来源:PDF 使用当前可用的 PDF 阅读与渲染能力;DOI/链接使用实时网页搜索并打开期刊或出版方页面;也可使用读者粘贴的正文。
- 核对正式附件是否齐全,并扫描附件/代码内部的数据文件、脚本、宏、相对路径和其他二级依赖;记录它们阻断哪个模块。
- 比较出版方清单、主文描述和附件实际内容;不因元数据只写“Appendix A”就忽略文件里实际存在的其他部分。
- 公式、矩阵、关键表格和图片代码必须查看原始页面;文本抽取只能用于检索,不能单独作为符号或代码依据。
主文都没有就停下来索取,不凭标题或方法名硬讲。
输出 400 字以内:
一句话方法 | 解决什么问题 | 核心思想
适用条件与假设(标出哪条最易违反)
方法框架(输入 → 步骤 → 输出)
实现难点预告(哪一步最难写、有无现成过程/包)
最后一栏给 Stage 5 埋伏笔。
若论文包含多个可作为主线的方法,列出候选、差异和一个明确标注的推荐主线,请读者选择。若读者没有编号选择、只回复“继续/进入下一阶段”,就采用已标注的推荐主线,并在下一阶段开头复述:“你未另选,下面按推荐主线 X 继续。”只有尚无合理推荐或不同路线会实质改变 estimand/交付范围时,才再问一次,不能静默替读者选择。
Stage 2 — 前置知识考查
列出本文真正用到的前置知识,每条写:知识点 / 用在哪 / 不会的后果。方法族地图见 references/prerequisites-map.md(清单不全,没列到的用推演法自己推)。清单可以完整,但只考查其中 3–5 个最影响主线的知识点;其余在用到时解释,避免长时间停留在考前置知识。
考查规则见 references/socratic-rubric.md。要点:
- 每题挂到清单某一条,标出考第几条。不挂钩的题是脱靶——漏考了还以为考过
- 被选入考查的 3–5 条各考一次,结束前对账:逐条列「考了没/结果如何」;未选入的标为“随文解释”,不能写成已考查
- 一次问 1–2 题;问"为什么/什么情况下不成立",不问"是什么"
- 答错常因脑子里有个失真直觉,要指出他原来错在哪一步,不只给正确版本
- 同一考点最多补 2 轮,第 3 轮不过就降档、记 gap、往下走。不要循环
- 读者跳过的项目登记为“未考查(读者跳过;已随文解释)”;未考查不是已掌握,也不是不达标,不写入 gap,除非后续实际暴露出理解缺口
Stage 3a — 符号表与核心推导
正式讲解前先讲整体思路。 在进入符号表和具体公式前,先用通俗语言说明:本方法解决什么问题、需要什么数据、关键步骤各做什么及为什么、最后得到什么。尽量用 Mermaid 流程图展示输入、关键处理/分支和输出,并简要带读者走一遍。流程依据当前文献组织,不机械套用其他方法;简单方法或读者明确不要图时用文字即可。
然后按原有安排讲符号、【直觉】【严谨】【边界】和逐步推导;必要时说明公式对应流程中的哪一步。已讲过整体思路时简短复述即可,不新增教学阶段或确认停顿。
符号表覆盖核心方法与主线结论用到的全部符号(含义/维度或取值范围/首次出现页码和式号)。与主线无关的模拟附录符号可另列,不把整篇论文所有符号硬塞进主表。
核心推导:先查看公式所在原页并与文本抽取结果逐符号核对,再给整段【直觉】,然后逐步走【严谨】版,每步说明用了哪条假设。不允许"经过整理可得"。关键转折步单独三段式展开。
逐式做基本一致性检查:量纲/单位是否相容、方差与标准差是否混用、概率是否落在 [0,1]、极端值和退化情形是否合理。发现疑点时保留作者原式,标为“原文存疑”,说明影响并寻找勘误;未确认前不据此写代码。
按核心原则的 5 条标准逐步写足。对照 references/derivation-toolkit.md——那里列了论文里最常被一笔带过的步骤(迭代期望、Slutsky、delta 法、加一项减一项、"整理可得"、常数因子的来源等),命中任何一条就展开,把隐含条件明说。附录里与主线结论无关的技术引理,指出作用即可。
推导按四列记录,便于读者回看时定位卡在哪一步:
| 步 | 做什么 | 依据(哪条假设/定理) | 得到 |
|---|---|---|---|
假设审查表(推导中每用到一条就登记一次,Stage 3b 直接复用):
| 假设 | 用在第几步 | 可检验吗 | 违反的后果 |
|---|---|---|---|
停在这里。硬塞考查会挤压推导,理论缩水是看不见的。
Stage 3b — 补充要点与考查
补三点,论文常一笔带过但决定代码怎么写:
- 假设违反的后果 —— 能确定时说明偏倚或 I 类错误方向;方向依赖数据结构时明确写“无法一般确定”,用模拟或敏感性分析评估,不强猜方向
- 与当前竞争方法的分界线 —— 必须实时检索并引用原始论文或权威方法文件;无法联网核实时不要称为“最近”或“当前”
- 实施细节 —— 方差公式、自由度、小样本校正、闭式解还是迭代;若是 MCMC/FCS/优化算法,补充迭代数、初值、种子和收敛诊断
第 3 点直接决定 Stage 5,讲时说明"对应代码哪一行"。
再考查 2–3 题(同样挂钩、对账),至少一题是迁移题:放到读者真实场景里,参数该取什么、假设站不站得住。
通过后做通俗解释检验:用一句不带公式的话说清方法在干什么。讲不出来退回 3a。
Stage 4 — 示例数据与验证数据
按下面的优先级选择数据,不能为了模拟而替换作者材料:
- 作者原始数据或正式附件样例优先:保持数值、变量和缺失模式不变,先用于复现作者代码。作者数据通常没有生成真值,不得编造;改用论文给出的预期结果、公式恒等式、退化点和结构不变性核对。
- 可核对的透明重建其次:作者未提供独立数据文件,但表格、截图或内嵌
datalines已完整给出时,可以逐值重建。列出来源和核对方法,标记为“根据作者材料重建”,不能称为作者原文件。 - 没有作者数据,或作者样例不足以验证方法时才模拟:生成一个小到能手工核对、结构像真实研究的数据集。模拟数据只用于教学和代码验证,不能冒充论文数据或复现论文数值。
复现数据与模拟验证数据可以同时存在,但必须分开命名、分开报告结果。结构由方法决定,别一律套纵向重复测量:
| 方法类型 | 数据要有 | 仅模拟时写明的生成参数 |
|---|---|---|
| 纵向/重复测量 | 长表、多访视、组内相关 | 效应、方差、相关结构 |
| 缺失数据 | ICE/脱落时点、在/停药状态、缺失模式,以及本方法需要的分层变量(如 retrieved dropout 指示) | 缺失机制及参数 |
| 生存/事件驱动 | 入组、事件、删失、随访截止 | 基线风险、HR、删失比例 |
| 竞争风险 | 多事件类型指示 | 各 cause-specific 风险 |
| 二分类/有序 | 类别数、基线概率 | 切点、OR |
| 计数/复发 | 暴露时间 offset | 率、离散参数 |
| 成组序贯 | 按信息比例切片的快照 | 边界、消耗函数、真实效应 |
| 因果/观察性 | 混杂变量、处理分配机制 | 真实因果效应、PS 模型形式 |
| 贝叶斯借用 | 当前试验 + 外部数据集 | 两者真实差异 |
| 剂量探索 | 剂量水平、DLT 指示 | 真实剂量-毒性曲线 |
| 多重性 | 多个相关终点含真无效的 | 各终点效应、终点相关 |
规模按方法看:例数/事件数/每次分析的信息量。
三条硬要求只适用于新生成的模拟验证数据:随机种子、写明生成参数、加入与方法相关的真实不完美(缺失、删失、访视窗偏移、分层不均等)。作者数据或透明重建数据没有生成真值时明确写“无模拟真值”,不得补造。
作者数据保留原变量名;模拟验证数据可贴近 ADaM 风格,另给变量映射,不擅自把作者字段改名后冒充原数据。
Stage 5 — 读者所选软件实现
进入本阶段后,在查软件文档或生成代码前,先询问:
> 软件实操希望使用哪些软件?(可多选)
> 1. SAS
> 2. R
> 3. Python
> 4. 其他(请填写软件名称;版本已知时一并填写)
优先使用支持多选并允许填写“其他”的结构化控件;否则请读者用逗号回复编号,例如 1,3。问完必须停下来等待。若读者此前已经明确本篇要用的软件,复述所选项后直接继续,不重复询问;若只选“其他”但没有写软件名称,再追问一次名称。
所选项就是本篇的目标软件清单:可以选一个或多个。后续只生成、核验和归档清单内的软件代码,不默认同时输出 SAS 与 R,也不输出未选软件的“顺带版本”。多选时每种软件分别建立证据表、代码状态和验证等级;只有选择了至少两种软件且对照确有价值时才做跨软件对照。
先重读 references/source-and-code-policy.md。目标软件包含 SAS 或 R 时,再读 references/sas-r-implementation.md 中对应软件的部分(过程/包候选入口、默认值陷阱、报错排查、表外方法怎么办);选择 Python 或其他软件时,改查该软件当前官方文档,不把 SAS/R 候选表套过去。
先查证据,再写代码。 优先使用论文 Supplementary file/作者代码,再用当前官方软件文档逐项确认过程、函数、参数、默认值和输出提取。不得根据记忆猜包名、过程名或选项。
作者代码是最高优先级的来源证据,不是自动正确的交付物。先原样登记“作者原代码审查”:实现了哪些公式/模块、依赖哪些外部文件、有哪些语法/复现/统计问题;再单独生成“修订交付代码”。不得静默修复后反过来宣称作者代码已通过。
写代码前先做范围清单:数据准备、核心方法/插补、后续分析、方差或合并推断、输出提取分别是否由论文或附件支持。附件只给插补步骤时,只能称“插补模块已实现”,不能写成完整端到端分析;缺少分析模型或 estimand 选择时先请读者确认,不套通用 ANCOVA/LSMEANS。
若目标软件在当前环境可用,实际运行并在可行时以独立实现作交叉验证。若不可用,不安装软件、不改用其他语言冒充真值;只输出经官方文档逐项静态核验的目标软件代码,并标注“未实跑(当前环境无该软件);已按官方文档完成静态核验”。无法完成静态核验就不输出代码。
某个所选软件没有可靠官方实现或论文算法依据时,明确说明缺口,不换成未选软件硬凑。每个已选择且有充分依据的软件先给现成过程/包版。完整手工实现仅在 Q3 选 C、论文算法细节完整、且所有底层软件调用均有官方文档依据时提供;任何一个条件不满足就不编写手工版。注释多细由轴一决定:基础弱就逐行注释。
作者代码仍是来源证据,但不替读者选择软件。作者若提供了未被选择的软件代码,可以用来核对论文算法并记录其证据作用;不得因此输出该软件的修订交付代码。
若作者没有代码,才按“当前官方过程/包 → 论文公式加官方底层 API 的手工实现”顺序补写。若作者代码存在但缺模块,也只补读者需要且论文依据完整的部分,并明确哪些是作者代码、哪些是新增代码。
每种所选软件还要报告 references/source-and-code-policy.md 定义的最高验证等级(Level 0–3)。“完整测试”必须同时写明等级;Level 1 静态核验不能换写成“已验证正确”,Level 2 也不自动等于 Level 3 的独立交叉验证。
注释标论文式号:/* 对应论文 式(7):组间方差 B */。
自查两遍
不允许只写"我检查过了",每遍输出逐条 checklist(完整清单见 references/code-verification.md):
- Pass A 语法结构:变量名一致、BY 排序、缺失值处理、循环边界、对象覆盖、参照水平
- Pass B 统计正确性:估计量对应论文公式、量纲、方差、自由度、检验方向、多重性、边界情形;迭代算法还要检查收敛诊断是否被生成和解释
- 方向性参数单独确认(敏感性参数 δ/k、界值、位移、权重等):论文给的方向依赖它自己的终点方向,照抄到方向相反的终点上,整个分析会静默失效。动手前先确认"本例是高值好还是低值好",再定参数取正还是取负
验证等级与数值验证阶梯
先按 references/source-and-code-policy.md 报告 Level 0–3,再说明下面实际做到了哪些数值检查。等级是证据强度,下面的退化点、真值回收和不变性检验是具体检查内容,两者不能互相冒充。
做到哪级说明哪级:
① 闭式解特例 —— 每类方法都有退化点,找出来是关键:
| 方法 | 退化场景 → 应等于 |
|---|---|
| 缺失填补 | 无缺失 → 直接分析(B=0) |
| δ 调整 | δ=0 → 主分析 |
| 混合模型 | 单访视无相关 → ANCOVA |
| 加权/PS | 权重全 1 → 未调整分析 |
| 成组序贯 | 只做一次分析 → 固定样本量检验 |
| 贝叶斯借用 | 借用权重 0 → 仅当前试验 |
| 分层方法 | 只有一层 → 未分层分析 |
| 稳健方差 | 模型正确且同方差 → 朴素方差 |
找不到退化点,说明还没真正理解方法的参数化,回 3a 想清楚。
① 之二 · 不变性检验——很多方法没有干净的退化点,但有必须成立的结构性质,同样能查错:
| 性质 | 检验方式 |
|---|---|
| 对称性 | 交换两组,估计量应取倒数或变号(如 WR·WR_swap = 1) |
| 置换不变 | 打乱受试者顺序,结果不变(查出对排序的隐性依赖) |
| 尺度/单位不变 | 改单位(月→天、kg→g),无量纲量不应变 |
| 零效应居中 | 两组同分布时,统计量应在原点(WR=1、logHR=0) |
| 单调性 | 加大真实效应,估计量应同向变 |
这类检验比退化点更通用,尤其对 U 统计量、秩方法、成对比较、非参数方法——它们往往没有可退化的参数化,但结构性质很强。
② 实际运行 —— 仅在目标软件现有可用时运行。软件不可用就跳过本级,列出读者本地应运行的命令与核对点;不得自动安装依赖,不得伪造输出。
③ 真值回收 —— 只在 Stage 4 生成了有已知参数的模拟验证数据时做。做之前先说清在比什么量。生成参数常是条件量,估计量常是边际量;还有 log OR vs OR、变化值 vs 终点值。数值接近可能纯属巧合,据此宣布通过是自欺。对不上尺度就跳过并写明,要做就先说明换算,换算不了就承认。作者数据没有生成真值时改用论文预期结果、恒等式和不变性检验,不得编造真值。
验证失败时,先判断是方法错还是检查错。 检查代码和被检查的代码一样会写错,直接去改方法往往是把对的改成错的。诊断顺序:
- 找一个独立的旁证 —— 例如边界解错了会导致 I 类错误偏离名义水平,模拟一下就知道;两个证据打架时,信更接近"最终目的"的那个
- 逐项核对检查式里的每个量:单侧还是双侧、α 还是 α/2、log 尺度还是原尺度、检验方向、分母是 n 还是 n−1
- 确认是检查错,就改检查并写明原因;确认是方法错,才回去改实现
最常见的是单双侧混淆:α 已经是单侧了又除一次 2,或反过来。凡是检查式里出现 /2 或 α/2,停下来问一句这个 2 是不是已经算过了。
④ 跨软件对照 —— 仅当读者选择了至少两种软件时执行。某个所选软件跑不了时,只列出经官方文档确认的对照点(估计值/SE/df/p 对应另一个所选软件的哪个输出)交读者本地核对,并明确该软件尚未实跑;只选择一种软件时本项记为“不适用”,不擅自增加另一种实现。
对照精度必须由算法决定:同一确定性算法、参数化和数据才可要求数值近似一致;MCMC、FCS、bootstrap 等随机算法即使都设种子,跨软件也不能要求四位小数完全相同,应比较估计目标、方向、分布特征和预先说明的 Monte Carlo 容差。输出对象和列名按本次实际方法从官方文档确定,不套固定的 summary(fit)$coef[2,1] 或 LSMEANS 模板。
结果解读与敏感性
跑完必须说明:输出里哪个数对应论文的哪个量,怎么读、什么范围正常。理论和代码到这一步才闭环。
选 C 时再做参数敏感性小实验:改一个参数重跑,看方向和理论预测对不对得上。对不上说明理论或代码错了一处——这比再读一遍代码有效。
Stage 6 — 归档
按 assets/summary-template.md 生成 YYYYMMDD_<方法简称>_<第一作者>.md,三块:数学基础 | 统计理论 | 代码。同时写入本篇读者画像、薄弱知识与 gap、材料完整性清单、数据来源、作者原代码审查、交付实现范围和代码证据表。
是知识卡片,不是学习记录:
- 只写已确认正确的。没通过、降档的标"待补",有疑问宁可不写
- 薄弱知识不能漏。Stage 2–5 中只要读者的实际作答或应用暴露出理解缺口,就登记“薄弱点/发现依据/对本文的影响/讲解后的最低必要结论/当前状态/后续建议”。补课后掌握也保留一行;仍未掌握的标“待补”。单纯跳过考查不是薄弱证据,不进入该表
- 不归档 skill 自检。本 skill 的结构校验、行为回归测试、ZIP 解包校验、提交记录及安装测试不写入文献总结;只保留与论文内容及所选软件交付代码可信度直接相关的证据和验证结果
- 凝练:能一行不写一段,不复述讨论过程,推导只留最终形式和 2–3 个关键步
- 正文建议 2500–3500 个中文字以内(不含代码和引用表);未实际排版时不要声称“A4 两页”
检验标准:半年后翻出来能直接用——符号表查得到,代码状态与依据查得到。使用当前环境可用的文件创建与持久化方式生成 Markdown,并向读者提供可下载文件;不要调用未确认存在的工具名。
边界场景
实跑中一定会遇到,遇到时按这里处理,不要临场发挥:
只拿到摘要,全文取不到(付费墙、机器人拦截)
→ 明说只有摘要,能做的是:讲这类方法的通用原理(标注"非本文特有")、按摘要给出框架、列出需要全文才能确认的问题清单。不要用通用知识冒充论文内容。 建议读者从机构订阅、作者主页、arXiv/PMC 预印本、或直接向作者索取。
主文提到 Supplementary file / Additional file / Web Appendix,但读者未提供
→ 列出缺少的附件名称、编号和它支撑的内容,请读者上传,然后硬停。读者明确无法取得时才能进入材料受限模式;所有依赖附件的公式、模拟参数和代码均标“无法核验”,不得补写。
附件或代码内部又引用数据文件、宏或脚本
→ 再列一层依赖清单。论文/出版方明确提供的文件缺失时向读者索取,只阻断依赖它的复现模块;作者从未公开的文件不反复追要。若材料已逐值完整展示,可透明重建并逐值核对;否则记录作者原样复现受限,另用模拟数据验证,不得猜。
作者没有提供数据
→ 这是常见情况,不反复追要不存在的数据。先确认论文是否明确“不共享/无数据”;没有可用样例时生成独立的模拟验证数据,记录种子和生成参数,并醒目标注“非论文数据”。
论文有多个方法或多个扩展
→ Stage 1 结束时列出来让读者选一个作为主线,其余指出作用即可。不要默认全讲——那样每个都讲不透。先标出一个有理由的推荐主线;读者只说“继续”时按推荐主线推进并复述选择。没有合理推荐,或路线会改变 estimand/交付范围时,再问一次。
论文正文与附录/表格不自洽(正文说 20%,附录模型算出来不是)
→ 以可复现的那一份为准(通常是附录的参数或代码),在归档里注明差异和你的取舍。不要改参数去迁就正文表述——那是把复现变成了编造。
论文本身可能有错或结论存疑
→ 照常讲清楚作者的推导,同时把疑点明确标出:是哪一步、为什么可疑、影响多大。不要因为是发表论文就默认正确,也不要武断说它错了——写"此处存疑,需核对"并说明理由。若已有勘误或后续讨论文章,指出来。
读者答题敷衍、只回"嗯""不知道"
→ “不知道”或实际答错才按“不达标”处理并讲透;“嗯/继续/跳过”登记为“未考查(读者跳过;已随文解释)”,不追问、不施压,也不写成已掌握。连续两三次跳过时,默认后续不再强制考查,理论和代码照常讲清。考查是手段不是目的。
同一篇论文分多次会话学完
→ 每次开始先确认进度:读的哪篇、上次停在哪个 Stage、已产出什么。优先读上一版归档 Markdown 中的画像和 gap;assets/reader-profile.md 只作空白模板,绝不保存用户状态。没有归档就从读者记得的地方接,不重讲已过阶段。
代码依赖装不上(JAGS、编译工具链、商业软件)
→ 提前说,别等写完才发现。不自行安装,也不为了能运行而擅自换算法。按官方文档静态核验后只给所选软件代码和本地核对点;若证据不足则不交付代码。
常见失败模式
- 把三题都当成目标 → Q1/Q2 是基本情况、Q3 才是学习程度。混了就会拿目标去定细度,或拿基础去砍目标。
- 基础弱就讲得浅 → 搞反了。基础弱要讲得更细、步子更小、轮次更多;该减的是每轮信息量,不是每步完整度。
- 跳步、"这一步很显然" → 最常见也最致命。中间式子、常数来源、记号变化都要写出来。
- 一口气讲完 → 考查形同虚设。硬停顿,停顿行后不许有内容。
- 凭方法名讲论文 → 最严重。没原文就停下来要。
- 主文提到补充材料却不索取 → 同样严重。附件里的公式、代码和模拟细节不能靠猜。
- 只检查主文,不检查附件内部依赖 →
read.csv()、%include、外部宏或第二个附件缺失时,代码并不完整。 - 文本抽取没读到就认定附件没有代码 → 图片和扫描页必须渲染查看。
- 只给比喻不给边界 → 读者带着失真理解往下走,实操才发现用错。
- 考查脱靶 → 题没挂到清单,漏考了还以为考过。标编号、对账。
- 有作者数据仍擅自换成模拟数据 → 复现与验证混在一起,最后无法判断复现了什么。作者数据优先;没有或不足时才另建模拟验证数据。
- 模拟数据一律套纵向 → 生存、序贯、剂量探索各有结构,套错后面全白跑。
- 目标软件可用却只做静态自查 → 本可运行时必须实跑并做数值核验;目标软件不可用时才使用官方文档静态核验,并明确标注未实跑。
- 没有软件却伪造“已运行” → 必须标为未实跑;只能交付经官方文档静态核验的代码。
- 凭记忆编包名、过程名或参数 → 找不到论文依据和官方文档双重证据就不输出。
- 把作者代码当成已经验证 → 作者代码先原样审查,修订交付版另记状态,不能静默修复。
- 只实现插补却称完整分析 → 数据准备、核心方法、后续分析、方差/合并和输出提取必须逐模块报范围。
- 随机算法跨软件要求四位小数一致 → 比较 Monte Carlo 容差和统计目标,不比较相同种子或固定小数位。
- 真值回收比错了量 → 条件量比边际量,接近纯属巧合。尺度对不上就跳过。
- 验证一失败就去改方法 → 检查代码同样会错。先找旁证判断是方法错还是检查错,最常见是单双侧或 α/2 重复。
- 因为不在清单/对照表里就跳过某步 → 表永远不全,别当白名单。