SPSS卡方检验与成对Z检验

作者:Ruben Geert van den Berg 发表于 卡方检验

大多数数据分析师都熟悉用于方差分析(ANOVA)的事后检验。但奇怪的是,卡方独立性检验的事后检验并没有被广泛使用。本教程将引导你了解在SPSS中获取和解释卡方独立性检验的事后检验的两种方法。

  • 选项 1 - CROSSTABS (交叉表)
  • 带有成对Z检验的CROSSTABS输出
  • 选项 2 - Custom Tables (定制表)
  • 带有成对Z检验的Custom Tables输出
  • 这些Z检验可以被重复验证吗?

示例数据

我们询问了N = 300名受访者的教育水平和婚姻状况。由此获得的数据位于edu-marit.sav文件中。本教程中的所有示例都使用此数据文件。

SPSS 示例数据:教育程度与婚姻状况

卡方独立性检验

首先,让我们看看教育水平和婚姻状况是否相关:我们将使用下面的语法运行一个卡方独立性检验。这将创建一个列联表,显示频率和列百分比。

***Basic crosstabs with chi-square independence test.
**
crosstabs marit by educ
/cells count column
/statistics chisq.

首先,让我们看看下面的实际检验结果。

SPSS卡方独立性检验的输出结果

首先,我们拒绝独立性的零假设:教育水平和婚姻状况是相关的,χ² (12) = 23.57,p = 0.023。请注意,SPSS错误地将这个单尾显著性报告为双尾显著性。但无论如何,我们真正想知道的是 哪些 百分比彼此之间存在显著差异?

选项 1 - CROSSTABS(交叉表)

我们将通过稍微修改我们的语法来回答这个问题:在/CELLS子命令中添加BPROP(“Bonferroni proportions”的缩写)即可。

***Crosstabs with pairwise z-tests.
**
crosstabs marit by educ
/cells count column **bprop**. /*bprop = Bonferroni adjusted z-tests for column proportions.

运行这个简单的语法会产生如下表所示的结果。

带有成对Z检验的CROSSTABS输出

SPSS交叉表 Bonferroni 校正的比例 Z 检验输出

首先,仔细看看表格脚注:“每个下标字母表示教育水平类别的一个子集,其列比例在0.05水平上彼此之间没有显著差异。” 这些结论是基于独立比例的Z检验。这些结论也适用于表格中显示的百分比:在每一行中,使用Z检验比较每对可能的百分比。如果它们没有差异,它们会得到一个相似的下标。反之,在每一行中,_不_共享下标的百分比是显著不同的。例如,从未结婚的中学学历的人的百分比为46.2%,其频率n = 18被标记为“a”。对于拥有硕士学位的人,16.7%的人从未结婚,其频率为9,_没有_被标记为“a”。这意味着46.2%与16.7%有显著差异。

拥有本科学历且从未结婚的人的频率(n = 21或25.0%)被标记为“a”和“b”。它与标记为“a”、“b”或两者的任何单元格没有显著差异。这些单元格都是该表行中的单元格。

现在,对每一行中的检验数量应用Bonferroni校正。这意味着对于\(k\)列, \[P_{bonf} = P\cdot\frac{k(k - 1)}{2}\] 其中

  • \(P_{bonf}\) 表示 Bonferroni 校正后的 p 值,并且
  • \(P\) 表示“正常”(未校正)的 p 值。

好的,现在我们的表有 5 个教育水平作为列,所以 \[P_{bonf} = P\cdot\frac{5(5 - 1)}{2} = P \cdot 10\] 这意味着每个 p 值乘以 10,然后才与 alpha = 0.05 进行比较。或者 - 反过来 - 只有产生未校正的 p < 0.005 的 Z 检验才会被标记为“显著”。这适用于此表中报告的所有检验。我稍后会验证这些说法。

选项 2 - Custom Tables(定制表)

获取卡方检验的“事后检验”的第二种选择是“定制表”。它们位于“_A_nalyze” (分析) SPSS 菜单箭头 “_T_ables”(表格) SPSS 菜单箭头 “_C_ustom Tables”(定制表) 下,但前提是你拥有“定制表”的许可证。下图展示了一些基本步骤。

SPSS 定制表主对话框示例

你可能想要为教育程度选择频率和列百分比。 我们建议你也为教育程度添加总计。

接下来,我们的 Z 检验可以在“Test Statistics”(检验统计)选项卡中找到,如下所示。

SPSS 定制表成对 Z 检验子对话框

完成这些步骤会产生以下语法。

***Contingency table with pairwise z-tests via CTABLES.
**
CTABLES
/VLABELS VARIABLES=marit educ DISPLAY=DEFAULT
/TABLE marit BY educ [COUNT 'N' F40.0, COLPCT.COUNT '%' PCT40.1]
/CATEGORIES VARIABLES=marit ORDER=A KEY=VALUE EMPTY=INCLUDE TOTAL=YES POSITION=AFTER
/CATEGORIES VARIABLES=educ ORDER=A KEY=VALUE EMPTY=INCLUDE
/CRITERIA CILEVEL=95
/COMPARETEST TYPE=PROP ALPHA=0.05 ADJUST=BONFERRONI ORIGIN=COLUMN INCLUDEMRSETS=YES
CATEGORIES=ALLVISIBLE MERGE=YES STYLE=SIMPLE SHOWSIG=NO.

带有成对Z检验的Custom Tables输出

SPSS 定制表成对 Z 检验输出示例 1

让我们首先尝试理解脚注的内容:“结果基于双侧检验。对于每对显著的组别,列比例较小的类别的键出现在列比例较大的类别中。大写字母(A、B、C)的显著性水平:0.05。检验针对每个最内层子表的一行中的所有成对比较进行了调整,使用 Bonferroni 校正。

现在,对于正常的双向列联表,“最内层子表” 只是整个表。在每一行中,使用 Z 检验比较每对可能的列比例。如果 2 个比例差异显著,则较高的比例会用较低的比例的列字母标记。有点令人困惑的是,SPSS 标记的是频率而不是百分比。

在第一行(从未结婚)中,列 A 中的 D 表示这两个百分比差异显著:对于只完成了中学的那些人(46.2%,来自 n = 39),从未结婚的人的百分比明显高于完成了硕士学位的人(16.7%,来自 n = 54)。

同样,所有 Z 检验都使用 α = 0.05,前提是 Bonferroni 校正了其 p 值,校正因子是表中 的数量。对于我们的示例表,其中包含 5 列,每个 p 值都乘以 \(0.5(5 - 1) = 10\),然后再评估它是否小于所选的 alpha 水平 0.05。

这些Z检验可以被重复验证吗?

可以。可以重复验证。

Custom Tables 具有一个选项,可以创建一个包含所有成对 Z 检验的确切 p 值的表。它位于“Test Statistics”(检验统计)选项卡中。选择它会生成以下语法。

***Contingency table with Bonferroni corrected z-tests (exact p-values) in separate table.
**
CTABLES
/VLABELS VARIABLES=marit educ DISPLAY=DEFAULT
/TABLE marit BY educ [COUNT 'N' F40.0, COLPCT.COUNT '%' PCT40.1]
/CATEGORIES VARIABLES=marit ORDER=A KEY=VALUE EMPTY=INCLUDE TOTAL=YES POSITION=AFTER
/CATEGORIES VARIABLES=educ ORDER=A KEY=VALUE EMPTY=INCLUDE
/CRITERIA CILEVEL=95
/COMPARETEST TYPE=PROP ALPHA=0.05 ADJUST=BONFERRONI ORIGIN=COLUMN INCLUDEMRSETS=YES
CATEGORIES=ALLVISIBLE MERGE=NO STYLE=SIMPLE SHOWSIG=YES.

Z检验的精确P值

SPSS 定制表 Bonferroni Z 检验 P 值输出

对于第一行(从未结婚),SPSS 声称比较列百分比 A 和 D 的 Bonferroni 校正后的 p 值为 p = 0.020。对于我们的示例表,这意味着_未校正_ 的 p 值为 p = 0.0020。 我们使用 Excel Z 检验计算器重复了此结果。考虑到 Bonferroni 校正,它得出了与 SPSS 完全相同的 p 值。

Excel 计算器 Z 检验独立比例

SPSS 报告的所有其他 p 值也已通过我们的 Excel 计算器 完全 重复。

我希望本教程对获取和理解列联表的成对 Z 检验有所帮助。如果你有任何问题或反馈,请在下面给我们留言。

感谢你的阅读!