ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

SPSS均值向量与协方差阵检验实操:Hotelling T2与Box M指南

SPSS均值向量与协方差阵检验实操:Hotelling T2与Box M指南 带本科班的多元统计分析上机课每次讲到“均值向量和协方差阵的检验”这一节教室里总是一片哀嚎。不是这部分理论有多难而是大家翻开SPSS根本不知道点哪里——菜单里搜不到“Hotelling T2”也找不到“Box M”学了一堆检验统计量上机时全对不上号。这篇就把这两个检验在SPSS里的完整操作流程、输出结果怎么读、实验报告怎么写得明明白白课程要交上机报告、考研复试复习、或者工作里需要做多变量组间比较的同学都可以直接照着做。1. 先搞清楚这两个检验到底在干嘛1.1 为什么不能老老实实做一堆单变量t检验很多初学者拿到多组多变量的数据第一反应是对每个变量单独做个t检验或者方差分析然后挨个汇报p值。这个思路看起来没毛病实际上一错错俩。第一第一类错误会失控。假设数据有5个变量每个变量在0.05水平下做检验就算所有变量真的没有组间差异至少有一个变量被误判为显著的概率是多少算一下1减(0.95的5次方)约等于0.226。也就是说你有超过两成的概率会“发现”一个根本不存在的差异。变量越多这个概率越离谱。第二也是最容易被忽视的——单变量检验彻底丢掉了变量之间的相关结构。多元分析里变量很少是孤立的比如身高和体重、语文和数学成绩本身就有相关性。单变量检验把每个变量当成独立个体相当于把一个整体的问题拆碎了看信息损失得很厉害。均值向量检验就是把所有变量当做一个整体在考虑变量相关性的前提下一次性回答“这组数据的均值向量是否等于某个指定向量”或者“几组数据的均值向量是否相等”。1.2 均值向量检验到底在检验什么均值向量检验说得直白点就是把单变量里的t检验和F检验推广到多个变量的场景。单样本情形下检验的是k个变量的均值向量是否等于某个已知向量。比如你测了一批学生的语文、数学、英语成绩想知道这三科的平均分向量是否等于80、75、85这个标准向量——这就是一个典型的一元推广。两组独立样本的情形检验的是两个总体的均值向量是否相等。这个和Hotelling T2检验直接对应T2统计量的本质是组间均值差异的马氏距离而不是简单的欧氏距离。欧氏距离只考虑每个变量差异的大小马氏距离还额外考虑了变量之间相关性带来的“冗余信息”相关性高的变量会被自动降权避免重复计算。三组及以上的情形就进入多元方差分析的范畴SPSS里叫MANOVA。这时候检验的不再是两个向量是否相等而是所有组的均值向量是否完全相同。输出结果里那一堆Pillais Trace、Wilks Lambda、Hotellings Trace、Roys Largest Root都是不同的统计量对应不同的检验方法虽然算法不同但回答的是同一个问题。1.3 协方差阵检验是干什么用的协方差阵检验这一块很多教材讲得云里雾里但它实际应用场景非常明确多元方差分析、判别分析、还有线性混合模型里都有一个“各组协方差阵相等”的假设前提。协方差阵不相等就好比不同组的数据不仅“重点”不一样连“散布形状”都不一样这时候用一个共同协方差阵去拟合所有组结果自然不可靠。SPSS里最常用的协方差阵齐性检验是Boxs M检验。它的原理用大白话讲就是先分别估计每组的协方差阵再估计一个合并的协方差阵如果各组协方差阵差别很大合并估计就会损失过多信息检验统计量就会变大p值变小拒绝原假设。这里必须提前打个预防针Boxs M检验极其敏感样本量一大甚至各组协方差阵只有微小差异都会导致显著所以很多统计学家并不建议把它当做一个严格的“合格/不合格”标准更多是作为参考。后面实操部分我会详细说怎么看这个结果。2. 上机之前数据准备阶段最容易踩的坑2.1 数据结构必须整理成什么样SPSS做多元检验数据格式有硬性要求每一行是一个样本被试每个变量占一列分组信息单独占一列。这就是所谓的长型数据格式。很多同学拿到的数据是宽型的尤其是问卷数据可能每个人一行但分组信息散落在不同变量里或者不同组的被试放在不同Sheet里。这种数据进SPSS之前必须整理成统一格式变量名列放观测值分组列用数字编码比如1、2、3而不是“实验组”“对照组”这样的字符串虽然SPSS也支持字符串分组变量但数字编码更稳妥不容易在后续操作里出幺蛾子。数据清洗也是不能跳过的步骤。检查有没有极端离群值录入错误、缺失值是否被标记为系统缺失点号表示而不是0。特别提醒一句缺失值不要轻易填0更不要用均值填充后直接做多元检验因为多元分析对协方差结构很敏感错误的填充方式会显著改变变量间的相关性。如果缺失样本占比不大直接删掉那一行样本如果嫌浪费用多重插补后再导出成SPSS数据文件也比粗暴填均值靠谱。2.2 样本量和变量数的关系多元检验对样本量有比较苛刻的要求原理上要求样本量大于变量个数否则协方差阵的估计会退化检验根本做不出来。实际操作里我一般建议每组样本量至少是变量数的5到10倍最低不能低于变量数加20。举个例子你要比较3个组的均值向量每个组测了6个变量那么每组至少要有30到60个样本低于这个数即使SPSS能算出结果检验功效也会很弱真实存在的差异很可能检验不出来。如果实在凑不够样本宁可减少分析变量也不要硬塞。2.3 多元正态性先过一遍均值向量检验的理论推导建立在多元正态分布的前提上但实际应用里完全的正态几乎不存在大家更关心的是“偏离得有没有那么离谱”。SPSS里没有专门为多元正态性设计的一键菜单但有个非常实用的替代方案计算每个样本的马氏距离然后看马氏距离是否符合卡方分布。操作上可以用线性回归里的保存功能Analyze → Regression → Linear把要分析的变量放进因变量列表自变量列表留空或者放一个常数变量点击Save按钮在Distances下面勾选MahalanobisSPSS就会生成一个新变量就是每个样本的马氏距离。然后把马氏距离做一个Q-Q图用SPSS的PPLOT语法指定卡方分布自由度等于变量个数如果散点大致落在对角线上就可以认为多元正态性基本没问题。这个方法可能有些同学觉得陌生但它是国际期刊论文里很常见的一种多元正态性诊断方式比逐个变量看直方图可靠得多因为它同时考虑了变量间的相关结构。3. 均值向量检验在SPSS里怎么操作3.1 单样本均值向量的检验菜单里根本搜不到Hotelling不少同学在SPSS里搜“Hotelling”结果什么都搜不到就以为软件不支持这个检验。其实SPSS确实没有单独的“Hotelling T2检验”对话框但有一个等价的办法——用一般线性模型GLM的截距检验来实现。具体步骤是Analyze → General Linear Model → Multivariate把要检验的多个变量全部选入“因变量”列表因子框留空不填点开Options在Display区域勾选“Intercept”有些版本里默认就勾上了确定运行。这里解释一下原理SPSS的GLM在没有任何因子变量时相当于把所有样本当成一组截距项检验的就是这组样本的均值向量是否全部为0。如果你要检验均值向量是否等于某个非零向量比如想检验三科成绩是否等于(80, 75, 85)需要先用Transform → Compute Variable对每个原始变量减去对应的目标值生成三个新变量再用新变量去做上述GLM操作。看结果的时候直接看SPSS输出里的“截距”那一行Pillais Trace、Wilks Lambda等几个统计量的显著性检验结果就是多元Mean向量检验的结果。如果p值小于0.05拒绝原假设说明均值向量不等于目标向量。3.2 两组独立样本的均值向量比较两组数据是最常见的情形比如实验组和对照组各测了若干个指标想知道两组整体上有没有差异。操作上同样是Analyze → General Linear Model → Multivariate把指标变量放入因变量列表把分组变量放入固定因子框然后确定运行。SPSS会输出四行检验统计量Pillais Trace、Wilks Lambda、Hotellings Trace、Roys Largest Root。这四行对应的p值通常非常接近一般以Wilks Lambda为主因为它是最经典、文献里最常报告的。这里要说一个很多人不知道的对应关系两组的情况里这四个多元统计量本质上都是Hotelling T2的不同变形Wilks Lambda和T2之间还有精确的数学转换关系。所以你可以放心虽然菜单里没写Hotelling T2但你已经做完了等价检验。如果整体检验显著下一步通常还想知道具体是哪个变量有组间差异。这时候看输出里的“检验主体间效应”表格Tests of Between-Subjects Effects这个表格会对每一个因变量单独做F检验相当于单变量方差分析的结果。要注意的是这个表只是事后探索性分析汇报的时候要说明它是整体显著后的后续检验不能把它的p值当成独立假设检验来解读。3.3 三组及以上用MANOVA统计量怎么选三组及以上情形操作和两组基本一样Analyze → General Linear Model → Multivariate因变量放指标固定因子放分组变量。输出里同样有四个多元统计量但在样本量不均衡或者变量数较多的情况下四个统计量的p值会出现差异。这时候怎么选我的经验是如果各组样本量大致相当Wilks Lambda最稳妥如果样本量比较小或者数据可能偏离多元正态优先看Pillais Trace它是最稳健的一个对正态性偏离和协方差阵不齐的容忍度最高。Hotellings Trace通常和Wilks Lambda结论一致Roys Largest Root是基于最大特征根的检验当多个组别中有两组差异特别大时它功效很高但整体检验功效在复杂情况下会弱一些一般不怎么作为首选。结论显著后SPSS默认只输出“哪些变量组间有差异”的单变量F检验。如果你还需要知道“究竟是哪两组之间有差异”得回去再做一次单变量的单因素方差分析配合事后多重比较比如Tukey或者Bonferroni这一步SPSS不会自动帮你做很多实验报告就漏在这里。4. 协方差阵齐性检验的SPSS实现4.1 Boxs M检验藏在哪个菜单里协方差阵齐性检验在SPSS里不是没有而是藏得比较深而且不同版本的菜单位置不太一样。比较新版本的SPSS可以用Analyze → General Linear Model → Multivariate把变量放好后点击Options按钮在Display区域勾选“Boxs M test for equality of covariance matrices”确定运行。注意这个选项只在你指定了至少一个固定因子时才会出现没有分组变量时是灰色的。如果你用的版本里这个选项找不到或者说你懒得翻菜单还有一个几乎全版本通用的做法用判别分析“借”这个检验。操作是Analyze → Classify → Discriminant把分组变量选入Grouping Variable并定义范围比如1到3把指标变量选入Independents然后打开Statistics按钮勾选Boxs M确定运行。输出结果中会有一个“协方差矩阵的检验”的表格就是Boxs M检验。两种方法算出结果完全一样只是入口不同。我用后面这种方式更多因为它在老版本和新版本里都存在不容易踩版本的坑。4.2 Boxs M输出结果怎么看SPSS输出中会给出一个表格包含Boxs M统计量、F值、第一自由度和第二自由度以及Sig值。需要注意上面行是近似F值旁边可能还有一个基于不同校正公式的F值两者差别通常很小。判断规则很简单Sig值大于0.05说明没有足够证据拒绝各组协方差阵相等的原假设认为协方差阵齐性成立Sig值小于0.05说明拒绝原假设协方差阵不齐。但这里必须强调两点。第一Boxs M检验高度依赖多元正态性。如果数据本身不满足多元正态检验结果很容易假阳性——也就是说协方差阵其实没多大问题但因为数据偏态检验告诉你“不齐”。所以做协方差阵检验之前最好先做一下前面说的多元正态性检查。如果正态性都不满足Boxs M的结果不能作为唯一依据。第二样本量很大时Boxs M会过度敏感。样本量上千以后协方差阵微小的、实际无伤大雅的差异都会导致显著。这时候我通常会再看一个辅助指标协方差阵的行列式值或者各组协方差阵的对数行列式。如果各组对数行列式差异不大即使Boxs M显著也可以认为偏离程度在可接受范围内后面的多元方差分析照常做但结果解读时要说明这一点。4.3 协方差阵不齐后续分析怎么调整如果检验结果明确是协方差阵不齐而且不是样本量和正态性的副作用那后面的多元方差分析结果就需要谨慎处理。SPSS的GLM Multivariate里Options对话框中还有一个“基于修正模型的检验”之类的选项实际上就是针对方差不齐的稳健校正。更重要的是如果只是两组比较可以改用更稳健的统计量比如Brown-Forsythe检验或者Welch修正SPSS的单变量方差分析里可以直接选多元情形下则优先报告Pillais Trace因为它在协方差阵不齐时相对最稳健。另一种思路是改用不做协方差阵假设的方法比如基于距离的置换检验PERMANOVA或者对数据进行某种变换取对数、Box-Cox变换改善协方差阵的齐性。这块已经超出了SPSS默认菜单的范围但如果你做毕业设计或者发论文遇到协方差阵严重不齐的情况这些方法是解决问题的正路。5. 常见报错和结果误读速查手册5.1 结果里出现警告“矩阵奇异”怎么处理做GLM多元分析时经常有同学发现结果表里某些统计量显示为“.”或者直接报错“矩阵奇异”。这是因为协方差阵的逆矩阵算不出来本质原因通常有两个一是变量之间存在高度共线性。比如你同时放了“总分”和“语文分”“数学分”几个变量总分等于部分之和变量间出现完全线性相关协方差阵就是奇异的。解决办法是去掉冗余变量。二是样本量不够。样本量小于或等于变量个数时协方差阵的估计本身就不可靠很容易出现奇异。解决办法是增大样本量或者精简变量。5.2 结果显著不等于差异“大”多元检验给出p小于0.05只能说明检测到了统计显著的差异完全没说明差异的大小。一个样本量很大的研究哪怕组间差异小到毫无实际意义p值也可能非常小。反过来样本量小的时候明明两组差异肉眼可见p值却可能不显著。所以在写实验报告的时候光汇报p值是不够的。均值向量检验之外建议顺便报告一个效应量。偏eta方Partial Eta Squared是SPSS多元分析输出里自带的一个指标位于主体间效应检验表里数值范围在0到1之间一般认为0.01算小效应、0.06算中等效应、0.14以上算大效应。报告格式可以写成Wilks Lambda 0.62F(6, 73) 4.28p 0.001偏eta方 0.24。这样信息才算完整。5.3 实验报告和论文里该汇报哪些内容结合我批改实验报告的经验一份能拿高分的均值向量和协方差阵检验报告至少要包含这么几块内容第一研究问题和假设要说清楚检验的是哪个均值向量、协方差阵齐性检验服务什么前提第二数据描述包括样本量、变量名称、分组情况、缺失值处理方式第三前提检验结果多元正态性诊断和协方差阵检验的结论第四多元检验的结果包括统计量、自由度、p值和效应量第五如果整体显著补上单变量事后检验的结果。最容易被忽略的是协方差阵检验的结果和多元正态性的诊断过程。很多同学直接跳过前提检验上来就汇报均值检验结果这在严格的老师那里是要扣分的因为统计检验的正确性完全建立在这些前提之上。5.4 一个完整的操作流程清单最后整理一个我自己上机时用的流程清单基本可以应对大多数实验课的要求准备好长型数据文件分组变量用数字编码。先做描述统计确认没有录入错误和极端异常值。用回归保存马氏距离对马氏距离做卡方Q-Q图检查多元正态性。用GLM Multivariate做均值向量检验选择Pillais Trace为主要报告统计量。在GLM或判别分析中勾选Boxs M检查协方差阵齐性。如果前提检验不满足记录偏离程度选择更稳健的统计量或者对数据做变换。最后整理结果写清楚检验的统计量和p值补上效应量和单变量事后检验。按这个顺序走一遍基本上不会漏掉关键步骤。最后再分享一个小经验上机实验最怕的不是统计方法不会而是数据整理阶段没做好。我见过太多同学因为分组变量编码混乱、缺失值处理不干净导致后面所有结果都带着问号。做多元分析之前花30分钟把数据结构理清楚了后面实操就是按部就班的事。均值向量和协方差阵检验这块第一次操作觉得绕做过一遍之后就发现SPSS的菜单设计其实是按照“先做前提检验、再做核心检验、最后补后续分析”的逻辑来的这个流程思维比记住某个按钮在哪更重要。
返回列表