mcpField
R
rigorous-experiments

rigorous-experiments

github.com/glebis数据与数据库40162 次安装1 天前更新
代码仓库

关于 rigorous-experiments

用于设计、执行和复核观察性或个人时间序列数据统计实验的 Skill,强调预注册、精确置换检验、数据验证及谨慎解读结果。

主要功能

  1. 01研究设计与预注册
  2. 02数据源验证
  3. 03精确置换检验流程
  4. 04线索与结果交叉验证
  5. 05结果浏览器与评估检查

适用场景

  1. 01规划时间序列假设检验
  2. 02检查新的个人数据源
  3. 03调查探索性统计线索

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/glebis/claude-skills --skill rigorous-experiments

安装后在 Claude Code 中输入/rigorous-experiments确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
run_evals.py
evals/cases/
bad_exp.py
bad_results.json
cases.json
good_exp.py
good_results.json
references/
cross-validation.md
data-validation.md
design.md
lead-investigation.md
statistics.md
scripts/
explorer.py
perm_stats.py
triage.py

详细介绍

严谨实验

对观察性/个人时间序列数据开展经得起审视的统计实验。内容提炼自一项包含 54 项实验的 n-of-1 计划:抽样置换检验、缺失数据伪影、应用分类错误和共线机制反复制造出“发现”,随后又将其推翻。这里的每条规则,都是因为曾经缺少它而得出错误结论。

模式

选择与请求相匹配的模式;也可以串联使用,完成一项完整研究。

模式适用场景参考
design新假设或研究references/design.md
conduct实施并运行实验references/statistics.md
validate-data信任任何新的数据源之前references/data-validation.md
cross-validate值得捍卫的发现;代码审查;外部模型审查(例如 GPT Pro)references/cross-validation.md
investigate-leads扫描/运行产生了线索(p<0.06,尚未通过 FDR 确认)references/lead-investigation.md
audit重新审查以往的结论、发现登记册references/statistics.md §审计

不可妥协的核心原则(适用于所有模式)

  1. 计算前预注册。 假设、精确检验、检验族大小 m 和接受阈值,必须在首次运行前写入脚本文档字符串。事后检验只作为描述性结果报告,绝不提升为确认性结果。
  2. 小样本时使用精确置换,绝不抽样。 n=19 的会话序列有 18 种循环移位:最小诚实 p 值约为 1/19≈0.05。以有放回方式抽取 2000 种移位会制造虚假的精度(这毁掉了一项旗舰级的“q=0.028”发现)。使用 scripts/perm_stats.py。
  3. 在完整日历上置换,而不是在压缩后的序列上置换。 移位压缩了间隔的序列会破坏时间线;保留缺失值,并在每次移位时重新应用 NaN 掩码。事件指标必须是没有间隔的纯 0/1 数据——缺失值只存在于结果序列中。
  4. 使用固定检验族大小 m 的 BH 校正。 m 必须是设计阶段声明的字面常量——绝不能使用 len(tests)(这会使预注册失去意义;代码检查器会拒绝)。断言运行结果与声明的 m 相符。确认性检验族应保持较小,并与探索性扫描分开;把所有检验合并成一个 BH 校正会掩盖真实效应,而挑选检验族则会制造虚假效应。普通 BH 假设检验相互独立或正相关;对于强依赖的滞后检验族,使用 BH-Yekutieli 或 maxT 重抽样。
  5. 对趋势序列进行相关分析前先检查平稳性。 对趋势序列进行精确循环移位,只会“精确且可重复地得出错误结果”:同时报告预白化 r(AR1 残差)和稳态自助法结果。
  6. 先分层,再汇总(检查辛普森悖论):按组内(例如治疗/辅导)和机制内(已知断点的前/后)分别分析。一次汇总分析的 r=−0.25,曾掩盖治疗组 −0.64 与辅导组 +0.53 的结果。
  7. 控制变量可以重新解释发现,而不只是消除它。 控制变量使效应减弱时,检查控制变量与预测变量的共线性——r(self-focus, session-length)=0.79 意味着“机制不明确”,而不是“效应是假的”。报告分解结果。
  8. 如实标注状态:confirmed(q<0.10,精确检验)≠ lead(p<0.06)≠ null ≠ descriptive。状态变化必须记录,不能悄悄修改。统计功效充分的零结果也是发现。稳健 ≠ 显著:小样本下,经留一法检验仍成立的 lead 依然统计功效不足——它是待前瞻性检验的候选结果,而非发现。 8b. 序列范围是检验的一部分。 滞后标记“[t+1]”指假设所针对序列中的下一个单位,而非汇总数据中的下一行;必须在计算滞后前定义范围(曾因此导致符号翻转)。重新计算既有结果时,先在该范围内复现已存档的结果。
  9. 隐私:原始文本/音频绝不能进入输出文件或外部上传内容——只能包含统计量、比率和基于嵌入得到的分数。
  10. 使用通俗语言报告:每个统计量都要随附其实际含义;在每份报告中各定义一次 r/p/q/n;不得使用未经翻译的术语直译。先讲结论,再用数字支撑。

工作流(完整研究)

  1. 对任何新数据源执行 validate-data 门禁(参见参考资料——检查清单曾发现:将零值与缺失值混淆、去重语义问题、子串类别错误、滚动清除窗口问题、时区约定问题)。
  2. design:预注册假设、检验族和统计功效合理性检查。
  3. conduct:使用 scripts/perm_stats.py 实现并运行;将结果写入 JSON,包含检验、状态和注意事项(包括已知局限)。
  4. cross-validate:在信任结果之前进行对抗性代码审查(例如使用 Codex 只读审查);修复发现的问题并重新运行。对于重大主张,使用经过隐私筛查的档案进行外部模型审查。
  5. 对任何出现为 lead 的结果执行 investigate-leads(使用不同规模的分析——采用分诊检验组:LOO、方向性、去趋势与阶跃对比、周期内分析、预白化+自助法;将方向相同的 lead 汇总为一个综合指标)。将诊断运行标记为 descriptive_only: true。
  6. 用诚实的文字给出判定(允许混合或否定结论);撰写报告;更新状态来源记录。

查看结果

启动内置浏览器,浏览任意结果 JSON 所在目录:

python3 scripts/explorer.py <results_dir> [--port 8799] [--pattern "exp*.json"] [--sort newest|oldest]

在该目录中生成 explorer.html,在指定端口启动(或复用)一个本地回环 HTTP 服务器,并打开浏览器:页面显示实验列表(带有已确认/线索徽章)、筛选器、按状态着色且可排序的测试表、判定、注意事项和原始 JSON。页面会实时获取结果文件——重新运行实验后,视图会随之更新;只有出现新的结果文件时才需要重新运行脚本。请通过 localhost 提供服务,切勿使用 file://(CDN 字体),也切勿使用非回环接口(结果可能包含个人统计数据)。

评估

在技能目录中运行 python3 evals/run_evals.py,根据标准检查实验脚本/结果对(是否存在预注册、m 是否为固定字面值、置换用法是否准确、是否包含注意事项、输出中是否没有原始文本)。有意不创建新测试的诊断/分流运行,应在其结果 JSON 中设置 descriptive_only: true,以满足“包含测试”检查。evals/cases/ 中的评估用例展示了预期的通过/失败示例。

评论

支持 Markdown