从统计的角度来看,哪个是显示列联表的最佳图,该列联表通常通过卡方检验进行分析?它是闪避的条形图、堆叠条形图、热图、等高线图、抖动散点图、多线图还是其他?应该显示绝对值还是百分比?
编辑:或者正如@forecaster 在评论中所建议的那样,数字表本身就是一个简单的图,应该足够了。
从统计的角度来看,哪个是显示列联表的最佳图,该列联表通常通过卡方检验进行分析?它是闪避的条形图、堆叠条形图、热图、等高线图、抖动散点图、多线图还是其他?应该显示绝对值还是百分比?
编辑:或者正如@forecaster 在评论中所建议的那样,数字表本身就是一个简单的图,应该足够了。
不同的视觉效果会更好地突出不同的特征,但马赛克图适用于一般视图(检查是否有任何突出显示)。也许这就是你所说的躲避条形图的意思。像大多数选项一样,它们不是对称的,因为它们在一个维度上比另一个维度更好地表示相对频率。一个很好的特点是边缘频率也被表示出来。
这里不会有一个万能的解决方案。如果您有一个非常简单的表格(例如),那么简单地展示表格可能是最好的。如果你想要一个实际的数字,马赛克图(正如@xan 建议的那样)可能是一个不错的起点。还有一些类似于马赛克图的其他选项,包括筛子图、关联图和动态压力图(请参阅我的问题:列联表的筛子/马赛克图的替代方案);Michael Friendly 的书Visualizing Categorical Data将是该主题的一个很好的(基于 SAS 的)资源,而vcd 包是在 R 中实现这些想法的一个很好的资源。
然而,在我看来,由于表有更多的行和列,这些变得更难使用。一种不同类型的可视化选项是执行/绘制对应分析。对应分析类似于对列联表的行和列运行主成分分析。然后将两者与双标图一起绘制。这是一个基于 R 的示例,使用来自@xan 的答案的数据:
library(ca)
tab = as.table(rbind(c(28, 4, 0, 56),
c(38, 5, 9, 10),
c( 6, 6, 14, 13) ))
names(dimnames(tab)) = c("activity", "period")
rownames(tab) = c("feed", "social", "travel")
colnames(tab) = c("morning", "noon", "afternoon", "evening")
tab
# period
# activity morning noon afternoon evening
# feed 28 4 0 56
# social 38 5 9 10
# travel 6 6 14 13
plot(ca(tab))
为了解释这个图,相同类型的两个点越接近,这两个行/列配置文件越相似。并且不同类型的两个点越接近,它们的概率质量在代表它们相交的单元格中的概率越大。
我同意“最佳”情节并不独立于数据集、读者群和目的而存在。对于两个测量变量,散点图可以说是一种设计,除了特定目的外,其他所有变量都在后面,但对于分类数据,没有明显的市场领导者。
我在这里的目的只是提及一种简单的方法,它经常被重新发现或重新发明,但即使在涵盖统计图形的专着或教科书中也经常被忽视。
首先是示例,涵盖与 xan 发布的相同数据:
如果需要一个名称,通常是这样,这是一个双向条形图(在这种情况下)。我不会在这里列出其他术语,除了多重条形图是一种具有相似风格的常见替代方法。(我对“多个条形图”的小反对意见是“多个”并不排除非常常见的堆叠或并排条形图,而“双向”对我来说更清楚地暗示了行和列布局,尽管反过来它可以举一些例子来说明这一点。)
这种情节的优点和缺点也很简单,但我会说明一些。由于我喜欢这种设计(至少可以追溯到 1930 年代),其他人可能想要添加更尖锐的批评。
+1。这个想法很容易理解,即使是非技术团体。在此示例中,条形高度或条形长度对频率进行编码。在其他示例中,它们可以编码以您喜欢的任何方式计算的百分比、残差等。
+2。行列结构与表结构相匹配。您也可以添加数值。非常少量甚至隐含的零都清晰可见,而其他设计(例如堆叠条形图、马赛克图)并非总是如此。行和列标签通常比添加键或图例更有效,需要心理“来回”。因此,这种设计混合了图表和表格的想法,这似乎让一些读者感到困扰;相反,我认为图形和表格之间的强烈区别只是历史遗留问题,现在已经过时了,因为研究人员可以准备自己的文件,而不必依赖设计师、合成师和打印机。
+3。原则上,扩展到三通和更高设计很容易。将两个或多个变量作为复合变量放在任一轴或两个轴上,或给出此类图的数组。自然,设计越复杂,解释就越复杂。
+4。该设计清楚地允许任一轴上的序数变量。顺序可以通过适当的阴影以及该轴上的类别顺序来表示(例如)。轴上的类别顺序可以由它们的含义来确定,或者更好地由频率来确定;根据文本标签的字母顺序可能是默认设置,但绝不应该是唯一考虑的选择。
-1。由于设计的一般性,情节在显示某些类型的关系方面可能效率较低。特别是,马赛克图可以非常清楚地偏离独立性。相反,当分类变量之间的关系复杂或不清楚时,通常没有图表能很好地显示比这个弱事实更多的信息。
-2。在某些方面,该设计通过为每个交叉组合留出空间,无论它是否发生或发生频率如何,在空间使用方面效率低下。这是被视为美德的同一原则的缺点。无论频率如何,空间上方的特定设计均相同;牺牲通常会牺牲可读的边缘标签,我非常重视。在这个例子中,文本标签碰巧都很短,但这远非典型。
注意:xan 的数据似乎只是被发明出来的,所以我不会尝试解释,就像在其他答案中尝试的那样。但是一些朴素的智慧值得在这里说最后一句话:最适合您的设计是最能向您和您的读者传达您关心的一些真实数据的结构的设计。
其他例子包括
编辑 总体思路和 Stata 实现现在都写在了这篇论文中。
为了补充@gung 和@xan 的答案,这里有一个vcd
在 R中使用的马赛克和关联图的示例。
> tab
period
activity morning noon afternoon evening
feed 28 4 0 56
social 38 5 9 10
travel 6 6 14 13
要获得地块:
require(vcd)
mosaic(tab, shade=T, legend=T)
assoc(tab, shade=T, legend=T)
两者都直观地呈现与预期频率的偏差......默认是相互独立的模型,但可以通过参数进行更改(例如,如果有明确的响应变量,则为联合独立expected
) 。
也可以看看: