样本量与统计功效
样本量与统计功效。当用户在收数据之前需要确定要收多少人,或需要为开题报告、课题申报书、方法章写样本量依据时使用。真实触发说法:样本量要多少、帮我算样本量、我这个研究要发多少份问卷、300份够不够、答辩被问样本量怎么答、功效分析怎么做、G*Power怎么用、已知样本量能检出多大的效应、样本量依据怎么写、每组多少人。输出七段:参数设定表(八项含来源列)、效应量来源说明(前人研究报告值、元分析汇总值、最小有意义效应三条路径三选一并写清另两条为何不选)、样本量计算(G*Power菜单路径加R的pwr包代码加Python的statsmodels代码加手算近似公式,数值以实跑为准)、实际发放量换算(按无效率与流失率逐项折算)、敏感性分析表(真实效应小于预期时功效掉到多少)、最小可检出效应(仅用于数据已收完场景)、可直接抄进方法章或申报书的中英文写法模板。铁律:效应量必须来自用户材料,三条路径都走不通就停止计算不许用Cohen惯例值蒙混;禁止用事后功效解释不显著,改用效应量与置信区间;禁止报参照同类研究取多少份;不虚构计算结果,只给代码与操作步骤;禁止把实际收到多少份倒推成功效达到多少;单尾必须事前声明方向;多重比较须按校正后alpha重算;整班整校抽样必须引入设计效应与组内相关系数,否则低估所需样本量。降级:质性研究改出样本信息力五维度与饱和判断操作定义;描述性调查改用精度法;二手数据只报最小可检出效应;样本量确实不够则写进研究局限并集中到主结局,不许虚报。
装好之后怎么用
怎么用:在 AI 工具里直接描述任务即可自动触发。显式调用的写法各端不同:Claude Code / Cursor 等用 /sample-size,Codex 用 $sample-size,Kimi Code 用 /skill:sample-size,ZCODE 用 $sample-size,Gemini CLI 以自动激活为主。
技能内容
SKILL.md版本与文件 ›样本量与统计功效
1. 适用与不适用场景
适用:
- 开题报告、课题申报书要写"样本量依据"一节
- 答辩或评审被问"你这个样本量够不够"
- 设计实验或问卷调查前,要算实际得收多少人(不是有效人数,是发放量)
- 投稿后被要求补功效分析或样本量说明
- 数据已经收完,想说明这个样本能检出多大的效应
不适用,别硬套:
| 情况 | 为什么不适用 | 改走哪条路 |
|---|---|---|
| 数据已收完、结果已出,再来算功效 | 事前功效分析此时已无意义 | 只能报最小可检出效应,且必须在文中写明是事后敏感性分析,见第 3 节第 6 段 |
| 质性研究(访谈、观察、文本) | 功效分析的前提是抽样分布与假设检验,质性没有这个前提 | 走样本信息力框架与饱和度判断,见第 7 节 |
| 二手数据、公开数据库、既有档案 | 样本量不由你决定,事前算没有意义 | 只报最小可检出效应,见第 3 节第 6 段 |
| 纯描述性调查(只报比例、频数、均值) | 目的不是检验假设,而是估计精度 | 用精度法,见第 7 节 |
| 单被试、个案研究 | 不适用统计功效 | 不写样本量依据,改说明个案选择的典型性或极端性理由 |
跟相邻 Skill 的分工:analysis-plan 管"数据到手之后怎么分析",本 Skill 管"数据到手之前要收多少人"。两者共用一条红线(禁止用事后功效解释不显著),但不重复:analysis-plan 里的事后功效是禁止项,本 Skill 里是降级项(只能在事后场景下报最小可检出效应)。
---
2. 开工前必须确认的信息
在动笔之前,把下面这张表填完。任何一格没着落,先问用户,不许替他填默认值当作已确认。
| 项目 | 用户要给的 | 拿不到时的处理 |
|---|---|---|
| 设计类型 | 单样本 / 两独立样本 / 配对 / 相关 / 单因素方差分析 / 多因素方差分析 / 回归增量 R² / 卡方 / 两独立比例 | 反问,不许猜 |
| 主要结局对应的检验 | 与研究问题一一对应,主结局只挑一个 | 用户有多个主结局时,逐个算,取最大值,并说明 |
| 效应量及其来源 | 见第 3 节第 2 段,三条路径任选一 | 三条都走不通,不许算,直接告诉用户证据不足 |
| α | 默认 0.05 | 用了默认值要写明 |
| 目标 power | 默认 0.80;关键假设、多重比较、预期效应小则建议 0.90 | 用了默认值要写明 |
| 单尾还是双尾 | 有方向性假设才能单尾 | 默认双尾;单尾必须事前写明方向理由,事后切单尾等于作弊 |
| 组间分配比 | 两组是否等分,不等分给比值 | 默认 1:1 |
| 预计无效率与流失率 | 问卷研究必须给:预计无效卷比例、追踪研究的流失率 | 给了才换算发放量 |
惯例值可以推荐,但每一次推荐都必须同时说明它的来历和风险。 常见惯例值如下(Cohen 提出的小、中、大三档),它们本身不是实证结论:
| 检验 | 小 | 中 | 大 |
|---|---|---|---|
| 两独立样本均值差 d | 0.20 | 0.50 | 0.80 |
| 相关 r | 0.10 | 0.30 | 0.50 |
| 方差分析 f | 0.10 | 0.25 | 0.40 |
用惯例值的代价要写明:中效应 d=0.50 是个很大的效应,真实的教育与社科研究里常见效应远小于此,按它算出来的样本量往往偏小,导致研究在低功效状态下进行却没有被察觉。
---
3. 输出结构(七段)
第 1 段:参数设定表
产出一张表,四列,一格不许空:
| 参数 | 取值 | 来源 | 为什么这么定 |
|---|---|---|---|
| 设计类型 | |||
| 效应量指标与取值 | |||
| 效应量来源 | |||
| α | |||
| 目标 power | |||
| 单/双尾 | |||
| 组间比 |
"来源"一列只允许三种写法:前人研究报告值(给出处)、元分析汇总值(给出处)、本领域约定的最小有意义效应(给出判断依据)。写成"参照惯例"的,必须在"为什么这么定"里补一句这是兜底做法并说明风险。
第 2 段:效应量来源说明
把三条路径摆开,让用户选,选中的那条写进正文,另两条写清为什么没选:
- 前人同类研究报告值——优点是贴近本领域实际,缺点是发表偏倚会系统性高估效应量,用之前要说明是否已对发表偏倚作折扣处理
- 元分析汇总值——优于单篇,但仍受发表偏倚影响
- 最小有意义效应(SESOI)——不依赖文献,直接回答"小到什么程度就不值得关心了";这是最稳妥的路径,尤其适用于没有可参照文献的新问题
三条都走不通时,停止计算,直接告诉用户:"目前没有可用依据,样本量无法在事前确定,建议先做预研究获取效应量估计,或改用最小有意义效应路径。" 不许默认 d=0.5 蒙混过关。
第 3 段:样本量计算
按用户手边有的工具,给下面三种口径中的全部三种,并说明数值以实跑结果为准:
(a) G*Power 操作步骤(菜单名称以用户安装的当期版本为准,版本差异会导致菜单位置不同,须对照核对):
| 设计 | Test family | Statistical test | Type of power analysis |
|---|---|---|---|
| 两独立样本均值比较 | t tests | Means: difference between two independent means | A priori |
| 配对样本均值比较 | t tests | Means: difference between two dependent means (matched pairs) | A priori |
| 相关 | Exact | Correlation: Bivariate normal model | A priori |
| 单因素方差分析 | F tests | ANOVA: Fixed effects, omnibus, one-way | A priori |
| 回归整体 R² | F tests | Linear multiple regression: Fixed model, R² deviation from zero | A priori |
| 回归增量 R² | F tests | Linear multiple regression: Fixed model, R² increase | A priori |
| 卡方独立性检验 | χ² tests | Contingency tables | A priori |
| 两独立比例 | z tests | Proportions: Difference between two independent proportions | A priori |
操作口径统一为:填入效应量 → 填 α → 填 power → 填组数或组内分配 → 点 Calculate。菜单路径标〔待核〕,交付时须提示用户对照当期帮助文档核对。
(b) R 代码(pwr 包):
# install.packages("pwr")
library(pwr)
# 两独立样本 t 检验
pwr.t.test(d = 0.5, sig.level = 0.05, power = 0.80,
type = "two.sample", alternative = "two.sided")
# 配对样本 t 检验
pwr.t.test(d = 0.5, sig.level = 0.05, power = 0.80,
type = "paired", alternative = "two.sided")
# 相关
pwr.r.test(r = 0.30, sig.level = 0.05, power = 0.80,
alternative = "two.sided")
# 单因素方差分析
pwr.anova.test(k = 3, f = 0.25, sig.level = 0.05, power = 0.80)
# 两独立比例
pwr.2p.test(h = ES.h(p1 = 0.40, p2 = 0.60), sig.level = 0.05, power = 0.80)
# 给定样本量反算功效
pwr.t.test(n = 64, d = 0.5, sig.level = 0.05,
type = "two.sample", alternative = "two.sided")
# 给定样本量反算最小可检出效应
pwr.t.test(n = 64, sig.level = 0.05, power = 0.80,
type = "two.sample", alternative = "two.sided")(c) Python 代码(statsmodels):
from statsmodels.stats.power import TTestIndPower, TTestPower, FTestAnovaPower, NormalIndPower
from statsmodels.stats.proportion import proportion_effectsize
# 两独立样本
TTestIndPower().solve_power(effect_size=0.5, alpha=0.05, power=0.80,
ratio=1.0, alternative='two-sided')
# 配对样本
TTestPower().solve_power(effect_size=0.5, alpha=0.05, power=0.80,
alternative='two-sided')
# 单因素方差分析
FTestAnovaPower().solve_power(effect_size=0.25, k_groups=3, alpha=0.05, power=0.80)
# 两独立比例(先转 Cohen's h)
h = proportion_effectsize(0.60, 0.40)
NormalIndPower().solve_power(effect_size=h, alpha=0.05, power=0.80, ratio=1.0)
# 给定 N 反算功效
TTestIndPower().solve_power(effect_size=0.5, nobs1=64, alpha=0.05,
ratio=1.0, alternative='two-sided')
# 给定 N 反算最小可检出效应
TTestIndPower().solve_power(nobs1=64, alpha=0.05, power=0.80,
ratio=1.0, alternative='two-sided')(d) 手算近似公式(仅在用户无法运行软件时给,且必须标注为近似):
- 两独立样本:每组 n ≈ 2(z₁₋α/₂ + z₁₋β)² / d²
- 相关:n ≈ (z₁₋α/₂ + z₁₋β)² / ζ² + 3,其中 ζ = 0.5 × ln((1+r)/(1−r))
- 两独立比例:n ≈ [z₁₋α/₂√(2p̄(1−p̄)) + z₁₋β√(p₁(1−p₁)+p₂(1−p₂))]² / (p₁−p₂)²
常用分位数:α=0.05 双尾 z=1.96;power=0.80 时 z=0.84;power=0.90 时 z=1.28。
近似值与软件结果通常相差 1 到 2 例,一律以软件结果为准。 手算结果只能用于估算量级,不得直接写进申报书。
第 4 段:实际发放量换算
这是最常被漏掉、也最常在答辩被追问的一步。算出的是有效样本量,用户需要的是发放量:
发放量 = 有效样本量 ÷ (1 − 预计无效率) ÷ (1 − 预计流失率)逐项列出,不许合并成一个含糊的百分比:
| 环节 | 预计损耗率 | 该环节前应有 | 说明 |
|---|---|---|---|
| 追踪流失(前后测缺失) | 无追踪则填 0 | ||
| 无效卷(空卷、规律性作答、未通过注意力检验) | 口径见 analysis-plan 的五层判定 | ||
| 拒访或同意后未完成 | |||
| 最终应发放 |
损耗率若用户给不出,必须提示:问卷类研究经验上无效卷比例常不低,按 0 计算会导致最终有效样本不足,建议按保守值预留,并说明该保守值的依据由用户确认。
第 5 段:敏感性分析表
给一张表,横向是效应量,纵向是 power,格内是所需样本量:
| 效应量 | power=0.80 | power=0.90 |
|---|---|---|
| 小于预期值 | ||
| 预期值 | ||
| 大于预期值 |
作用是让评审看到:如果真实效应比你猜的小,你的研究功效会掉到多少。掉了多少要明说,不许掩着。
第 6 段:最小可检出效应(仅用于数据已收完的场景)
格式固定:
在 α=0.05(双尾)、power=0.80、每组 〔N〕 人的条件下,本研究可检出的最小效应为 d=〔数值〕。该值 〔高于/低于〕 本领域常见效应水平,说明本研究对 〔较小/中等〕 效应的检出能力 〔不足/充分〕。
必须同时写明这是事后计算,并给出后果:如果最小可检出效应偏大,就必须在研究局限里写明"本研究样本量对较小效应的检出能力不足",且这条局限要挂到具体结论上(格式照 discussion-writer 的要求);不显著的结果仍只能写"未观察到显著差异",不得以功效不足为理由改写为"存在效应但没检出"。
第 7 段:可直接抄进方法章或申报书的写法
给中文与英文两个版本,都留好填空位:
中文模板:
本研究采用 〔设计类型〕,以 〔主要结局变量〕 为主要结局指标。样本量依据 〔效应量来源,给出处〕 确定的效应量 〔指标=数值〕,在 α=0.05(〔单/双〕尾)、统计功效 〔值〕 的条件下,经 〔软件名称及版本〕 计算,所需有效样本量为 〔N〕。考虑预计无效问卷率 〔值〕 与追踪流失率 〔值〕,计划发放 〔N′〕 份。〔若有聚类抽样,须补设计效应说明〕。
英文模板:
The required sample size was determined a priori using 〔software, version〕. Based on an expected effect size of 〔index = value〕, derived from 〔source〕, a total of 〔N〕 participants were required to achieve 〔power〕 power at α = 0.05 (〔one/two〕-tailed) for a 〔test〕. Allowing for 〔attrition〕% attrition and 〔invalid〕% invalid responses, 〔N′〕 participants were recruited.
---
4. 各设计类型速查
| 设计 | 效应量指标 | 需要额外确认的 |
|---|---|---|
| 单样本均值 | d = (μ−μ₀)/σ | 总体标准差的估计来源 |
| 两独立样本 | d = (μ₁−μ₂)/σ_pooled | 合并标准差的估计来源 |
| 配对样本 | d_z = 均值差/差值标准差 | 前后测相关系数(影响较大) |
| 相关 | r | 无 |
| 单因素方差分析 | f | 组数与各组比例 |
| 多因素方差分析 | f(具体到待检验的那一项) | 检验的是主效应还是交互;交互项所需样本量通常远大于主效应 |
| 回归整体 | R² | 自变量个数 |
| 回归增量 | ΔR²,f² = ΔR²/(1−R²_full) | 已进入模型的自变量个数 —— 这是最常见的漏项 |
| 卡方 | w | 行列数与各单元格期望比例 |
| 两独立比例 | h(或两比例值) | 无 |
聚类抽样的处理必须单独说一句。 以整班、整校为单位抽样时,同一群组内个体相关,有效样本量会小于名义样本量。必须引入设计效应:
有效样本量 ≈ 名义样本量 / 设计效应,设计效应 = 1 + (群组平均人数 − 1) × 组内相关系数组内相关系数(ICC)的取值须给出来源,拿不到就标〔待核〕并说明会低估所需样本量。按简单随机抽样算出的样本量直接用于整班抽样,是教育学研究里最普遍也最容易被评审抓住的错误。
---
5. 铁律
- 不默认效应量。效应量必须来自用户材料,三路径都走不通就停止计算,不许用惯例值蒙混。
- 不用事后功效解释不显著。禁止写"由于功效不足导致未检出"。正确做法是报告效应量与效应量的置信区间,让区间自己说话。
- 不报"参照同类研究取 300 份"。没有计算过程的人数一律退回重写。
- 不虚构计算结果。本 Skill 提供代码、操作步骤与近似公式,数值以用户实跑结果为准;Skill 自身不得凭空给出"本研究需要 128 人"这类结论。
- 不把"实际收到 N 份"写成"功效达到 0.80"。功效是事前设定并据此反推样本量的,不是事后拿样本量倒推出来的。
- 单尾必须事前声明。事后把双尾改单尾以换取显著性,属于不可接受的做法,发现即指出。
- 多重比较要重算。做了 Bonferroni 或 Holm 校正的,α 变了,样本量必须按校正后 α 重算,不许沿用 0.05 的结果。
- 聚类抽样必须膨胀。见第 4 节末。
- 不写"样本量越大越好"。样本量须与效应量、α、power 联动给出,脱离效应的大样本没有意义。
- 数据已收完的场景必须标注事后。见第 3 节第 6 段。
---
6. 常见错误对照
| 常见写法 | 问题 | 改为 |
|---|---|---|
| 本研究拟发放问卷 300 份 | 无依据 | 按第 3 段给出完整计算过程与参数来源 |
| 参照同类研究,样本量取 300 份 | 用别人的样本量代替自己的计算 | 别人的效应量可以用,样本量必须自己算 |
| 本研究样本量为 200,功效达到 0.85 | 事后倒推 | 删去功效倒推,改报最小可检出效应 |
| 因样本量较小,差异未达显著 | 用样本量为不显著找理由 | 报告效应量与置信区间,不显著照写"未观察到显著差异" |
| 预计效应量 d=0.5 | 未说明 0.5 从哪来 | 补来源:前人研究、元分析或最小有意义效应 |
| 共 4 个组,每组 30 人,共 120 人 | 未算就直接分 | 按 f 值算总样本,再按组间比分配 |
| 以班级为单位抽样,共 6 个班 240 人 | 忽略群组内相关 | 引入设计效应,有效样本量按 ICC 折算 |
| 采用单尾检验以提高功效 | 未事前声明方向 | 事前写明方向假设及其理论依据,否则一律双尾 |
---
7. 降级路径
质性研究——不做功效分析,改出样本信息力说明:
| 维度 | 本研究情况 | 对所需样本量的影响 |
|---|---|---|
| 研究目的(窄/宽) | 目的越窄,所需越少 | |
| 样本特异性(高/低) | 特异性越高,所需越少 | |
| 理论支撑(有/无) | 有理论支撑,所需越少 | |
| 对话质量(高/低) | 对话质量越高,所需越少 | |
| 分析策略(个案/跨个案) | 个案式分析,所需越少 |
并在计划里写清饱和判断的操作定义:以 〔若干〕 个新增个案不再产生新编码/新主题作为停止收集的条件。若引用"多少次访谈可达饱和"这类经验数字,须标注原始出处〔待核〕并说明它只是参考,不是硬标准。
描述性调查——改用精度法:以总体比例的置信区间半宽为目标,n ≈ z²₁₋α/₂ × p(1−p) / 半宽²,p 取 0.5 得保守值;有限总体再加有限总体校正。
二手数据——只报最小可检出效应,格式见第 3 节第 6 段。
软件不可得——给手算近似,明确标注为近似值,并提示正式文本须用软件结果。
样本量确实达不到要求——不许为了避免被质疑而虚报。改为:按实际可达样本量算出功效,若功效偏低,就把它写进研究局限(格式照 discussion-writer),同时在分析策略上改用对样本量要求更低的方法,或放弃部分次要研究问题,把资源集中到主结局上。
---
8. 交付前自检
- [ ] 参数设定表八项全部有值,且"来源"列无空
- [ ] 效应量来源三选一,且写明了另一两条为什么没选;若三条都走不通,已按规矩停止计算
- [ ] 计算部分给了 G*Power 路径、R 代码、Python 代码,并提示数值以实跑为准
- [ ] 菜单路径处已标〔待核〕并提示对照当期版本
- [ ] 发放量换算逐项列出,无效率与流失率均有用户确认的取值
- [ ] 敏感性分析表已给出真实效应小于预期时的后果
- [ ] 若用了惯例值,已写明这是兜底做法及其风险
- [ ] 若为整班或整校抽样,已引入设计效应并给出 ICC 来源
- [ ] 若数据已收完,已标注事后,且第 6 段格式完整
- [ ] 全文未出现"参照同类研究取 N 份""功效达到 X"这类倒推表述
- [ ] 未出现事后功效解释不显著的写法
- [ ] 中英文两段模板的填空位已标出,未替用户填虚构数值
9. 完整输出范例
见 references/worked-example.md——含一个整班抽样场景下从「300 份」推到「约 1990 份」的完整七段输出,以及常见原稿改写对照与最小可检出效应的事后写法。范例中 ICC、效应量出处均为占位,计算数值为手算演示值,须以软件实跑结果替换。
评论 0
更多
登录后可点赞、收藏、评论和举报。
还没有评论,先发起一个具体问题。