关于 alterlab-preregistration-discipline
alterlab-preregistration-discipline 是一项研究规范技能,要求在查看结果数据前冻结分析计划,并区分确认性与探索性结果。它面向研究者,重点是识别计划偏离、结果窥探和事后调整,而非教授统计检验或注册操作。
主要功能
- 01数据分析前冻结计划
- 02区分确认性与探索性结果
- 03识别结果窥探与可选停止
- 04要求披露计划偏离
- 05检查计划与实际分析
适用场景
- 01分析前核对是否已有预注册计划
- 02结果可见后有人提议更换检验或协变量
- 03将未计划的分析标记为探索性
- 04审查论文中的计划偏离披露
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-preregistration-discipline安装后在 Claude Code 中输入/alterlab-preregistration-discipline确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/researcher_degrees_of_freedom.mdworkflow_gates.mdscripts/prereg_check.py详细介绍
预注册纪律(铁律)
技能类型:纪律强制型。 这不是操作指南,也不是参考资料。它旨在杜绝一种特定的失败模式——看到数据后利用研究者自由度,再把结果报告得仿佛事先计划好了一样。它规定了何时可以声称得到确认性结果;它不会教你如何选择检验或填写 OSF 表单。这些内容属于相关技能(请参见路由表)。
THE IRON LAW
NO DATA ANALYSIS WITHOUT A PRE-REGISTERED ANALYSIS PLAN FIRST.
冻结的假设和分析计划,相当于在实现前编写的失败测试:你在知道自己是否得出结果之前,就先承诺什么才算结果。若进行未经计划的分析,规则是绝对的——这属于探索性分析。请标注并记录时间戳,且不能将其 p 值作为确认性结果报告。(遵循开放科学中心的确认性/探索性模型:在探索性研究中,p 值会失去诊断价值,研究发现需要独立重复验证。已在 https://www.cos.io/initiatives/prereg 核实。)
违反预注册的字面规定,就是违背科学精神。
这句话预先堵住了可预见的辩解——“预注册是官僚主义,我是在遵循科学精神。” 不存在遵循科学精神的例外。在探索阶段,你可以自由迭代;但要提出确认性主张,就必须遵循冻结的计划。
何时使用此技能
当有人要提出确认性主张,却没有冻结的计划作为依据时,或在数据已可见后有人试图修改计划时,立即使用此技能:
- 即将分析某个数据集,但没有书面的、数据收集前制定的分析计划。
- 在看到结果或 p 值之后,更换主要结果指标、增加/删除协变量,或更改检验方法。
- 偷看持续收集的数据,并斟酌是否现在就停止(“它已经显著了”)。
- 删除异常值、转换变量,或更改未经预先指定的排除标准。
- 起草 OSF / AsPredicted / PROSPERO 预注册(将具体操作交由
alterlab-open-science处理;此技能负责确保计划确实已冻结并得到遵守)。 - 为偏离现有注册的行为寻找合理化解释。
- 在截止日期压力下提出的请求,例如*“想办法对这个临界结果做 p-hacking,让它达到可发表的程度。”*——拒绝这种说法,改为提供 PLAN/CONFIRM/EXPLORE 路径。
不适用的情况
此技能是把关者,而不是工具箱。它负责协调其他技能,并将所有机械性工作转交出去。遇到以下相关请求时,请按如下方式转交:
| 请求实际涉及…… | 转交给 | 不应使用此技能,因为…… |
|---|---|---|
| 注册流程:OSF Registries / AsPredicted 模板 / PROSPERO、DMP、FAIR 数据、存储库选择、注册报告 | alterlab-open-science | 该技能负责如何注册;此技能只负责确保计划冻结并遵守。 |
| 选择要运行的检验、假设检验(Shapiro/Levene)、功效 / 样本量、APA 结果 | alterlab-statistical-analysis | 检验的选择与执行属于统计学,而非预注册规范。 |
| 评定证据质量(GRADE、RoB)、识别偏倚 / 混杂因素、判断设计有效性 | alterlab-scientific-thinking | 评判已有证据 ≠ 在获得数据前承诺一项计划。 |
| 核实某条引用是否存在 / 是否支持某项主张 | alterlab-citation-verifier | 这是引用完整性,而非分析计划完整性。 |
| 检查已完成分析的报告是否完整(效应量、CI、披露所有检验) | alterlab-results-transparency | 这是 CONFIRM/EXPLORE 之后的报告关卡。 |
| 在查看数据前,针对分布边界情况从候选检验中作出选择 | alterlab-test-selection-guard | 锁定检验选择本身有专门的把关技能;此技能默认检验已列入冻结计划。 |
| 撰写 TÜBİTAK / 基金申请书的方法部分 | alterlab-tubitak-proposal / alterlab-research-grants | 这是申请书撰写,而非预注册执行(alterlab-grant-reporting 负责获批后的报告)。 |
| 研究伦理审批 / KVKK / 数据管理合规 | alterlab-tr-research-ethics / alterlab-kvkk-dmp | 伦理与数据治理不同于冻结分析计划。 |
必备背景知识(此技能负责协调,不会重新实现其他技能的功能):
注册材料请参考 alterlab-open-science,检验选择 + 假设请参考 alterlab-statistical-analysis,偏倚框架请参考 alterlab-scientific-thinking。某个步骤需要这些技能时,请转交处理——不要在此处重述其内容。
工作流:PLAN → COLLECT → CONFIRM → EXPLORE
这相当于研究中的红 → 绿 → 重构。每个阶段都有退出关卡;当前关卡通过前,不得进入下一阶段。
1. PLAN — 在看到任何数据之前冻结计划
写下并锁定所有以下内容:
- 假设(适用时注明方向)。
- 主要结局和任何次要结局——按优先级排序。
- 每项假设对应的精确检验(将选择交由
alterlab-statistical-analysis;在此记录决定)。 - 纳入 / 排除规则和预先指定的异常值规则。
- 停止规则 / 计划样本量(以排除可选停止)。
- 协变量、转换方式,以及缺失数据的处理方法。
通过 alterlab-open-science 注册材料(OSF Registries / AsPredicted / PROSPERO)。**关卡:**计划已存在、有时间戳,并且其中任何内容都不依赖于已查看结局数据。如果你无法回答“什么结果会推翻这一假设?”,说明计划尚未完成。
2. COLLECT — 收集数据,保持原样
按照停止规则收集数据。**不要查看结局数据来决定是否继续。**如果确实需要进行中期查看,就必须预先指定序贯设计(并在 PLAN 中记录)。**关卡:**数据收集符合冻结规则;未发生依赖结局的停止。
3. CONFIRM — 严格运行计划中的测试
按照预先指定的顺序,在预先指定的样本上运行预先指定的测试。
假设检验(通过 alterlab-statistical-analysis)必须先运行并报告,然后
才能解读结果——除非计划中已预先指定,否则不能因为假设检验未通过就更换测试;
未经计划的更换会将结果降级为 EXPLORE。
**关卡:**每个确认性数值都必须能追溯到冻结计划中的一行。
4. EXPLORE — 其他所有内容,明确标注
任何不在冻结计划中的内容都归入此处:新的子组、事后协变量、 替代测试、有趣的模式。这项工作很有价值——它能为下一项研究生成假设—— 但报告时必须放在探索性标题下,其 p 值仅作描述,不作确认性依据,并且必须注明 “需要重复验证”的警示。**关卡:**每项探索性发现都必须标注为探索性;不得将其 包装成确认性叙述的一部分。
决策流程图和完整的阶段关卡见 references/workflow_gates.md。
借口与现实
那些意料之中的合理化说辞,以及实际发生的情况。(内容基于已记录的研究者自由度文献——参见 references/researcher_degrees_of_freedom.md。)
| 借口 | 现实 |
|---|---|
| “数据表明有更好的测试/模型。” | 你正在拟合噪声。这就是 HARKing——在结果已知后再提出假设。应将其报告为探索性结果。 |
| “我们只偷看了一次。” | 可选停止会抬高 I 类错误率。应报告(预先指定的)序贯设计,或者停止偷看。 |
| “预注册太僵化了;科学是迭代的。” | 在 EXPLORE 部分进行迭代。确认性主张仍然需要冻结计划。 |
| “我们删除了 3 个离群值,以满足正态性。” | 必须预先指定离群值规则,或者将其作为敏感性分析报告——不能悄悄修改。 |
| “这个协变量显然应该纳入模型。” | 事后说“显然”=研究者自由度。应预先指定,或将其标注为探索性。 |
| “因为 t 检验不显著,所以我们改用了 Mann–Whitney。” | 根据 p 值选择测试就是挑选测试。应预注册决策规则,或将结果标注为探索性。 |
| “这一偏离符合注册的精神。” | 违背字面要求就是违背其精神。不存在所谓精神上的例外。 |
| “这只是探索性研究,所以注册是多此一举。” | 那就把每项发现都标注为探索性,并且不声称有确认性 p 值。没有计划,就不能获得确认性认可。 |
危险信号 — 停止
如果你发现自己(或用户)有以下任何想法,立即停止:
- “让我试试另一种测试看看。”
- “我删掉这些离群值再重新运行。”
- “只要加上这个协变量,效应就出现了。”
- “我们现在可以停止收集数据了——结果已经显著。”
- “我只报告那些奏效的分析。”
- “这个子组很有意思(我们没预料到,但……)。”
- “让我把主要结局改成那个已经出现结果的指标。”
- “这种研究做预注册太麻烦了。”
这些都意味着同一件事:你正在利用研究者自由度。 要么回到冻结计划,要么将这项工作标注为探索性,并放弃确认性主张。 没有第三种选择。
多重比较升级关卡
一条明确且可计数的规则(相当于“修复失败 3 次=架构有问题”):
针对同一个假设运行了 3 项或更多测试来寻找显著性?立即停止。这是 多重比较/挑选测试。要么对所有测试进行校正(Bonferroni/ Benjamini–Hochberg FDR——通过
alterlab-statistical-analysis),要么宣布整个 分析为探索性。不要运行第 4 项测试来寻找 p < .05。
偏离披露关卡
如果无法避免偏离已冻结的计划(计划中确实存在错误,或某项假设无法成立),就不能悄悄将其纳入。请依次执行:
- 说明原始的冻结规范(引用计划)。
- 说明偏离内容及导致偏离的具体原因。
- 分类受影响的结果为探索性,除非能够证明偏离绝非由结果驱动。
- 披露在论文的透明度/偏离说明部分披露偏离情况(将报告完整性问题交由
alterlab-results-transparency处理)。
你可以使用以下可选辅助工具,对计划与实际情况的叙述进行快速结构化自审:
uv run python skills/methodology/alterlab-preregistration-discipline/scripts/prereg_check.py \
--plan plan.json --actual actual.json
这是一个仅使用标准库的核对清单评分工具(不联网,不调用第三方 API)——它不会运行统计分析。请参阅其 --help。
声称确认性结果前的自查
- 是否存在一份在结果数据可见之前撰写并带有时间戳的冻结计划?
- 每个确认性数值是否都能追溯到该计划中的一行?
- 是否在解读结果前运行并报告了假设检验?
- 每项未计划的分析是否都置于探索性标题下,并注明需要复制验证?
- 是否披露了所有偏离,而非将其悄悄纳入?
任何一项回答“否”→ 该结果就是探索性的,而非确认性的。请明确说明。
参考资料
- references/workflow_gates.md — 完整介绍 PLAN/COLLECT/CONFIRM/EXPLORE 阶段关卡和决策流程图。
- references/researcher_degrees_of_freedom.md — 记录该技能旨在识别的失误模式(HARKing、可选停止、p 值操纵、路径分叉花园),并附有来源。
- Center for Open Science — 预注册。https://www.cos.io/initiatives/prereg (确认性与探索性模型;撰写期间已核实)。
- 协同配套技能:
alterlab-open-science、alterlab-statistical-analysis、alterlab-scientific-thinking。
属于 AlterLab Academic Skills 套件的一部分。