在 SPSS 中创建符合 APA 风格的列联表

作者:Ruben Geert van den Berg,隶属于 SPSS 表格

SPSS 中运行简单的列联表非常容易。然而,默认格式不太方便,也不符合 APA 标准。本教程将引导你完成创建所需表格的 3 个选项:

  • CROSSTABS(交叉表):简单易用,但需要一些(手动)编辑。
  • CTABLES(自定义表):速度更快,但稍微困难一些,并且需要自定义表模块的许可。
  • TABLES(表):速度快,但相当具有挑战性。

我们将使用 bank_clean.sav(部分内容如下所示)作为所有示例的数据。下载数据后,你可以自己尝试。

SPSS Bank Sav 数据视图

什么是列联表?

列联表(Contingency table)显示了 2 个或多个变量的值组合的频率。例如,下表显示了 2 个变量(婚姻状况和教育程度)的列联表,也被称为“交叉表(crosstab)”。

简单列联表示例

只有 1 位受访者是中学学历且从未结婚; 总共有 123 位受访者从未结婚; 只有 4 位受访者是中学或更低学历; 该表显示了 442 位受访者的婚姻状况和教育程度的所有组合。

希望列联表能够让你深入了解这些变量之间的关联(如果有的话)。那么它是如何工作的呢?对于一个非常简单的解释,请参见:

在 SPSS 中运行简单的列联表

创建我们刚才看到的表格的最快方法是运行一行 SPSS 语法crosstabs educ by marit.。第一个变量(educ 或教育程度)的类别将成为表格中的行。第二个变量(marit 或婚姻状况)的值将成为列。根据经验,列中包含你要比较的组,行中包含要比较的内容。在本例中,我们_比较_的是婚姻状况组在教育程度上的差异。

如果我们想反过来,_比较_不同教育程度组在婚姻状况上的差异,我们需要交换行和列,并运行 crosstabs marit by educ.

带有列百分比的 CROSSTABS

好的。那么我们的各个组在教育程度上的比较结果如何呢?从我们的第一个表中很难看出,因为每个婚姻状况组都有不同的 n 或样本量。如果添加列百分比,我们可能会看到更多的模式。下面的语法就是这样做的。

***在下面的输出表中,仅显示变量标签和值标签。**
set
tvars labels
tnumbers labels.

***创建带有频率和列百分比的列联表。**
crosstabs educ by marit
/cells count column.

结果

SPSS 列联表频率列百分比

如果我们研究整个表格,似乎丧偶的受访者受教育程度略高于其他人:不少于 56.8% 的人拥有硕士学位,另有 13.5% 的人甚至拥有博士学位。然而,总体模式不是很清楚,我们最好将其可视化为 堆叠条形图

无论如何,表格格式(百分比在行中)实际上并没有帮助,也不符合 APA 指南。所以让我们修复它。

将 CROSSTABS 转换为 APA 表格

一种解决方案是右键单击我们的表格,然后选择 “Edit c o ntent(编辑内容)” SPSS 菜单箭头 “In Separate W i ndow(在新窗口中)”。在打开的透视编辑器中,勾选 “P ivoting trays(透视托盘)”,如下所示。

SPSS Apa 列联表重新排列表格维度 1

现在将统计信息拖放到婚姻状况的正下方,然后直接关闭窗口。

SPSS 重新排列表格维度

现在进行 2 个文本替换:

  • 使用 n 代替 “Count(计数)”
  • 使用 % 代替 “% within Marital status(婚姻状况内的百分比)”

输出查看器 中使用 Ctrl + H 快捷键 应该可以。或者,如果你使用的是 SPSS 22 或更高版本,则使用下面的 OUTPUT MODIFY 语法(更好)。

***可选:设置正确的列标题。**
output modify
/select tables
/tablecells select = ['% within Marital status'] replace = '%' applyto = columnheader
/tablecells select = ['Count'] replace = 'n' applyto = columnheader.

结果

SPSS Apa 列联表从交叉表创建 使用 CROSSTABS 创建的 APA 列联表

这是在 SPSS 中创建 APA 风格列联表的最简单方法。但是,我个人觉得工作量太大了,尤其是对于多个表格。所以让我们考虑 2 个替代方案。

来自 CTABLES 的 APA 列联表

我们刚刚创建的表格可以使用 CTABLES 一次性运行。但是,这仅在你拥有自定义表模块的许可证时才有效。你可以运行 show license. 来检查这一点。如果结果表包含 “Custom Tables”,请尝试下面的语法。

***创建带有 ctables 的 APA 风格列联表。**
ctables
/table educ by marit [count 'n' colpct '%']
/categories variables = educ marit total = yes.

结果

SPSS Apa 列联表从 Ctables 创建 使用 CTABLES 创建的 APA 列联表

CTABLES 非常适合此表,但不幸的是,每个表都需要单独的命令。语法也有些挑战性。我认为你可以从 “A nalyze(分析)” SPSS 菜单箭头T ables(表格)” SPSS 菜单箭头C ustom Tables(自定义表)” 中粘贴它,但我不知何故从未从菜单中获得我想要的结果。

也许更好的方法是复制粘贴编辑多个表格的语法示例。或者使用 Python for SPSS 创建和运行命令。这更快但也更难。但如果你喜欢快速而困难的 - 我当然喜欢 - 那么就去吧。

来自 TABLES 的 APA 列联表

那么如果你没有 CTABLES 的许可证怎么办?好吧,那么还有 TABLES。TABLES 在 1990 年左右被 CTABLES 取代,并从所有文档中删除。但是 - 极少数 SPSS 用户知道 - TABLES 仍然适用于所有最新的 SPSS 版本。

就像这样,下面的语法是 CTABLES 方法的替代方法。

***创建带有 tables 的 APA 风格列联表。**
tables
/format zero
/ftotal = ftot 'Total'
/table educ + ftot by marit > (statistics) + ftot
/statistics count((f3) 'n') cpct((pct5.1) '%':marit).

结果

SPSS Apa 列联表从 Tables 创建 使用 TABLES 创建的 APA 列联表

此列联表与 CTABLES 结果几乎相同。不幸的是,语法甚至更难,更糟糕的是,没有文档。我们可以构建一个从菜单创建 TABLES 命令的工具,但它不会很快出现。

最后的说明

我们展示了在 SPSS 中创建 APA 风格列联表的 3 种方法:

  • CROSSTABS:最简单。你可以一次性创建多个表格,但它们需要相当多的(手动)编辑。
  • CTABLES:立即运行所需的表格,并且可以从菜单中运行。但是,它一次创建一个表格,并且需要额外的许可证。
  • TABLES:也立即生成正确的表格。但是,语法很困难,并且没有菜单。

诚然,这些选项都不是理想的。所以我们可能会构建一个工具,它可以一次性从菜单中运行多个表格。