什么是可视化李克特响应集的好方法?
例如,一组项目询问 X 对一个人关于 A、B、C、D、E、F 和 G 的决定的重要性?有什么比堆积条形图更好的吗?
- 对 N/A 的响应应该怎么做?他们如何被代表?
- 条形图应该报告百分比还是响应数?(即条形的总长度应该相同吗?)
- 如果是百分比,分母是否应包括无效和/或 N/A 响应?
我有自己的观点,但我在寻找其他人的想法。
什么是可视化李克特响应集的好方法?
例如,一组项目询问 X 对一个人关于 A、B、C、D、E、F 和 G 的决定的重要性?有什么比堆积条形图更好的吗?
我有自己的观点,但我在寻找其他人的想法。
我喜欢居中的计数视图。这个特定版本删除了中立的答案(有效地将中立和 n/a 视为相同)以仅显示同意/不同意意见的数量。0 点是红色和蓝色的交汇点。计数轴被剪掉。
为了比较,这里有五个与叠加百分比相同的答案,显示中性(灰色)和没有答案(白色)。
更新:建议类似方法的论文:绘制李克特和其他评定量表 (PDF)
堆积条形图通常被非统计学家很好地理解,只要它们被温和地介绍。如果它们是序数项(例如李克特),则将它们按一个通用度量(例如 0-100%)缩放是有用的,每个类别使用渐变颜色。我更喜欢dotchart(克利夫兰点图),当没有太多项目并且不超过3-5个响应类别时。但这实际上是视觉清晰度的问题。我通常提供 %,因为它是一种标准化度量,并且仅使用非堆叠条形图报告 % 和计数。这是我的意思的一个例子:
data(Environment, package="ltm")
Environment[sample(1:nrow(Environment), 10),1] <- NA
na.count <- apply(Environment, 2, function(x) sum(is.na(x)))
tab <- apply(Environment, 2, table)/
apply(apply(Environment, 2, table), 2, sum)*100
dotchart(tab, xlim=c(0,100), xlab="Frequency (%)",
sub=paste("N", nrow(Environment), sep="="))
text(100, c(2,7,12,17,22,27), rev(na.count), cex=.8)
mtext("# NA", side=3, line=0, at=100, cex=.8)
lattice
使用或可以实现更好的渲染ggplot2
。在这个特定示例中,所有项目都具有相同的响应类别,但在更一般的情况下,我们可能期望不同的类别,因此显示所有项目似乎不会像这里的情况那样多余。但是,可以为每个响应类别赋予相同的颜色,以便于阅读。
但我会说,当所有项目都具有相同的响应类别时,堆叠条形图会更好,因为它们有助于了解一种响应模式在项目之间的频率:
我还可以想到某种热图,如果有许多具有相似响应类别的项目,这很有用。
应报告缺失的回答(尤其是在不可忽略或仅针对特定项目/问题进行本地化时),最好是针对每个项目。通常,每个类别的响应百分比是在没有 NA 的情况下计算的。这通常在调查或心理测量学中完成(我们所说的“表达或观察到的反应”)。
PS
我可以想到更多花哨的东西,如下图所示(第一个是手工制作的,第二个是来自ggplot2
, ggfluctuation(as.table(tab))
),但我认为它传达的信息不如 dotplot 或 barchart 准确,因为表面变化很难欣赏。
我认为chl的回答很棒。
我可能要补充的一件事是,对于您想要比较项目之间的相关性的情况。为此,您可以对有序分类数据使用相关散点图矩阵之类的东西
(该代码仍需要一些调整 - 但它给出了总体思路......)