ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SPSS 27配对样本t检验效应量Cohen‘s d详解:从输出到解读

SPSS 27配对样本t检验效应量Cohen‘s d详解:从输出到解读 前几天帮一位做教育研究的同事看论文数据他的设计很常见一门培训课程前后测用SPSS 27跑配对样本t检验p值是0.117。审稿人回信只问了一句请补充效应量并说明其含义。他有点懵说工具不是已经给Cohens d了吗我看了他的输出发现他压根没点SPSS 27在成对样本T检验对话框里的“效应量”按钮。这类情况我遇到不止一次。其实SPSS 27的paired t-test已经内置了Cohens d输出表格会以Effect Size for T-Test为标题出现只是很多人还在沿用老版本的使用习惯只盯着显著性检验那一行。这篇博文就把这个问题一次说透效应量Cohens d到底是什么在SPSS 27的配对样本t检验里怎么让它输出输出里那个Cohens d是怎么算出来的以及拿到之后怎么读、怎么报、怎么避坑。内容适合做前后测设计、重复测量数据、干预性研究或者课程效果评估的研究者如果你只是在学校作业里用SPSS交一份t检验报告那也能帮你少走弯路。1. 为什么光看p值不够效应量到底补上了什么1.1 显著性不等于重要性一个每天都在发生的误读很多研究者拿到SPSS输出的第一眼永远先看Sig.那一列。这种习惯太根深蒂固了我能理解因为在SPSS还没普及效应量输出的年代p值几乎是唯一的裁决标准。但p值回答的问题非常有限它只告诉我们如果总体中真的不存在差异看到当前这么大或更大t值的概率是多少。换句话说p值衡量的是“意外程度”不是“差异大小”。我见过最典型的场景是这样一组有3000人的前后测数据哪怕平均分只提高了0.1分t检验也可能给出p0.001。你总不能说0.1分的“显著提升”有实际教学意义吧反过来在小样本里哪怕干预效果非常大因为样本量太小p值也可能大于0.05。我在后面会用一组实际数据演示这种情况p0.117但效应量已经达到中等水平。效应量就是来补这个窟窿的。它在数学上把组间均值差或前后测均值差用一个与测量单位无关的标准差“单位化”得到一个可以直接说明“差异有多大”的数字。这个数字不受样本量摆布样本量主要影响的是它的置信区间宽度而不应该影响它的点估计方向。这也是为什么现在的期刊越来越要求报告效应量甚至把效应量置信区间一起列为硬性要求。1.2 Cohens d是什么效应量家族里最常用的“通用尺子”Cohens d是由统计学家Jacob Cohen于1988年系统提出的一种效应量本质思想特别简单把均值差除以标准差得到“差异占了几个标准差”。打个比方如果两组男生的平均身高差是5厘米组内身高的标准差是10厘米那Cohens d就是0.5意思是两组均值相差半个标准差。不同研究用的量表单位不同原始均值差无法直接比较但统一换算成标准差单位之后就可以做meta分析、跨研究比较。标准差的选择是Cohens d里最容易踩坑的地方。独立样本t检验通常用合并标准差pooled SD因为两组是独立的人合并标准差代表两个总体分布在“同一把尺子”上的离散程度。但配对样本t检验的情况完全不同同一批人被测量了两次数据之间存在相关如果再拿前后测两列数据的合并标准差做分母实际上忽略了“个体自身前后变化的一致性”。SPSS 27在配对样本t检验里给出的Cohens d采用的计算口径是基于配对差值的标准差这个口径在文献中常被写作Cohens d_z。这里有一个很关键的直觉差值标准差反映的是干预效果在每个人身上的稳定性。如果干预对所有人的作用方向一致、幅度接近那么差值数据的波动就很小d_z会变得很大如果干预效果忽大忽小有人提升有人反而下降差值数据的波动就会很大d_z会被拉低。这样做分母实际上是在惩罚“不稳定”的干预效应。你现在可以理解为什么同样的数据用不同口径算出来的Cohens d可以差出一倍多我们后面会具体算。2. SPSS 27配对样本t检验的效应量界面、选项与输出位置2.1 从菜单到“效应量”按钮5步打开开关在SPSS 27里配对样本t检验的效应量不是默认输出的需要你在对话框里手动勾选。操作路径如下打开SPSS的数据视图确认数据里有两个数值型变量比如“Before”前测和“After”后测每一行代表一个被试。点击菜单栏的“分析(Analyze)”选择“比较平均值(Compare Means)”再点“成对样本T检验(Paired-Samples T Test)”。在左侧变量列表中先点选一个变量再点选另一个变量然后点击中间的方向按钮把它们送入右侧的“成对变量”列表。这里要注意顺序你在“Variable1”和“Variable2”里放谁决定了差值的正负方向也就决定了Cohens d的符号。关键一步来了在成对样本T检验对话框的右侧按钮区有一个“效应量(Effect Size)”按钮。很多老用户根本没注意到它的存在因为我印象中SPSS 24及更早版本的菜单里没有这个入口只有用命令语法才能输出效应量。点击这个按钮。在弹出的“效应量”对话框中勾选“Cohens d”建议顺便勾选“置信区间(Confidence Interval)”默认为95%。然后点“继续”回到主对话框点“确定”。这样操作之后输出查看器会正常生成三张老表格配对样本统计、配对样本相关性、配对样本检验然后会多出一张以Effect Size开头的效应量表。中文版界面可能会显示成“T检验的效应量”一类标题英文版就是“Effect Size for Paired-Samples T Test”或直接是“Effect Size for T-Test”。提醒一个非常实际的坑如果你在“效应量”对话框里没有看到Cohens 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, 75SPSS会输出近似这样的结果配对样本统计前测均值72.9标准差3.725后测均值73.9标准差4.228。配对样本相关性前测与后测的相关系数约0.902p0.001。相关系数高说明这10个人的成绩排序在前后两次测量中相当稳定这很正常同一批人做同一类测试很容易出现高相关。配对样本检验均值差1.0差值标准差1.826差值标准误0.578t1.731自由度9双尾显著性0.117。效应量表Cohens d0.548如果你勾选了置信区间还会看到95%置信区间大概在-0.11到1.21附近SPSS精确值会基于非中心t分布算出和我这里用的正态近似会有一点点差别。很多人看到t检验不显著就想放弃解释但你看效应量已经0.548按经验标准这算中等效应了。p值不显著只能说明样本量太小、检验功效不够不能说明没有效应。这正是上一节说的“p值误读”的典型材料。2.3 版本差异与Syntax命令老版本怎么补救如果你因为某些原因还在用SPSS 24或更早的版本菜单里找不到效应量按钮但可以通过语法命令让它输出。在Syntax编辑器中输入T-TEST PAIRSBefore WITH After (PAIRED) /ES DISPLAYTRUE /CRITERIACI(.95).其中Before和After替换成你自己的变量名。运行后SPSS会正常跑配对t检验并在输出中加入效应量表。语法里的/ES是effect size的缩写DISPLAYTRUE表示显示效应量/CRITERIACI(.95)指定置信区间为95%。这套语法在我印象中对SPSS 25及以后版本都是有效的老版本可能不支持/ES子命令那就只能手动算或者升级软件。如果你是SPSS 27用户我觉得还是建议直接用菜单勾选毕竟图形界面的按钮就是干这个的。但理解语法是有好处的至少以后在写批量分析的Syntax时你知道还可以在命令里直接追加效应量输出而不必每个分析都手动点一遍。3. 配对样本Cohens d的计算逻辑SPSS到底在算一个什么数3.1 一个公式拆到底差值均值除以差值标准差SPSS 27在配对样本t检验中输出的Cohens d公式并不复杂d_z Mdiff / SDdiff其中Mdiff是配对差值比如After - Before的平均值SDdiff是这些差值的样本标准差也就是除以n-1的那种标准差SPSS默认这样算Excel里对应的函数是STDEV.S。很多教材讲Cohens d时只给一个通用公式d (M1 - M2) / SDpooled这导致不少人在配对样本中依然用前后测两列数据各自的均值、标准差去计算合并标准差。这样做在数学上不是不可以它得到的是另一种效应量通常叫d_av更接近独立样本Cohens d的口径。但它不是SPSS在配对t检验里输出的那个数。SPSS为什么坚持用差值标准差从统计逻辑上看配对t检验本身就是在差值数据上进行的t Mdiff / (SDdiff / sqrt(n))。既然检验统计量建立在差值的基础上效应量也用同一把尺子保持口径一致。从实际解释上看差值标准差能反映干预效应在个体间的一致性这是合并标准差做不到的。合并标准差只会告诉你前后测成绩各自散布得多开而差值标准差直接告诉你“每人变化量的散布范围”和配对设计的研究问题更匹配。3.2 同一批数据两种算法差出一倍多我把刚才10个人的示例数据拿过来分别用两种口径算一下你就能直观感受到差别。先算差值。每个人后测减前测得到0, 3, -1, 2, 1, -2, 4, 1, 0, 2。差值均值Mdiff1.0差值样本标准差SDdiff1.826。所以SPSS口径的Cohens 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相差一倍还多。如果你在研究报告里只说“Cohens d0.25”然后又拿它去和别的配对研究比较那个研究用的是SPSS输出的0.55你俩说的根本不是一个口径结论很容易失真。这就是为什么我坚持在方法部分写清楚“本研究的效应量采用配对差值标准差计算即Cohens d_z”而不是笼统写一个“Cohens d”。3.3 手算验证一份示例数据Excel也能算如果你想验证SPSS 27的Cohens d有没有算对完全可以用Excel手工复现。以刚才的数据为例假设前测在A列A2:A11后测在B列B2:B11在C2输入B2-A2向下填充到C11得到差值列。C12输入AVERAGE(C2:C11)得到差值均值。C13输入STDEV.S(C2:C11)得到差值样本标准差。注意别用STDEV.P因为那是总体标准差分母除以n算出来的结果会和SPSS不一致。C14输入C12/C13得到Cohens d。按照这组数据C12会是1C13会是1.826C14就是0.548。这个数字和SPSS 27输出的效应量完全对得上。我在实际教学中常常让学员亲手算这一遍因为只有手算过一次才能真正理解SPSS输出的不再是黑箱数字也才不会再犯口径混用的问题。4. 效应量数值怎么读基准、置信区间与报告规范4.1 Cohen的0.2/0.5/0.8基准怎么用才不踩坑每个接触过效应量的人都会背一句口诀d0.2算小效应d0.5算中效应d0.8算大效应。这几个数字确实是Cohen在1988年提出的经验参考值但这里有两个必须注意的点。第一这些阈值是在社会科学行为科学领域总结出的经验值不是数学定理。干预研究里一个0.2的效应可能已经很有价值而某些精密测量学背景下0.2可能毫无意义。医学研究也常有自己的标准比如最小临床重要差异的概念就比单纯的效应量阈值更贴近实际决策。所以不要一拿到自己的d0.548就急着下“中等效应”的结论先想想这个领域里0.5个标准差到底意味着什么。第二配对样本的Cohens d_z不宜直接套用0.2/0.5/0.8这套基准。原因还是分母不同。d_z的差值标准差通常会比合并标准差小所以在同样均值差的情况下d_z天然会比独立样本d大一些。配对设计里如果前后测相关性较高差值标准差会明显小于两列原始数据的合并标准差d_z数值得“虚高”一点。这一点我踩过坑早期做meta分析时我差点把一个配对研究报告的d_z0.8直接归类为“大效应”后来才发现如果是d_av它可能只有0.4左右。4.2 效应量的置信区间为什么必须报点估计只是“一个数字”它本身不能告诉你这个数字靠不靠谱。刚才那组10人的示例数据Cohens d0.548看起来是个中等效应但95%置信区间大约横跨-0.11到1.21区间包含0说明我们还不能确信真实效应一定为正。这种情况在n10的小样本里非常常见。置信区间的作用就是用区间宽度告诉你“点估计的精度有多差”。区间越宽你越应该对数字保持怀疑区间跨过0就说明研究功效不足或者数据波动太大不能做出“有效应”的肯定判断。SPSS 27在效应量对话框里允许你直接勾选置信区间这个设计非常实用。如果你只报一个“Cohens d0.548”别人没法判断这个数字是不是一个极不稳定的估计如果你把置信区间也报出来读者至少能看到估计的不确定性。我从自己的经验说期刊审稿人现在已经越来越不吃“只给效应量点估计”这一套了。APA第7版统计报告规范也明确要求报告效应量以及相应的置信区间。就算你的期刊暂时没有硬性要求主动报置信区间也是一种防守式写作比被审稿人追问再补要体面得多。4.3 学术报告里的标准写法具体到一份论文里配对样本t检验的效应量应该怎么报告我提供一个可以直接改造的模板“前测成绩M72.90, SD3.73与后测成绩M73.90, SD4.23之间的差异不显著t(9)1.73, p0.117, Cohens d_z0.548, 95% CI [-0.11, 1.21]。”这里几个要素必须齐全第一列出描述性统计第二报告t值、自由度、p值第三报告效应量并标明是d_z口径第四报告置信区间。如果用的是中文论文可以写成“Cohens d_z 0.5595%置信区间[-0.11, 1.21]”。我特别建议在方法部分加一句交代口径比如“配对样本t检验的效应量采用差值标准差计算即Cohens d_zLakens, 2013。”这样即使读者拿你的d_z去和其他研究比较也知道中间可能有怎样的口径差异。5. 实操中反复出现的坑与排查建议5.1 效应量符号和预期相反先查配对顺序SPSS配对样本t检验的差值方向取决于你在“成对变量”里把哪个变量放在Variable1、哪个放在Variable2。差值默认是Variable1减去Variable2。如果你把前测放在前面后测放在后面那差值就是前测减后测干预提升成绩时差值会变成负数t值、Cohens d全都跟着变负。这不算分析错误效应量的绝对值没变含义取决于你定义的差值方向。但我见过太多人看到负数就以为自己算错了跑到论坛发帖求助其实只是Pair顺序没检查。建议跑之前先想清楚我希望看到的是“后测减前测”还是“前测减后测”如果是前者就先把After选进Variable1再把Before选进Variable2。5.2 效应量跨研究比较前先分清d_z还是d_av这个问题我在前面已经强调过但因为它太重要值得放在避坑清单里再说一次。d_z的分母是配对差值的标准差d_av的分母是前后测两组数据标准差的均值两者在数学上不相等。在配对设计的前后测相关性较高时d_z一般会比d_av大。如果你要做系统综述或meta分析必须保证你纳入的每项研究的效应量都是同一个口径否则合并出来的结果没有意义。如果你手头只有一篇论文报告了“Cohens d”但没有说明口径怎么办我的经验是先把前后测均值、标准差以及配对差值的标准差找齐如果原始论文只报告了t值和样本量也可以根据公式d_z t / sqrt(n)反推。这里注意公式用的是t和n并且是配对样本的d_z独立样本的换算公式完全不同不能混用。5.3 小样本下p不显著但效应量不小千万不要错过信息回到我开头那个例子p0.117效应量d_z0.548。第一次看到这种结果的研究者很容易产生焦虑觉得“不显著等于失败”。但从统计推断的角度看这个p值说明在当前样本量下我们没有足够证据排除零效应但它并不能证明零效应成立。效应量0.548给了一个积极但不可靠的信号更准确的结论应该写成“证据不足以支持培训有效但效应量有中等趋势需要通过更大样本进一步验证”。遇到这种情况我通常会建议在论文里补一句“本研究样本量较小对于效应量的估计精度有限”然后把置信区间大胆报出来。这不丢人反而显得你理解统计推断的本质。隐瞒不报p值不显著的效应量才是更危险的行为。5.4 缺失值、异常值会把Cohens d带偏配对t检验在SPSS里默认是逐对剔除缺失只要某一行前测或后测有一个缺失整行数据都会被排除。如果你的样本有大量缺失实际参与分析的样本量会缩小效应量也可能产生偏差。跑分析前最好先做一次缺失值分析确认缺失模式。如果缺失比例较高需要慎重处理而不是直接假装没看见。异常值对Cohens d的影响比对其余统计量更厉害。因为d_z的分母是差值标准差一个极端异常的差值比如有人录入时把75录成了750会把差值标准差拉得很大d_z迅速变小甚至把一个本来很大的效应量压没。我的习惯是每次跑配对t检验前先看差值列的直方图和箱线图确认没有离谱的极端值再做正式分析。别小看这一步我在数据清洗里拦下过太多因为串行、录入顺序颠倒而产生的“幽灵差异”。这里整理一个常见问题速查表方便你排查现象可能原因处理建议效应量符号和预期相反Pair变量顺序放反检查Variable1和Variable2的顺序Cohens d数值比手动用合并SD算的大很多SPSS用的是差值SD口径方法部分写明d_z不要混用p不显著但效应量比较大样本量不足功效低报置信区间并谨慎解释差值标准差异常大存在录入错误或极端异常值检查差值直方图、箱线图样本量突然变小前后测有缺失逐对删除做缺失值分析后再决定处理方案我自己用SPSS 27跑配对t检验的频率并不低最开始的习惯也是只看显著性那一行。后来有一次做meta分析因为效应量口径不一致被审稿人问得很狼狈才真正养成“跑T检验必开效应量按钮”的习惯。说句实在话SPSS 27把效应量内置到菜单里已经是很大的进步但工具给了并不代表我们理解对了。你现在再看paired t-test输出里的Cohens d至少应该先问一句这个数字的分母是差值标准差还是合并标准差答案多半是前者。知道这一点才算真正会用这个功能。
返回列表