关于 calc-sample-size
面向临床研究人员的 Claude Skill,通过决策树选择样本量计算方法,并按研究设计收集参数、生成代码和报告。覆盖常见检验及预测模型、读者研究和分割评估等专门设计。
主要功能
- 01逐步识别研究设计与检验
- 02收集参数并解释默认值
- 03生成 R 与 Python 计算代码
- 04输出计算报告与 IRB 文本
- 05支持回顾性研究的样本量论证
- 06标明不支持的设计类型
适用场景
- 01规划两组率差异的样本量
- 02估算预测模型开发或验证规模
- 03设计 AI 读者研究或分割评估
- 04为回顾性研究整理样本量依据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aperivue/ medsci-skills --skill calc-sample-size安装后在 Claude Code 中输入/calc-sample-size确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill.ymlreferences/formulas.mdjustification_examples.mdmrmc_reader_study_sample_size.mdmulti_model_comparison_sample_size.mdobservational_cohort.mdprediction_model_sample_size.mdsegmentation_acceptability_sample_size.mdsegmentation_metric_sample_size.mdtests/test_worked_examples.py详细介绍
Calc-Sample-Size 技能
决策树
一次只向用户询问一个问题,引导其逐步完成此决策树;不要假设答案。读者研究、 分层和模型比较设计不在此决策树范围内:请参阅 Tests 14–17。
What is your primary outcome?
|
+-- Binary (yes/no, positive/negative)
| |
| +-- Paired data (same subjects, two methods)?
| | +-- YES --> [5] McNemar test
| | +-- NO --> How many groups?
| | +-- 2 groups, superiority --> [4] Two-proportion comparison (chi-square)
| | +-- 2 groups, non-inferiority --> [10] Non-inferiority / equivalence
| | +-- Multivariable model --> single-predictor hypothesis test? --> [9] Logistic regression
| | --> clinical prediction / AI model for use?
| | +-- developing the model --> [12] Prediction-model development (Riley)
| | +-- externally validating --> [13] External-validation (Riley)
| |
+-- Continuous (measurement, score)
| |
| +-- How many groups?
| +-- 2 groups --> [6] Independent t-test
| +-- 3+ groups --> [8] One-way ANOVA
|
+-- Time-to-event (survival, recurrence)
| |
| +-- Two groups, unadjusted --> [7] Log-rank test
| +-- Multivariable / adjusted HR --> [7] Log-rank (Schoenfeld) + [11] Cox EPV
|
+-- Agreement (inter-rater, reproducibility)
| |
| +-- Continuous measurements --> [2] ICC
| +-- Categorical ratings --> [3] Kappa
|
+-- Diagnostic accuracy (Se, Sp, AUC precision)
|
+--> [1] Diagnostic accuracy (precision-based)
Tests 1–11
选定检验后,阅读 ${CLAUDE_SKILL_DIR}/references/formulas.md § Test N — 参数表及其默认值、效应量解释、公式、R/Python 代码和方法学参考文献。
| # | 检验 | 适用情形 |
|---|---|---|
| 1 | 诊断准确性 — Se/Sp 精度 | 需要灵敏度或特异度的 95% CI 半宽 |
| 2 | ICC 一致性(Walter 1998 检验;Bonett 2002 CI 宽度) | 连续测量(肿瘤大小、角度)的评估者间/评估者内一致性 |
| 3 | Kappa 一致性(Donner & Eliasziw 1992;需要特征患病率) | 分类评级的一致性(BI-RADS 类别、病灶有/无) |
| 4 | 两比例比较(卡方) | 两个独立组(AI 与常规检测率) |
| 5 | McNemar 检验(配对比例) | 配对二元结局(两名读者对相同病例进行评估、干预前后) |
| 6 | 独立样本 t 检验 | 两个独立组的均值(病灶大小、恶性与良性) |
| 7 | 生存分析/log-rank(Schoenfeld 事件数,再计算患者数) | 两组间的事件发生时间 |
| 8 | 单因素 ANOVA | 3 个或更多独立组的均值 |
| 9 | Logistic 回归(Peduzzi EPV + Hsieh 1998,连续或二元预测变量) | 多变量二元结局、单预测变量假设检验 |
| 10 | 非劣效/等效性 | 新方法的效果不比标准方法差超过预先设定的界值,或在该界值内等效 |
| 11 | Cox 回归 EPV | 多变量 Cox 模型 — 确保有足够事件数以获得稳定估计 |
- Test 9:Peduzzi EPV ≥ 10 仅是单预测变量假设检验的最低基准。对于拟投入使用的临床预测/医学 AI 模型,EPV-10 已过时,容易受到审稿人质疑 — 请使用 Test 12(开发)/Test 13(验证)。务必同时报告 Peduzzi 和 Hsieh 的结果,并建议采用较大的 N。
- Test 10:NI 的 alpha 为单侧(通常为 0.025);差值的方向应设定为 > 0 表示新方法更优。等效性采用 TOST,并进行联合功效计算。界值必须有临床依据(参见
formulas.md§ 界值选择)。 - Test 11:EPV 用于确保模型稳定性,不能保证针对特定 HR 的检验功效。如果有 HR,也运行 Test 7(Schoenfeld),并建议采用较大的 N。
测试 12–17(专门设计)
每项测试都有自己的参考文件(参数、方法、报告要求);选定测试后请阅读。
- 测试 12 — 预测模型开发(Riley)。 开发用于实际应用的临床预测/分类模型(包括作为模型评估的医疗 AI 模型)。EPV-10 不适用:N 取满足所有 Riley 标准的最大值——二分类或生存时间结局有三项标准,连续型结局有四项标准(R
pmsampsize)。 - 测试 13 — 外部验证(Riley)。 验证现有预测/AI 模型:根据 C 统计量、校准斜率、O:E 和(如有相关声明)净获益的 CI 宽度确定样本量(R
pmvalsampsize);≥ 100 个事件且 ≥ 100 个非事件只是最低要求。 测试 12–13 请阅读${CLAUDE_SKILL_DIR}/references/prediction_model_sample_size.md。 - 测试 14 — MRMC 读者研究(Obuchowski–Rockette)。 比较有无 AI 辅助的读者表现,或验证 AI 相对于读者的非劣效性。测试 1 会低估样本量,因为读者属于随机效应:根据试点研究/文献中的方差分量,确定读者数
J× 病例数(使用RJafroc/MRMCaov/iMRMC,不要自行推导 OR 代数),并报告J × N的功效网格。请阅读${CLAUDE_SKILL_DIR}/references/mrmc_reader_study_sample_size.md。 - 测试 15 — 分割指标精度(Dice / HD95 / NSD)。 结局是每个病例的评分,而非比例:
n ≈ (1.96·SD/δ)²,根据每病例 Dice 的试点研究 SD 计算样本量,并以最差结构为准;使用患者层面的 bootstrap(BCa)计算 CI。这是精度评估;比较属于测试 16。请阅读${CLAUDE_SKILL_DIR}/references/segmentation_metric_sample_size.md。 - 测试 16 — 模型间比较。 模型 A 优于 B、C……:根据每病例配对差值计算功效,
n = ((z₁₋α/₂ + z₁₋β)·SD_Δ/Δ)²(如果 CI 仅需达到排除零值的程度,功效约为 50%),而非计算每个模型各自的精度;模型超过 2 个时,需预先指定一个主要对比,否则应进行家族错误率校正;若要声称模型排名,则需要多个随机种子。请阅读${CLAUDE_SKILL_DIR}/references/multi_model_comparison_sample_size.md。 - 测试 17 — 分割可用性。 临床医生能够使用该工具(可接受率、灾难性失败界限、编辑时间):可接受率是一个比例,按结构类别计算样本量;
DE ≈ 1 + (m−1)ρ仅适用于每个病例都有各自读者的情况——若所有病例由相同读者评估(交叉设计),则会增加一个读者项,无法通过增加病例数来缩小;若要将失败率限制在 ≤ 1%,需要约 300 个无失败病例(三法则)。请阅读${CLAUDE_SKILL_DIR}/references/segmentation_acceptability_sample_size.md。
范围之外
不要计算自适应试验(组序贯、样本量重新估计)、整群随机试验(设计效应、基于 ICC 的膨胀)、贝叶斯样本量确定、交叉设计或多终点校正(若用户提出,可提及 Bonferroni,但不要计算校正后的样本量)。 说明该设计超出本技能范围,并推荐 G*Power(免费,https://www.psychologie.hhu.de/gpower)、PASS 或生物统计学家。
工作流
阶段 1:了解研究
- 请用户简要描述研究(设计、主要结局、分组)。
- 按决策树确定一项测试,并在继续前与用户确认。
阶段 2:收集参数
- 展示所选测试的参数表。
- 对于用户未提供数值的每个参数,解释其含义并提供默认值。
- 根据既往文献(请用户提供参考资料)或试点数据估算效应量;仅在最后考虑使用 Cohen 的惯例,并指出基于惯例的估算精度较低。
Phase 2b:回顾性研究
如果数据集已经存在,正式的效能分析往往不切实际。请提供:
- 固定数据集:阅读
${CLAUDE_SKILL_DIR}/references/observational_cohort.md,并报告事件预算/置信区间精度,而不是强行采用前瞻性招募式效能计算。 - 基于经验的论证(适用于 IRB 和许多期刊):
- 机构检查量:
研究期间的检查总数 × 患病率 × (1 − 排除率) = 预期 N。询问该模态的年度检查量、研究期间、患病率和排除率,从而得出 N 的现实上限。 - 既往研究:报告 3–5 项相近已发表研究的 N 值并引用;用户的 N 应处于相同范围或更大。
- 两种论证方式的 IRB 模板:
${CLAUDE_SKILL_DIR}/references/justification_examples.md§ Retrospective。
- 机构检查量:
如果回顾性研究中有一部分受试者是前瞻性纳入的、主要分析检验的是假设(而不只是估计)、期刊的作者指南要求进行效能分析,或 IRB 要求进行效能分析,则即使是回顾性研究,也应进行正式计算(Phase 3)。
Phase 3:计算并报告
- 根据参考公式生成 R 代码(主要方案)和 Python 代码(备选方案)。
- 通过 Bash 运行 R 代码;报告的 N 应为代码打印出的数字,而非手工计算的结果。
- 按照下方的输出格式呈现结果。仅引用
formulas.md或检验参考文件中的方法学来源;其他任何参考文献都需要通过/search-lit确认 DOI/PMID,否则标记为[UNVERIFIED - NEEDS MANUAL CHECK]。将无法确认的效应量、临床定义或阈值标记为[VERIFY]。 - 在项目中,将 IRB 文本保存为
protocol/sample_size_justification.md,并将脚本保存为protocol/sample_size_calc.R/.py:/write-protocol和/write-paper会原样嵌入该文本,因此无需重新输入数字。
Phase 4:敏感性分析(可选)
如果某个参数不确定,或效应量估计较模糊,请指出并提供一张表,列出合理取值范围内对应的 N(例如,改变效应量,或将效能从 0.80 调至 0.90)。
输出格式
始终按以下格式组织最终输出:
## Sample Size Calculation Report
### Study Design
[1-2 sentence summary of the design and test selected]
### Parameters
| Parameter | Value | Source |
|-----------|-------|--------|
| ... | ... | user / literature / convention |
### Result
- **Required sample size**: N = [value]
- **With [X]% attrition adjustment**: N_adj = [value]
### R Code (Reproducible)
```r
# [complete, self-contained R script]
# Dependencies: [list packages]
# Run: Rscript sample_size_calc.R
Python 代码(备选方案)
# [complete, self-contained Python script]
# Dependencies: [list packages]
# Run: python sample_size_calc.py
IRB 论证文本
要以 [power]% 的效能在 [alpha] 的 [单侧/双侧] 显著性水平下检测出 [效应描述],需要 [N] 名参与者。假设 [关键假设]。 考虑到预计 [X]% 的参与者流失,我们计划招募 [N_adj] 名参与者。 此计算基于 [公式/方法参考文献]。
效应量解读
[科恩效应量基准分类 + 其在本研究中的临床意义]
The IRB text must state N; name the test and its formula source; give every assumed parameter
(effect size, alpha, power); state the attrition adjustment and final enrollment target; cite the
methodological reference (e.g., "Schoenfeld, 1981"); and use formal, third-person language. Read
`${CLAUDE_SKILL_DIR}/references/justification_examples.md` for per-design exemplars when writing it.