☰
SPSS 27配对样本t检验效应量Cohen‘s d详解:从输出到解读
2026/10/2 6:12:43 网站建设 项目流程

前几天帮一位做教育研究的同事看论文数据,他的设计很常见:一门培训课程前后测,用SPSS 27跑配对样本t检验,p值是0.117。审稿人回信只问了一句:请补充效应量并说明其含义。他有点懵,说工具不是已经给Cohen's d了吗?我看了他的输出,发现他压根没点SPSS 27在成对样本T检验对话框里的“效应量”按钮。这类情况我遇到不止一次。其实SPSS 27的paired t-test已经内置了Cohen's d,输出表格会以Effect Size for T-Test为标题出现,只是很多人还在沿用老版本的使用习惯,只盯着显著性检验那一行。

这篇博文就把这个问题一次说透:效应量Cohen's d到底是什么,在SPSS 27的配对样本t检验里怎么让它输出,输出里那个Cohen's d是怎么算出来的,以及拿到之后怎么读、怎么报、怎么避坑。内容适合做前后测设计、重复测量数据、干预性研究或者课程效果评估的研究者;如果你只是在学校作业里用SPSS交一份t检验报告,那也能帮你少走弯路。

1. 为什么光看p值不够,效应量到底补上了什么

1.1 显著性不等于重要性:一个每天都在发生的误读

很多研究者拿到SPSS输出的第一眼,永远先看Sig.那一列。这种习惯太根深蒂固了,我能理解,因为在SPSS还没普及效应量输出的年代,p值几乎是唯一的裁决标准。但p值回答的问题非常有限:它只告诉我们,如果总体中真的不存在差异,看到当前这么大(或更大)t值的概率是多少。换句话说,p值衡量的是“意外程度”,不是“差异大小”。

我见过最典型的场景是这样:一组有3000人的前后测数据,哪怕平均分只提高了0.1分,t检验也可能给出p<0.001。你总不能说0.1分的“显著提升”有实际教学意义吧?反过来,在小样本里,哪怕干预效果非常大,因为样本量太小,p值也可能大于0.05。我在后面会用一组实际数据演示这种情况:p=0.117,但效应量已经达到中等水平。

效应量就是来补这个窟窿的。它在数学上把组间均值差或前后测均值差,用一个与测量单位无关的标准差“单位化”,得到一个可以直接说明“差异有多大”的数字。这个数字不受样本量摆布,样本量主要影响的是它的置信区间宽度,而不应该影响它的点估计方向。这也是为什么现在的期刊越来越要求报告效应量,甚至把效应量置信区间一起列为硬性要求。

1.2 Cohen's d是什么:效应量家族里最常用的“通用尺子”

Cohen's d是由统计学家Jacob Cohen于1988年系统提出的一种效应量,本质思想特别简单:把均值差除以标准差,得到“差异占了几个标准差”。打个比方,如果两组男生的平均身高差是5厘米,组内身高的标准差是10厘米,那Cohen's d就是0.5,意思是两组均值相差半个标准差。不同研究用的量表单位不同,原始均值差无法直接比较,但统一换算成标准差单位之后,就可以做meta分析、跨研究比较。

标准差的选择,是Cohen's d里最容易踩坑的地方。独立样本t检验通常用合并标准差(pooled SD),因为两组是独立的人,合并标准差代表两个总体分布在“同一把尺子”上的离散程度。但配对样本t检验的情况完全不同:同一批人被测量了两次,数据之间存在相关,如果再拿前后测两列数据的合并标准差做分母,实际上忽略了“个体自身前后变化的一致性”。SPSS 27在配对样本t检验里给出的Cohen's d,采用的计算口径是基于配对差值的标准差,这个口径在文献中常被写作Cohen's d_z。

这里有一个很关键的直觉:差值标准差反映的是干预效果在每个人身上的稳定性。如果干预对所有人的作用方向一致、幅度接近,那么差值数据的波动就很小,d_z会变得很大;如果干预效果忽大忽小,有人提升有人反而下降,差值数据的波动就会很大,d_z会被拉低。这样做分母,实际上是在惩罚“不稳定”的干预效应。你现在可以理解,为什么同样的数据用不同口径算出来的Cohen's d可以差出一倍多,我们后面会具体算。

2. SPSS 27配对样本t检验的效应量:界面、选项与输出位置

2.1 从菜单到“效应量”按钮:5步打开开关

在SPSS 27里,配对样本t检验的效应量不是默认输出的,需要你在对话框里手动勾选。操作路径如下:

  1. 打开SPSS的数据视图,确认数据里有两个数值型变量,比如“Before”(前测)和“After”(后测),每一行代表一个被试。
  2. 点击菜单栏的“分析(Analyze)”,选择“比较平均值(Compare Means)”,再点“成对样本T检验(Paired-Samples T Test)”。
  3. 在左侧变量列表中,先点选一个变量,再点选另一个变量,然后点击中间的方向按钮,把它们送入右侧的“成对变量”列表。这里要注意顺序:你在“Variable1”和“Variable2”里放谁,决定了差值的正负方向,也就决定了Cohen's d的符号。
  4. 关键一步来了:在成对样本T检验对话框的右侧按钮区,有一个“效应量(Effect Size)”按钮。很多老用户根本没注意到它的存在,因为我印象中SPSS 24及更早版本的菜单里没有这个入口,只有用命令语法才能输出效应量。点击这个按钮。
  5. 在弹出的“效应量”对话框中,勾选“Cohen's d”,建议顺便勾选“置信区间(Confidence Interval)”,默认为95%。然后点“继续”,回到主对话框,点“确定”。

这样操作之后,输出查看器会正常生成三张老表格:配对样本统计、配对样本相关性、配对样本检验,然后会多出一张以Effect Size开头的效应量表。中文版界面可能会显示成“T检验的效应量”一类标题,英文版就是“Effect Size for Paired-Samples T Test”或直接是“Effect Size for T-Test”。

提醒一个非常实际的坑:如果你在“效应量”对话框里没有看到Cohen's d,而是只看到“置信区间”之类的选项,说明你当前的SPSS版本不够新。SPSS的效应量可视化按钮是从25版开始加入T检验对话框的,27版属于完整集成阶段。如果你手上还是24版或更早,别慌,用Syntax命令也能实现,我在2.3节会给出命令。

2.2 输出结果里的四张表:重点看最后一张

跑完一次标准的SPSS 27配对样本t检验,输出窗口一般会有四张表。我用一组实际示例数据来演示,这组数据是10名被试的课程前后测成绩:

  • 前测:70, 75, 68, 72, 80, 74, 69, 77, 71, 73
  • 后测:70, 78, 67, 74, 81, 72, 73, 78, 71, 75

SPSS会输出近似这样的结果:

  • 配对样本统计:前测均值72.9,标准差3.725;后测均值73.9,标准差4.228。
  • 配对样本相关性:前测与后测的相关系数约0.902,p<0.001。相关系数高说明这10个人的成绩排序在前后两次测量中相当稳定,这很正常,同一批人做同一类测试很容易出现高相关。
  • 配对样本检验:均值差=1.0,差值标准差=1.826,差值标准误=0.578,t=1.731,自由度=9,双尾显著性=0.117。
  • 效应量表:Cohen's d=0.548,如果你勾选了置信区间,还会看到95%置信区间,大概在-0.11到1.21附近,SPSS精确值会基于非中心t分布算出,和我这里用的正态近似会有一点点差别。

很多人看到t检验不显著就想放弃解释,但你看效应量已经0.548,按经验标准这算中等效应了。p值不显著只能说明样本量太小、检验功效不够,不能说明没有效应。这正是上一节说的“p值误读”的典型材料。

2.3 版本差异与Syntax命令:老版本怎么补救

如果你因为某些原因还在用SPSS 24或更早的版本,菜单里找不到效应量按钮,但可以通过语法命令让它输出。在Syntax编辑器中输入:

T-TEST PAIRS=Before WITH After (PAIRED) /ES DISPLAY=TRUE /CRITERIA=CI(.95).

其中Before和After替换成你自己的变量名。运行后,SPSS会正常跑配对t检验,并在输出中加入效应量表。语法里的/ES是effect size的缩写,DISPLAY=TRUE表示显示效应量,/CRITERIA=CI(.95)指定置信区间为95%。这套语法在我印象中对SPSS 25及以后版本都是有效的,老版本可能不支持/ES子命令,那就只能手动算,或者升级软件。

如果你是SPSS 27用户,我觉得还是建议直接用菜单勾选,毕竟图形界面的按钮就是干这个的。但理解语法是有好处的,至少以后在写批量分析的Syntax时,你知道还可以在命令里直接追加效应量输出,而不必每个分析都手动点一遍。

3. 配对样本Cohen's d的计算逻辑:SPSS到底在算一个什么数

3.1 一个公式拆到底:差值均值除以差值标准差

SPSS 27在配对样本t检验中输出的Cohen's d,公式并不复杂:

d_z = Mdiff / SDdiff

其中Mdiff是配对差值(比如After - Before)的平均值,SDdiff是这些差值的样本标准差(也就是除以n-1的那种标准差,SPSS默认这样算,Excel里对应的函数是STDEV.S)。

很多教材讲Cohen's d时只给一个通用公式:d = (M1 - M2) / SDpooled,这导致不少人在配对样本中依然用前后测两列数据各自的均值、标准差去计算合并标准差。这样做在数学上不是不可以,它得到的是另一种效应量,通常叫d_av,更接近独立样本Cohen's d的口径。但它不是SPSS在配对t检验里输出的那个数。

SPSS为什么坚持用差值标准差?从统计逻辑上看,配对t检验本身就是在差值数据上进行的:t = Mdiff / (SDdiff / sqrt(n))。既然检验统计量建立在差值的基础上,效应量也用同一把尺子,保持口径一致。从实际解释上看,差值标准差能反映干预效应在个体间的一致性,这是合并标准差做不到的。合并标准差只会告诉你前后测成绩各自散布得多开,而差值标准差直接告诉你“每人变化量的散布范围”,和配对设计的研究问题更匹配。

3.2 同一批数据,两种算法差出一倍多

我把刚才10个人的示例数据拿过来,分别用两种口径算一下,你就能直观感受到差别。

先算差值。每个人后测减前测,得到:0, 3, -1, 2, 1, -2, 4, 1, 0, 2。差值均值Mdiff=1.0,差值样本标准差SDdiff=1.826。所以SPSS口径的Cohen's d = 1.0 / 1.826 = 0.548。

现在换一种算法,模拟很多人会犯的错误。前测标准差是3.725,后测标准差是4.228,合并标准差计算公式为:

SDpooled = sqrt((SD1^2 + SD2^2) / 2) = sqrt((3.725^2 + 4.228^2) / 2) = 3.985

那么d_av = (73.9 - 72.9) / 3.985 = 0.251。

你看,同一个实验数据,一个算出来0.548,一个算出来0.251,相差一倍还多。如果你在研究报告里只说“Cohen's d=0.25”,然后又拿它去和别的配对研究比较,那个研究用的是SPSS输出的0.55,你俩说的根本不是一个口径,结论很容易失真。这就是为什么我坚持在方法部分写清楚“本研究的效应量采用配对差值标准差计算,即Cohen's d_z”,而不是笼统写一个“Cohen's d”。

3.3 手算验证一份示例数据:Excel也能算

如果你想验证SPSS 27的Cohen's d有没有算对,完全可以用Excel手工复现。以刚才的数据为例,假设前测在A列(A2:A11),后测在B列(B2:B11):

  1. 在C2输入=B2-A2,向下填充到C11,得到差值列。
  2. C12输入=AVERAGE(C2:C11),得到差值均值。
  3. C13输入=STDEV.S(C2:C11),得到差值样本标准差。注意别用STDEV.P,因为那是总体标准差,分母除以n,算出来的结果会和SPSS不一致。
  4. C14输入=C12/C13,得到Cohen's d。

按照这组数据,C12会是1,C13会是1.826,C14就是0.548。这个数字和SPSS 27输出的效应量完全对得上。我在实际教学中常常让学员亲手算这一遍,因为只有手算过一次,才能真正理解SPSS输出的不再是黑箱数字,也才不会再犯口径混用的问题。

4. 效应量数值怎么读:基准、置信区间与报告规范

4.1 Cohen的0.2/0.5/0.8基准怎么用才不踩坑

每个接触过效应量的人都会背一句口诀:d=0.2算小效应,d=0.5算中效应,d=0.8算大效应。这几个数字确实是Cohen在1988年提出的经验参考值,但这里有两个必须注意的点。

第一,这些阈值是在社会科学行为科学领域总结出的经验值,不是数学定理。干预研究里一个0.2的效应可能已经很有价值,而某些精密测量学背景下0.2可能毫无意义。医学研究也常有自己的标准,比如最小临床重要差异的概念就比单纯的效应量阈值更贴近实际决策。所以不要一拿到自己的d=0.548,就急着下“中等效应”的结论,先想想这个领域里0.5个标准差到底意味着什么。

第二,配对样本的Cohen's d_z不宜直接套用0.2/0.5/0.8这套基准。原因还是分母不同。d_z的差值标准差通常会比合并标准差小,所以在同样均值差的情况下,d_z天然会比独立样本d大一些。配对设计里如果前后测相关性较高,差值标准差会明显小于两列原始数据的合并标准差,d_z数值得“虚高”一点。这一点我踩过坑,早期做meta分析时,我差点把一个配对研究报告的d_z=0.8直接归类为“大效应”,后来才发现如果是d_av,它可能只有0.4左右。

4.2 效应量的置信区间为什么必须报

点估计只是“一个数字”,它本身不能告诉你这个数字靠不靠谱。刚才那组10人的示例数据,Cohen's d=0.548,看起来是个中等效应,但95%置信区间大约横跨-0.11到1.21,区间包含0,说明我们还不能确信真实效应一定为正。这种情况在n=10的小样本里非常常见。

置信区间的作用,就是用区间宽度告诉你“点估计的精度有多差”。区间越宽,你越应该对数字保持怀疑;区间跨过0,就说明研究功效不足,或者数据波动太大,不能做出“有效应”的肯定判断。SPSS 27在效应量对话框里允许你直接勾选置信区间,这个设计非常实用。如果你只报一个“Cohen's d=0.548”,别人没法判断这个数字是不是一个极不稳定的估计;如果你把置信区间也报出来,读者至少能看到估计的不确定性。

我从自己的经验说,期刊审稿人现在已经越来越不吃“只给效应量点估计”这一套了。APA第7版统计报告规范也明确要求报告效应量以及相应的置信区间。就算你的期刊暂时没有硬性要求,主动报置信区间也是一种防守式写作,比被审稿人追问再补要体面得多。

4.3 学术报告里的标准写法

具体到一份论文里,配对样本t检验的效应量应该怎么报告?我提供一个可以直接改造的模板:

“前测成绩(M=72.90, SD=3.73)与后测成绩(M=73.90, SD=4.23)之间的差异不显著,t(9)=1.73, p=0.117, Cohen's d_z=0.548, 95% CI [-0.11, 1.21]。”

这里几个要素必须齐全:第一,列出描述性统计;第二,报告t值、自由度、p值;第三,报告效应量并标明是d_z口径;第四,报告置信区间。如果用的是中文论文,可以写成“Cohen's d_z = 0.55,95%置信区间[-0.11, 1.21]”。

我特别建议在方法部分加一句交代口径,比如:“配对样本t检验的效应量采用差值标准差计算,即Cohen's d_z(Lakens, 2013)。”这样即使读者拿你的d_z去和其他研究比较,也知道中间可能有怎样的口径差异。

5. 实操中反复出现的坑与排查建议

5.1 效应量符号和预期相反:先查配对顺序

SPSS配对样本t检验的差值方向,取决于你在“成对变量”里把哪个变量放在Variable1、哪个放在Variable2。差值默认是Variable1减去Variable2。如果你把前测放在前面,后测放在后面,那差值就是前测减后测,干预提升成绩时差值会变成负数,t值、Cohen's d全都跟着变负。

这不算分析错误,效应量的绝对值没变,含义取决于你定义的差值方向。但我见过太多人看到负数就以为自己算错了,跑到论坛发帖求助,其实只是Pair顺序没检查。建议跑之前先想清楚:我希望看到的是“后测减前测”还是“前测减后测”?如果是前者,就先把After选进Variable1,再把Before选进Variable2。

5.2 效应量跨研究比较前,先分清d_z还是d_av

这个问题我在前面已经强调过,但因为它太重要,值得放在避坑清单里再说一次。d_z的分母是配对差值的标准差,d_av的分母是前后测两组数据标准差的均值,两者在数学上不相等。在配对设计的前后测相关性较高时,d_z一般会比d_av大。如果你要做系统综述或meta分析,必须保证你纳入的每项研究的效应量都是同一个口径,否则合并出来的结果没有意义。

如果你手头只有一篇论文报告了“Cohen's d”但没有说明口径,怎么办?我的经验是,先把前后测均值、标准差以及配对差值的标准差找齐;如果原始论文只报告了t值和样本量,也可以根据公式d_z = t / sqrt(n)反推。这里注意,公式用的是t和n,并且是配对样本的d_z;独立样本的换算公式完全不同,不能混用。

5.3 小样本下p不显著但效应量不小:千万不要错过信息

回到我开头那个例子,p=0.117,效应量d_z=0.548。第一次看到这种结果的研究者很容易产生焦虑,觉得“不显著等于失败”。但从统计推断的角度看,这个p值说明在当前样本量下,我们没有足够证据排除零效应,但它并不能证明零效应成立。效应量0.548给了一个积极但不可靠的信号,更准确的结论应该写成“证据不足以支持培训有效,但效应量有中等趋势,需要通过更大样本进一步验证”。

遇到这种情况,我通常会建议在论文里补一句“本研究样本量较小,对于效应量的估计精度有限”,然后把置信区间大胆报出来。这不丢人,反而显得你理解统计推断的本质。隐瞒不报p值不显著的效应量,才是更危险的行为。

5.4 缺失值、异常值会把Cohen's d带偏

配对t检验在SPSS里默认是逐对剔除缺失:只要某一行前测或后测有一个缺失,整行数据都会被排除。如果你的样本有大量缺失,实际参与分析的样本量会缩小,效应量也可能产生偏差。跑分析前最好先做一次缺失值分析,确认缺失模式。如果缺失比例较高,需要慎重处理,而不是直接假装没看见。

异常值对Cohen's d的影响比对其余统计量更厉害。因为d_z的分母是差值标准差,一个极端异常的差值,比如有人录入时把75录成了750,会把差值标准差拉得很大,d_z迅速变小,甚至把一个本来很大的效应量压没。我的习惯是每次跑配对t检验前,先看差值列的直方图和箱线图,确认没有离谱的极端值,再做正式分析。别小看这一步,我在数据清洗里拦下过太多因为串行、录入顺序颠倒而产生的“幽灵差异”。

这里整理一个常见问题速查表,方便你排查:

现象可能原因处理建议
效应量符号和预期相反Pair变量顺序放反检查Variable1和Variable2的顺序
Cohen's d数值比手动用合并SD算的大很多SPSS用的是差值SD口径方法部分写明d_z,不要混用
p不显著但效应量比较大样本量不足,功效低报置信区间,并谨慎解释
差值标准差异常大存在录入错误或极端异常值检查差值直方图、箱线图
样本量突然变小前后测有缺失,逐对删除做缺失值分析后再决定处理方案

我自己用SPSS 27跑配对t检验的频率并不低,最开始的习惯也是只看显著性那一行。后来有一次做meta分析,因为效应量口径不一致被审稿人问得很狼狈,才真正养成“跑T检验必开效应量按钮”的习惯。说句实在话,SPSS 27把效应量内置到菜单里已经是很大的进步,但工具给了并不代表我们理解对了。你现在再看paired t-test输出里的Cohen's d,至少应该先问一句:这个数字的分母是差值标准差,还是合并标准差?答案多半是前者。知道这一点,才算真正会用这个功能。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询