使用 SPSS 创建多变量聚类条形图

By Ruben Geert van den Berg 发表于 SPSS 图表

  • 示例数据
  • 无需 VARSTOCASESVARSTOCASES
  • 重构数据
  • SPSS 图表构建器 - 基本步骤
  • 最终结果

本教程将展示如何在 SPSS 中创建如下所示的聚类条形图。由于这需要重构我们的数据,我们将首先使用一个非常酷的技巧来实现。

SPSS 聚类条形图示例

示例数据

一项针对 N = 259 名受访者的调查,询问了他们“您通常使用哪些交通工具?” 受访者可以选择一种或多种交通方式用于工作和休闲相关的旅行。由此获得的数据位于 transportation.sav 中,部分内容如下所示。

SPSS Varstocases 示例数据 208

请注意,我们的数据包含 2 组(工作和休闲)的 8 个二分变量(交通方式选项)。为了创建我们的图表,我们需要垂直堆叠这两组变量。通常的方法是使用 VARSTOCASES,如下所示。

SPSS VARSTOCASES 示例图

现在,我们_可以_对我们的数据使用 VARSTOCASES,但我们觉得这对于 8 个变量来说相当繁琐。我们将用一个技巧来代替它,这个技巧可以产生更好的结果,并且需要更少的语法。

无需 VARSTOCASESVARSTOCASES

下面的屏幕截图说明了如何在不需要 语法 的情况下模拟 VARSTOCASES

SPSS Varstocases 博客 208

这种方法更省力,尤其是在堆叠更多变量时:将 IF 命令放在步骤 中的 DO REPEAT 循环中即可。

重构数据

现在让我们在 transportation.sav 上运行这些步骤,使用以下语法。如果您不确定某个命令,可以在运行 EXECUTE 后,在 数据视图 中检查其结果。

***创建检查表 1.
** descriptives all.

***将 id 添加到数据集.
** compute id = $casenum.

***垂直地将数据集堆叠到自身上.
** add files file */file *.

***识别复制的案例.
** compute Purpose = ($casenum > id).
value labels Purpose 0 'Work' 1 'Leisure'.

***将值从 leisure 变量移动到 work 变量.
** do repeat #target = work_1 to work_8 / #source = leis_1 to leis_8.
if(purpose) #target = #source.
end repeat.

***创建检查表 2.
** means work_1 to work_8 by Purpose.

如果一切顺利,这两个检查表将显示完全相同的信息。

最终数据调整

现在,我们的数据具有运行图表所需的结构。但是,仍然需要进行一些调整:

  • 由于我们想看到百分比而不是比例,我们将 RECODE 我们的 0-1 变量转换为 0-100;
  • 接下来,FORMATS 将百分号添加到重新编码的值中;
  • 图表构建器仅计算定量变量的均值。因此,我们将所有测量级别设置为刻度 (scale);
  • 我们将删除一些已经变得冗余的变量。
***将 1 转换为 100 以表示百分比.
** recode work_1 to work_8 (1 = 100).

***将格式设置为百分比.
** formats work_1 to work_8 (pct8).

***设置测量级别 (SPSS 图表构建器和自定义表需要).
** variable level work_1 to work_8 (scale).

***删除 (现在) 冗余变量.
** add files file */drop leis_1 to id.

SPSS 图表构建器 - 基本步骤

下面的屏幕截图描绘了一些基本步骤,这些步骤将生成我们的图表。

SPSS 聚类条形图对话框 1

将聚类条形图拖放到画布上; 一次性选择、拖放所有结果变量到 y 轴框中。单击弹出对话框中的“确定”; 将 “Purpose”(休闲或工作)拖到颜色 (Color) 框中; 浏览这些选项卡,选择 “Transpose”(转置)并为图表选择一些标题和副标题; 单击 P aste(粘贴)将生成以下语法。

***从 SPSS 图表构建器粘贴的语法.
**

GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=MEAN(work_1) MEAN(work_2)
MEAN(work_3) MEAN(work_4)
MEAN(work_5) MEAN(work_6) MEAN(work_7) MEAN(work_8) Purpose MISSING=LISTWISE
REPORTMISSING=NO
TRANSFORM=VARSTOCASES(SUMMARY="#SUMMARY" INDEX="#INDEX")
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: SUMMARY=col(source(s), name("#SUMMARY"))
DATA: INDEX=col(source(s), name("#INDEX"), unit.category())
DATA: Purpose=col(source(s), name("Purpose"), unit.category())
COORD: rect(dim(1,2), transpose(), cluster(3,0))
GUIDE: axis(dim(2), label("Mean"))
GUIDE: legend(aesthetic(aesthetic.color.interior), label("Purpose"))
GUIDE: text.title(label("Transportation Methods Used on Regular Basis"))
GUIDE: text.subsubtitle(label("All Respondents | N = 259"))
SCALE: cat(dim(3), reverse(), include("0", "1", "2", "3", "4", "5", "6", "7"))
SCALE: linear(dim(2), include(0))
SCALE: cat(aesthetic(aesthetic.color.interior), reverse(), include("0.00",
"1.00"))
SCALE: cat(dim(1), include("0.00", "1.00"))
ELEMENT: interval(position(Purpose*SUMMARY*INDEX), color.interior(Purpose),
shape.interior(shape.square))
END GPL.

初始结果

SPSS 聚类条形图未样式化 208

Whoomp! 就在那里。 我们创建了我们想要的图表。可悲的是,它看起来不太好:

  • 尽管将所有变量格式设置为 PCT4(零小数位的百分比),但 x 轴上缺少百分号;
  • x 轴标记为“Mean”(平均值)而不是“Percentage”(百分比);
  • 图表不显示网格线。

所有这些问题都可以在图表编辑器(Chart Editor)中修复,如果我们双击图表,图表编辑器将打开。不过,一个更好的选择是开发和应用图表模板。这样做之后的最终结果如下所示。

最终结果

SPSS 聚类条形图示例