npx skills add ...
npx skills add aperivue/medsci-skills --skill calc-sample-size
Use when planning how many patients or cases a study needs before data collection (power analysis, IRB justification). Walks a decision tree to the right test and returns reproducible R/Python code and IRB-ready justification text. Analyzing collected data is /analyze-stats.
npx skills add aperivue/medsci-skills --skill calc-sample-size
Walk the user through this tree one question at a time; do not assume answers. Reader studies, segmentation and model-comparison designs sit outside the tree: see Tests 14–17.
Once the test is chosen, read ${CLAUDE_SKILL_DIR}/references/formulas.md § Test N — the
parameter table with defaults, the effect-size interpretation, the formula, R/Python code and the
methodological reference.
| # | Test | Use when |
|---|---|---|
| 1 | Diagnostic accuracy — Se/Sp precision | desired 95% CI half-width for sensitivity or specificity |
| 2 | ICC agreement (Walter 1998 test; Bonett 2002 CI width) | inter-/intra-rater agreement on continuous measurements (tumor size, angle) |
| 3 | Kappa agreement (Donner & Eliasziw 1992; needs the trait prevalence) | agreement on categorical ratings (BI-RADS category, lesion present/absent) |
| 4 | Two-proportion comparison (chi-square) | two independent groups (AI vs conventional detection rate) |
| 5 | McNemar (paired proportions) | paired binary outcomes (two readers on the same cases, before/after) |
| 6 | Independent t-test | means in two independent groups (lesion size, malignant vs benign) |
| 7 | Survival / log-rank (Schoenfeld events, then patients) | time-to-event between two groups |
| 8 | One-way ANOVA | means across 3+ independent groups |
| 9 | Logistic regression (Peduzzi EPV + Hsieh 1998, continuous or binary predictor) | multivariable binary outcome, single-predictor hypothesis test |
| 10 | Non-inferiority / equivalence | new method not worse than standard by more than a pre-specified margin, or equivalent within it |
| 11 | Cox regression EPV | multivariable Cox model — enough events for stable estimates |
formulas.md § Margin selection).Each has its own reference file (parameters, method, reporting); read it once the test is chosen.
pmsampsize).pmvalsampsize); ≥ 100 events and ≥ 100 non-events is only a floor.
For Tests 12–13 read ${CLAUDE_SKILL_DIR}/references/prediction_model_sample_size.md.J × cases from pilot/literature variance components with RJafroc / MRMCaov / iMRMC (do not
hand-roll the OR algebra) and report the J × N power grid. Read
${CLAUDE_SKILL_DIR}/references/mrmc_reader_study_sample_size.md.n ≈ (1.96·SD/δ)² from the pilot SD of per-case Dice, sized on the worst
structure; CI by patient-level bootstrap (BCa). This is precision; a comparison is Test 16. Read
${CLAUDE_SKILL_DIR}/references/segmentation_metric_sample_size.md.n = ((z₁₋α/₂ + z₁₋β)·SD_Δ/Δ)² (a CI sized to just exclude zero has ~50% power), not
each model's precision; for > 2 models pre-specify one primary contrast or pay the
family-wise correction; a ranking claim needs multiple seeds. Read
${CLAUDE_SKILL_DIR}/references/multi_model_comparison_sample_size.md.DE ≈ 1 + (m−1)ρ holds
only when each case has its own readers — the same readers on every case (crossed) add a reader term
more cases cannot shrink; bounding failures at ≤ 1% needs ~300 clean cases (rule of three). Read
${CLAUDE_SKILL_DIR}/references/segmentation_acceptability_sample_size.md.Do not compute adaptive trials (group-sequential, sample size re-estimation), cluster-randomized trials (design effect, ICC-based inflation), Bayesian sample size determination, crossover designs, or multi-endpoint correction (mention Bonferroni if asked, but do not compute corrected sample sizes). Say the design is beyond this skill and point to G*Power (free, https://www.psychologie.hhu.de/gpower), PASS, or a biostatistician.
When the dataset already exists, formal power analysis is often impractical. Offer:
${CLAUDE_SKILL_DIR}/references/observational_cohort.md and report
event budget / confidence-interval precision instead of forcing a prospective recruitment-style
power calculation.total exams in period × prevalence × (1 − exclusion rate) = expected N.
Ask for the annual exam volume for the modality, study period, prevalence and exclusion rate. This
gives a realistic upper bound for N.${CLAUDE_SKILL_DIR}/references/justification_examples.md § Retrospective.Use a formal calculation (Phase 3) even for a retrospective study when a subset is enrolled prospectively, the primary analysis tests a hypothesis (not just estimation), the journal's Instructions for Authors require a power analysis, or the IRB requires it.
formulas.md or the test's reference file; any other reference needs a DOI/PMID confirmed via
/search-lit, otherwise mark it [UNVERIFIED - NEEDS MANUAL CHECK]. Mark an effect size,
clinical definition or threshold you could not confirm [VERIFY].protocol/sample_size_justification.md and the scripts as
protocol/sample_size_calc.R / .py: /write-protocol and /write-paper embed that text
verbatim, so the numbers are never retyped.If a parameter is uncertain or the effect-size estimate is vague, flag it and offer a table of N across plausible values (e.g., varying effect size, or power from 0.80 to 0.90).
Always structure the final output as follows:
A sample of [N] participants is required to detect [effect description] with [power]% power at a [one/two]-sided significance level of [alpha], assuming [key assumptions]. Accounting for an estimated [X]% attrition rate, we plan to enroll [N_adj] participants. This calculation is based on [formula/method reference].
[Cohen's benchmark classification + clinical meaning in the context of this study]