尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SPSS 27配对t检验中Cohen‘s d效应量:原理、操作与报告

SPSS 27配对t检验中Cohen‘s d效应量:原理、操作与报告 上周帮一位同行看数据分析结果他跑完配对样本t检验之后准备在论文里报告Cohens d。结果他手写公式用的是两组数据分别的均值和标准差直接套独立样本t检验那种合并标准差算法算出d 1.24。这个数字很好看但是错的。配对样本的效应量根本不能这么算。这种问题其实很常见。很多人用SPSS 27跑paired t-test会发现主输出表里根本没有Cohens d。软件不给你你就只能自己算一“自己算”就容易翻车。这篇文章就把三件事一次讲透SPSS 27里怎么把Cohens d调出来、配对样本的效应量在数学上到底怎么定义、算出来之后怎么解读和报告。无论你是刚接触统计分析的学生还是被审稿人追问效应量的老手这篇文章都值得看完。1. 为什么跑完配对t检验你的输出里找不到Cohens D先复现一下你大概率遇到过的情况。打开SPSS 27菜单路径“分析 → 比较平均值 → 配对样本T检验”把两列配对变量选进“成对变量”点确定。输出窗口里会给出三张表“配对样本统计”两组的均值、样本量、标准差、标准误。“配对样本相关性”两列变量的皮尔逊相关系数。“配对样本检验”差值均值、差值标准差、t值、自由度、显著性双尾。完事。Cohens d呢不在。很多人在“配对样本统计”那张表里翻来翻去试图从两组数据里按独立样本公式手算一个d出来这就是麻烦的开始。其实SPSS 27并不是没有这个功能它只是默认不给你输出藏在“选项”对话框里。你在“配对样本T检验”主对话框左下角会看到一排按钮其中有一个“选项”。点进去之后除了置信区间百分比和缺失值处理方式里面有关于效应量的勾选项。勾上之后重新运行输出里才会多出一张“效应量”表里面包含Cohens d点估计和95%置信区间同时还会给你一个Hedges correction值。所以第一步要记住SPSS不会自动帮你把所有该报告的东西都摆出来效应量属于“你不主动要它就不给”的那类结果。这不是版本bug而是统计分析习惯变迁造成的滞后。过去很多学科只要求报告显著性和p值SPSS的输出设计也一直沿袭这个逻辑。现在期刊普遍要求效应量SPSS才把功能加上但入口藏得比较深。顺带提一个很多人踩过的坑老版本SPSS比如SPSS 25之前的大部分版本里配对样本t检验即使勾选选项也未必有Cohens d输出。如果你用的是这类老版本不用急着卸载软件跳到第4章用Excel手动计算同样能拿到和SPSS 27一致的结果。后面我会给完整公式。2. 配对样本的Cohens D分母不是“合并标准差”要从根上理解Cohens d先得重新看一遍配对t检验的原理。很多人都把配对t检验当成“两组数据比较均值”其实它的真正计算对象只有一个差值列。假设你有12个被试每个人干预前测一次、干预后测一次那么每条记录会得到一个差值 d_i 前测 − 后测。配对t检验的本质是对这一列差值做单样本t检验检验这列差值的均值是否为0。所以t M_d / (SD_d / √n)其中M_d是差值的均值SD_d是差值列的样本标准差n是配对数。公式里没有任何一组原始数据的标准差直接参与。Cohens d也是一样的逻辑。配对样本的Cohens d用下面的公式d M_d / SD_d注意分母SD_d依然是差值列的标准差不是前测的标准差不是后测的标准差也不是两组标准差合并出来的池化标准差。很多人在这一步翻车是因为他们在网上搜到的是独立样本t检验的Cohens d公式分母是合并标准差d (M_1 − M_2) / s_pooled这里的s_pooled依赖两组原始数据的方差和样本量。如果你把这个公式用在配对数据上算出来的d值通常偏小而且偏小的程度取决于前后测的相关性。相关性越高错得越离谱。为什么会这样因为配对设计的本质优势是剥离了个体差异。同一个被试的前测和后测高度相关差值的变化幅度通常远小于两组原始数据本身的变异。你用原始数据的标准差去标准化等于给效应量人为加了一个大分母把真实的效应压低了。反过来用差值标准差做分母才能体现配对设计已经排除掉的个体噪声。用一个生活类比解释同样一道菜同一个厨师做两次口味差距小差异显著性好两个不同厨师做同一种菜口味差距大个体差异大。配对设计等于把“厨师”这个因素控制住了衡量的是“这道菜”本身的改动效果。如果此时你还拿不同厨师之间的标准差去做分母那就等于又把噪声请回来了。所以当你在SPSS输出里看到Cohens d一栏的值它一定是基于差值列计算出来的。SPSS在“配对样本检验”表里给你输出的“差值标准差”就是你手算时需要的SD_d。这一点记住后面验证时非常关键。3. SPSS 27实操在“选项”里把效应量调出来这章逐步走一遍完整流程同时把几个容易忽视的界面细节说清楚。3.1 数据准备配对数据必须一行一个人组织数据的时候要注意SPSS的配对t检验要求的是“宽格式”也就是一个被试占一行前测和后测各占一列。比如你有两列变量一个叫“前测”一个叫“后测”。不要做成“测量时间”一列加“分数”一列的长格式那是重复测量方差分析的格式配对t检验不能直接这么用。我见过不止一个人在网上求助“为什么我两个变量选不进配对框”点开截图一看数据是长格式。配对框里选变量要求的是同一行数据之间存在对应关系宽格式天然保证这一点。长格式的每一行都被当成独立被试配对关系就丢了。3.2 操作路径菜单栏选择“分析” → “比较平均值” → “配对样本T检验”。在“成对变量”区域把“前测”和“后测”两列变量分别放入Variable1和Variable2。可以同时选中两列后点箭头也可以直接在变量列表里按住Ctrl多选。点击右下角的“选项”按钮在弹出的对话框里勾选“效应量”。如果你还需要均值差的置信区间把“置信区间百分比”保持为95这个默认值目前也是绝大多数期刊的通行标准。点击“继续”回到主对话框再点“确定”运行检验。这里提醒一句不同SPSS版本里“选项”对话框的排版略有差异。有的版本把效应量放在主对话框的一个区域有的版本放在选项里还有的版本默认输出中会直接带上Cohens d。如果你点了“选项”没看到“效应量”三个字再翻一下主对话框有没有勾选框。大原则是版本越新这个功能越显眼。3.3 输出里多了哪张表运行之后你会在“配对样本检验”表的后面看到一张新表通常叫“效应量”。这张表的内容是行点估计95%置信区间下限95%置信区间上限Cohens dd值下限上限Hedges correctiong值下限上限SPSS 27会同时给出Cohens d和经过小样本校正的Hedges correction两个值都附带95%置信区间。我以前用老版本的时候只能自己跑去别的软件里算置信区间现在SPSS直接给方便太多。需要特别强调的是这张表里的Cohens d正负号取决于你配对时两个变量相减的方向。如果你把“前测”作为第一个变量、“后测”作为第二个变量那么差值等于前测减后测分数下降时差值就是负数d自然也是负数。反过来定义d就变成正数。这个正负号本身不代表“好”或“坏”只代表差异的方向。报告时通常取绝对值并说明方向。4. 不放心SPSS用Excel手动验算一遍Cohens D我自己的习惯是SPSS给出结果之后一定用Excel或者R再算一遍。不是不信任软件而是现在很多论文评审会追究细节万一被问到“你的Cohens d怎么算的”你如果只说“软件给的”多少有点被动。能清晰地写出推导过程可信度完全不一样。下面用一组我构造的教学模拟数据做演示。12个被试干预前后各测一次焦虑评分差值定义为“前测 − 后测”。负值代表干预后分数下降也就是改善。被试编号前测后测差值前测−后测18284-228587-237982-348184-3588116-2868387-478488-488085-5991117-26108691-5118288-6129098-8这段数据是我随手构造的不代表真实研究。它的特点是均值有明显的差异同时也存在两个差值比较大的极端被试方便演示标准差对d值的影响。Excel里操作如下。假设差值列在D列数据从D2到D13。差值均值AVERAGE(D2:D13)得到-8。差值标准差STDEV.S(D2:D13)得到9.05。Cohens dAVERAGE(D2:D13)/STDEV.S(D2:D13)得到-0.884。t值AVERAGE(D2:D13)/(STDEV.S(D2:D13)/SQRT(12))得到-3.06。p值T.DIST.2T(ABS(-3.06), 11)得到0.011。这里有两个容易踩的细节。第一STDEV.S这个函数是Excel 2010之后才有的命名旧版Excel和WPS里写作STDEV但本质上都是样本标准差分母是n−1。千万别用STDEV.P那个是总体标准差分母是n算出来的SD会偏小d会被高估。第二如果你用R或者Python验算要注意同样的问题。Python里pandas的std()默认就是样本标准差numpy的std()默认是总体标准差很多人栽在numpy.std()上。一定带ddof1参数。算出d -0.884之后还可以继续算95%置信区间。公式如下SE_d sqrt( (1/n) (d² / (2(n−1))) )代入数据SE_d sqrt( (1/12) (0.884² / (2×11)) ) 0.345自由度df 11t临界值用T.INV.2T(0.05, 11)得到2.201。置信区间就是-0.884 ± 2.201 × 0.345 [-1.64, -0.13]取绝对值之后报告就是Cohens d 0.8895% CI [0.13, 1.64]这个置信区间宽得吓人下限只有0.13上限到了1.64。原因很简单n只有12。效应量的置信区间和t统计量的置信区间一样样本量小精度就差。这也是我第5章要展开讲的核心问题——不要只报一个点估计。SPSS输出的那张“效应量”表里Cohens d的点估计和置信区间应该和上述计算结果完全吻合。如果你自己验算出来对不上优先检查差值列是不是输错了其次检查标准差用的是哪个函数。5. 0.2、0.5、0.8之外配对样本效应量的解读与报告拿到d 0.88之后接下来就是解读和报告。很多入门教程会告诉你一个简单的判断标准0.2小效应0.5中等效应0.8大效应。这个标准源自Cohen本人对行为科学领域的经验总结确实方便但用到配对样本上要打一个比较大的折扣。5.1 配对设计会让d“偏大”这里有一个很容易被忽略的点配对样本t检验中Cohens d的分母是差值标准差而差值标准差已经把个体差异剥离了。同样的数据如果用独立样本t检验的方法去算d大概率会比配对算法的结果小很多。也就是说配对设计天然更容易得出“大效应”。这本身不是坏事因为你确实用了更高效的设计精度更高。但在解读时要注意这个d 0.88不能直接跟那些基于独立样本研究的d 0.88比大小。一个常见的处理办法是在报告中明确写清楚“这是配对样本的Cohens d”审稿人和同行自然知道这个指标的计算口径不同。5.2 小样本矫正Hedges g当n比较小特别是n 20时Cohens d会有一定的正偏倚也就是倾向于高估总体效应量。SPSS 27的效应量表里特意给出一行Hedges correction就是对d做小样本校正。校正公式的简化形式是g ≈ d × (1 − 3/(4(n−1)−1))代入我们的数据g 0.884 × (1 − 3/43) ≈ 0.82n 12的样本量下0.88和0.82的差距不可忽略。现在不少期刊越来越倾向于要求报告Hedges g至少要求你对小样本做处理。我个人的建议是n 20时干脆以Hedges g为主要报告指标Cohens d可以一并列出但解释以g为准。SPSS两张表都给直接引用就行。5.3 论文里的标准写法APA格式第七版推荐的报告方式大致是下面这个样子“干预后焦虑评分显著低于干预前t(11) −3.06, p .011, Cohens d 0.88, 95% CI [0.13, 1.64]。”如果使用Hedges g就把d替换成g。不管用哪个都必须附带置信区间。裸报一个“d 0.88”而不给区间现在已经不太够看了。置信区间能告诉读者这个效应量估计到底有多可靠也能帮你在审稿人质疑样本量时先一步拿出解释。5.4 置信区间宽到跨水平怎么在文稿里描述以我们的示例数据为例95%置信区间是[0.13, 1.64]。这个区间的下限刚过小效应门槛上限已经超过大效应门槛跨越了整整三个常规水平。这时候最稳妥的说法是“效应量的点估计显示为大效应但95%置信区间较宽提示效应量估计精度有限未来研究需要在更大样本中进一步验证。”话要说得诚实不要强行把“大效应”说成板上钉钉的事。6. 最容易翻车的五个细节这章写几个我实际帮人审数据、改文章时反复遇到的坑。每一个都曾经导致过返工或者论文被打回。6.1 正负号报“0.88”还是报“−0.88”SPSS里效应的正负完全取决于变量放入配对框的顺序。你在报告中写“d 0.88”或者“d −0.88”都可以但必须说清楚差异方向。比如“干预后焦虑评分下降Cohens d 0.88绝对值95% CI [0.13, 1.64]。”这样既给了绝对值又没有丢失方向信息审稿人不会误解。6.2 差值方差和原始方差不要搞混如果你为了给论文补充材料需要用Python或R复算Cohens d务必确认用的是差值标准差。一个简单的验证方法是SPSS“配对样本检验”表里的“差值标准差”和你在Pandas里df[差值].std()得到的结果应该完全一致。如果不是数据清洗环节肯定出了问题。6.3 三个及以上配对比较时效应量也有多重比较问题如果你一次做了多个配对t检验比如三种疗法两两比较每一个配对都有自己的Cohens d。这个时候仅仅报告每个d的置信区间是不够的最好在方法部分说明多重比较的校正方式比如Bonferroni校正之后的显著性水平或者直接改用重复测量ANOVA加事后比较。效应量不是避风港多重比较问题不会因为你换了个指标就消失。6.4 异常值对d的影响比对p值更隐蔽t检验本身对异常值不算特别敏感尤其是n稍微大一点的时候单个极端值对t值的影响有限。但Cohens d的分母里有标准差而标准差对异常值非常敏感。一个极端差值可以把SD拉得很大从而把d值压得很小反过来如果异常值和均值方向一致也可能把d值推得虚高。我的建议是报告前先画一个差值列的箱线图肉眼扫一遍有没有离谱的点。如果有做两遍分析一版是全样本一版是剔除极端值后的敏感性分析。把两种结果都报告出来这叫透明。6.5 不要自己格式化数据SPSS的“宽格式”就是最稳的前面说过配对数据保持一行一个被试是最稳妥的做法。有些同学做完配对t检验之后为了画图或者做其他分析把数据转成长格式回头再来做配对t检验就发现变量选不进配对框。不要在同一份数据文件里反复折腾长宽转换所有配对分析都在宽格式下完成画图用的长格式另存一份文件。最后老实说SPSS 27在配对t检验这块已经把效应量做得足够友好了勾一个选项就能拿到Cohens d、Hedges g和一个完整的置信区间。但工具越方便使用者越容易跳过“理解”这一步。我现在的习惯是每次跑完配对t检验一定顺手把差值列导到Excel里再核一遍d值确认SPSS的输出和我手算的结果一致然后再写报告。这个习惯已经帮我挡掉了好几次数据录入错误也让我在被审稿人质疑的时候有凭有据。希望这篇内容也能帮你在同样的地方少踩一次坑。
返回列表