简介:这份PPT面向统计学初学者、教育或社科领域的师生与研究人员,围绕SPSS中t检验这一常用推断统计方法展开讲解。内容以单样本t检验与独立样本t检验两大类型为主线,具体示范了从数据导入、变量定义、菜单操作到结果解读的完整流程,并配有学习兴趣分数、班级心理健康水平等真实练习案例,有助于读者理解t值、自由度与p值的含义及显著性判断依据。资源包共1个PPT文件,体积约1.24MB,轻量便携,适合课堂演示或自学通读。目前已有818人学习下载。对于需要在论文写作、教学备课或课题数据分析中快速掌握SPSS-t检验操作与结果解读的读者,可直接参照案例完成练习,并对照结果解释部分梳理解读逻辑,在较短时间内建立从操作到结论的完整统计思维。
1. 一份14人的学习兴趣分数,为什么值得先跑一次单样本t检验
14 个学生的学习兴趣分数摆在表格里,全校平均分是 80,这组人的平均分是 91.71。差距 11.71 分,看起来很大,但"看起来大"和"统计上显著"是两件事:如果这 14 个人恰好是全校兴趣最浓的一小撮,或者分数波动本身就大得离谱,11.71 分的差距也可能只是抽样波动。SPSS 里的 t 检验就是用来把这种"肉眼判断"换成"概率判断"的工具,单样本 t 检验回答的是"一个样本均值与已知总体均值是否有显著差异",独立样本 t 检验回答的是"两组互不相关的样本均值是否来自同一个总体"。
这类内容对教育、心理、医学、社科的问卷数据分析最实用,也是 SPSS 入门阶段最容易踩坑的一环——数据录错列、分组变量编错码、方差齐性不看就直接读第一行输出,都会让结论反过来。下面从数据准备开始,一路走到输出解读和复算验证,每一步都给出可直接抄进 SPSS 的语法。
2. SPSS 数据准备:变量视图、分组编码与 t 检验前的正态性检查
2.1 单样本与独立样本的数据排布差异
很多人第一次做独立样本 t 检验,卡住的地方不是统计,而是数据怎么摆。SPSS 对这两种检验要求的数据结构完全不同,摆错了菜单里连变量都拖不进去。
单样本 t 检验只需要一列测量值,样本的每一行就是一个观测,没有分组信息。上面那 14 个兴趣分数就属于这种情况,一列interest,14 行。
独立样本 t 检验需要两列:一列是测量值(因变量),一列是分组标识(自变量)。一班和二班的心理健康分数必须竖着堆在同一列mental里,共 24 行,再用第二列class标注每行属于哪个班。常见的错误做法是把两个班分开写成两列,然后在对话框里勾"成对变量"——那是配对样本 t 检验,适用前提是两组数据一一对应(比如同一批人前后测),跟"分别从两个班随机抽取 12 人"完全不是一回事,强行这么算,自由度、p 值全错。
提示:判断标准很简单,两组人之间有没有一一对应关系。有对应(同一批被试的前后测、配对设计的双胞胎)用配对样本,没有对应(两个班、两个组)用独立样本。
2.2 变量视图里的四行设置
变量视图(Variable View)里需要落到实处的只有几个字段,其余保持默认即可。
| 变量名 | 类型 | 小数位 | 值标签 | 测量尺度 |
|---|---|---|---|---|
| interest | 数值 Numeric | 2 | 无 | 标度 Scale |
| mental | 数值 Numeric | 0 | 无 | 标度 Scale |
| class | 数值 Numeric | 0 | 1=一班,2=二班 | 名义 Nominal |
class是分类变量,测量尺度选"名义";两个分数变量选"标度"。值标签一定要写,否则输出里的组别只显示 1 和 2,报告时还得回头查代码本。分组变量的编码习惯用 1 和 2,不要用 0 和 1 之外的跳跃值,SPSS 的T-TEST GROUPS语法里要显式写出这两个值,写错一个数字就会提示找不到组。
如果不想手动敲数据,可以直接用语法把数据灌进去,这段可以整段复制到语法窗口跑:
DATA LIST FREE / interest. BEGIN DATA 90 85 88 92 95 99 100 89 92 91 93 88 87 95 END DATA. VARIABLE LABELS interest '学习兴趣测试分数'. VARIABLE LEVEL interest (SCALE). EXECUTE.DATA LIST FREE表示按空白分隔自由读入,BEGIN DATA ... END DATA包住原始数据块,VARIABLE LEVEL把测量尺度显式声明为标度,避免 SPSS 把整数变量误判成名义变量影响后续菜单过滤。跑完这段,数据视图里就应该出现一列 14 行的数据,右下角显示"14 个案例"。
2.3 做 t 检验之前先看分布
t 检验对数据有两个隐藏要求:观测独立、样本来自近似正态的总体。样本量小的时候,正态性对结论的影响会被放大,14 个人的样本属于必须检查的区间。常用做法是用探索分析一次性拿到描述统计和正态性检验:
EXAMINE VARIABLES=interest /PLOT BOXPLOT HISTOGRAM NPPLOT /STATISTICS DESCRIPTIVES /NOTOTAL./PLOT里NPPLOT输出正态 Q-Q 图,点基本贴着对角线就说明没有严重偏态;/STATISTICS DESCRIPTIVES给出均值、标准差、偏度峰度;/NOTOTAL是去掉总合计行,减少输出噪音。看正态性检验表时重点看 Shapiro-Wilk 这一列,样本量小于 50 时它以更高的检验效能著称。p 大于 0.05 只能说明"没有足够证据推翻正态",不等于数据一定正态,配合直方图和 Q-Q 图一起看更稳妥。如果偏态严重且样本量小,可以退一步用 Wilcoxon 符号秩检验代替单样本 t 检验,结论表述改成"中位数差异"。
3. 单样本t检验实战:从91.71与80的比较拆解 t=9.98、df=13 与 p 值
3.1 菜单路径与等价语法
菜单操作是"分析 → 比较均值 → 单样本 T 检验",把interest拖进"检验变量",在"检验值"框里填总体均值 80。菜单点完一次之后,SPSS 会在语法窗口留下等价语句,建议直接改用语法,方便复现和改参数:
T-TEST /TESTVAL=80 /MISSING=ANALYSIS /VARIABLES=interest /CRITERIA=CI(.95)./TESTVAL=80就是要比较的总体均值,这个数字必须来自外部已知信息,不能拿样本均值反推;/MISSING=ANALYSIS表示按分析逐次排除缺失值,而不是整行删除;/CRITERIA=CI(.95)指定 95% 置信区间,改显著性水平就改这里的 0.95,比如做 99% 区间写.99。
3.2 t 值是怎么被算出来的
SPSS 输出的t=9.98, df=13, p<.001不是黑箱,手算一遍就知道每个数字从哪来。单样本 t 统计量的定义是:
t = (样本均值 − 总体均值) / (样本标准差 / √n)
代入 14 个兴趣分数:均值 91.71,样本标准差 4.39,n=14,标准误 = 4.39 / √14 = 1.173。分子是 91.71 − 80 = 11.71,于是 t = 11.71 / 1.173 ≈ 9.98。自由度 df = n − 1 = 13,来自用样本标准差估计总体标准差时损失的那一个自由度。
按这个逻辑,可以用 Python 独立复算一遍,避免把 SPSS 的选项点错还不自知:
import numpy as np from scipy import stats interest = np.array([90, 85, 88, 92, 95, 99, 100, 89, 92, 91, 93, 88, 87, 95]) n = len(interest) mean, sd = interest.mean(), interest.std(ddof=1) # ddof=1 才是样本标准差 se = sd / np.sqrt(n) t_manual = (mean - 80) / se print(f"n={n}, mean={mean:.2f}, sd={sd:.2f}, se={se:.3f}") print(f"t(手算)={t_manual:.3f}") print(stats.ttest_1samp(interest, popmean=80)) # 输出 (t, p)ddof=1是关键参数,NumPy 默认ddof=0算的是总体标准差,直接拿来算标准误会把 t 值抬高一点点,样本越小偏差越明显。stats.ttest_1samp返回的是双尾 p 值,与 SPSS 输出表里 "Sig.(双尾)" 那一列对应。
3.3 输出表读哪几列
SPSS 的单样本检验输出是两张表。第一张是单样本统计,给出 N、均值、标准差、标准误,用来自查数据有没有录错——如果这里的均值和你手算的对不上,先别往下看,回去查数据。第二张是单样本检验,包含 t、df、Sig.(双尾)、均值差、差值的 95% 置信区间。
| 输出列 | 本例取值 | 含义 |
|---|---|---|
| t | 9.984 | 检验统计量,越大越偏离原假设 |
| df | 13 | 自由度,n−1 |
| Sig.(双尾) | <.001 | 在原假设成立时出现当前或更极端结果的概率 |
| 均值差值 | 11.714 | 样本均值 − 检验值 |
| 95% 置信区间 | [89.18, 94.25] | 差值的区间估计,不包含 80 |
置信区间这一列经常被忽略,但它比 p 值信息量更大:区间是 [89.18, 94.25],整段都落在 80 的右侧,说明差异不仅显著,方向也明确。报告时写t(13)=9.98, p<.001, 95% CI [89.18, 94.25],比只写"显著高于"专业得多。
3.4 显著之后还要看效应量
p 值小只说明"不太可能是巧合",不说明差异有多大。14 人的样本,均值差 11.71 分配合 4.39 的标准差,用 Cohen's d 衡量:
d = (样本均值 − 检验值) / 样本标准差 = 11.71 / 4.39 ≈ 2.67
按常用经验标准,d 超过 0.8 就算大效应,2.67 属于非常大的量级,说明这个班不仅显著高于全校,而且高出的幅度在分布上是很扎眼的位置。SPSS 本身不直接输出 Cohen's d,可以手算,也可以在语法里加/EFFECT相关的扩展命令,或者用上面那段 Python 顺手算出来。
4. 独立样本t检验实战:两班心理健康分数的方差齐性与 Levene 检验
4.1 数据落位与菜单入口
两个班的心理健康分数共 24 个观测,按 2.1 节说的方式堆成两列。菜单路径是"分析 → 比较均值 → 独立样本 T 检验",mental进"检验变量",class进"分组变量",然后点"定义组",在组 1 和组 2 的框里分别填 1 和 2。这一步没做,输出里会提示无法分组。等价语法如下:
T-TEST GROUPS=class(1 2) /MISSING=ANALYSIS /VARIABLES=mental /CRITERIA=CI(.95).GROUPS=class(1 2)括号里是两个组的编码值,顺序无所谓,但必须和值标签一致;如果分组变量有三个水平(比如三个班),这个命令只能比较其中两组,多组比较应该用单因素方差分析加事后检验,硬拆成多次两两比较会放大第一类错误率。
4.2 Levene 检验决定了读哪一行
独立样本 t 检验的输出表有两行: "假定等方差"和"不假定等方差"。选哪一行,取决于同一张表里"莱文方差等同性检验"的显著性。
| Levene F | Levene Sig. | 应读的行 | 自由度写法 |
|---|---|---|---|
| 1.281 | .269 | 假定等方差 | df = 22 |
| 显著(<.05) | —— | 不假定等方差 | df 带小数,如 21.6 |
本例两组样本量都是 12,方差分别为 84.61 和 108.42,Levene 检验的 F 值约 1.28,p 约 .27,没有证据说明方差不齐,读第一行即可。这里有个容易被忽略的细节:样本量相等时,即使方差略有不齐,t 检验对违背方差齐性的耐受度也较高;真正危险的是样本量悬殊(比如 10 比 200)又方差不齐,这时候第一行和第二行的结论可能完全相反,必须读第二行并配合 Welch 校正。
4.3 从均值差到 p 值
一班的 12 个分数均值 77.67,标准差 9.20;二班均值 75.67,标准差 10.41,均值差只有 2 分。合并方差约为 96.51,合并标准差 9.82,标准误 = 9.82 × √(1/12 + 1/12) = 4.011,于是:
t = (77.67 − 75.67) / 4.011 ≈ 0.499,df = 12 + 12 − 2 = 22
双尾 p 约 .62,远大于 .05,说明两班的心理健康平均分没有统计学上的显著差异。这个结果恰好说明为什么不能只看均值差:2 分的差距配上 9 到 10 分的组内波动、每组只有 12 人的样本量,这个差异完全可能由随机抽样造成。差值的 95% 置信区间约为 [−6.32, 10.32],跨过 0,与不显著的结论一致。
把这三个环节用 Python 一次性验证:
import numpy as np from scipy import stats a = np.array([85, 67, 83, 79, 92, 90, 74, 79, 81, 63, 70, 69]) # 一班 b = np.array([88, 65, 68, 87, 56, 78, 83, 69, 70, 90, 75, 79]) # 二班 print("均值/标准差:", a.mean().round(2), a.std(ddof=1).round(2), b.mean().round(2), b.std(ddof=1).round(2)) print("Levene:", stats.levene(a, b)) # (F, p) print("等方差:", stats.ttest_ind(a, b, equal_var=True)) # 对应第一行 print("Welch :", stats.ttest_ind(a, b, equal_var=False)) # 对应第二行 print("非参 :", stats.mannwhitneyu(a, b, alternative="two-sided"))equal_var=True对应 SPSS 的"假定等方差"行,equal_var=False就是 Welch 校正。SPSS 输出里还会附一张"独立样本效应量"表,给出 Cohen's d 和 Hedges' 校正量,本例 d ≈ 0.20,属于小效应,与 p 值的不显著互相印证。
4.4 均值对不上时先查这三处
数据中心理健康分数的均值按原始数据算是 77.67 和 75.67。如果你在软件里跑出来的均值不是这两个数,别急着怀疑 SPSS,按顺序查三件事:分组变量有没有串行(把一班的某个分数标成了 2)、有没有把两班数据粘到同一列时漏行、缺失值是不是被整行删除了导致 N 变小。这三类错误在输出表第一行的 N 列上会直接暴露——N 不等于 12,就说明数据落位有问题。
5. 复算与报告:交叉验证 SPSS 输出、效应量与练习题自检
第一件事是把"跑出来"变成"算得出来"。上面两段 Python 代码的作用不是替代 SPSS,而是建立一条独立验证链:先用interest.std(ddof=1)对照 SPSS 描述统计里的标准差,再用ttest_1samp对照 t 和 p,两者在保留两位小数后应该完全一致。只要有一项对不上,问题一定在数据或参数上,而不是算法上。这个习惯在写论文时尤其值钱,因为审稿人问"你的 t 值怎么来的",你能立刻答出分子分母。
第二件事是补上 SPSS 默认不输出的两个量:效应量和置信区间宽度。单样本的 Cohen's d 用均值差除以样本标准差,独立样本用均值差除以合并标准差;置信区间 SPSS 会输出,但报告里经常被漏掉。一个完整的报告句式是:该组英语成绩(M=79.00, SD=10.02)与全校均值 75 相比差异不显著,t(14)=1.55, p=.144, 95% CI [−2.55, 10.55], Cohen's d=0.40。第二道练习题——英语成绩 97、85、67 一直到 70,n=15,均值正好 79,与 75 的差是 4 分,标准误约 2.59,t 约 1.55,p 约 .14,结论是不显著。这个例子特别适合用来打脸"均值差 4 分肯定有差异"的直觉。
第三件事是把注意力从 p 值转到三件套上:均值差、置信区间、效应量。p 值受样本量影响极大,n 从 12 加到 120,同样 2 分的均值差可能从 p=.62 变成 p<.01,但效应量几乎不变。判断"差异有没有实际意义",看 d 和区间,比看 p 更靠谱。
注意:用 Welch 校正行报告结果时,自由度是小数(例如 21.6),报告里要照实写,不能四舍五入成整数,否则读者按公式复算会对不上。
最后留一个自查清单式的技巧:每次跑完 t 检验,先把 SPSS 输出的 N 和均值抄下来,与自己手算的两个数字对一遍,再看 Levene 的 p 决定读哪一行,最后确认置信区间有没有跨过检验值(单样本)或 0(独立样本)。这三步走完再下结论,比直接盯着 Sig. 那一格点鼠标稳妥得多。报告里写t(22)=0.50, p=.62, 95% CI [−6.32, 10.32],比写"无显著差异"信息量大得多,也经得起别人拿你的原始分数重算一遍。
本文还有配套的精品资源,点击获取