中级绘图--马赛克图

1 马赛克图

我们已经学习了许多可视化定量或连续型变量间关系的方法。但如果变量是类别型的呢?若只观察单个类别型变量,可以使用柱状图或者饼图;但若有两个以上的类别型变量,该怎么办呢?一种办法是绘制马赛克图(mosaic plot)。在马赛克图中,嵌套矩形面积正比于单元格频率,其中该频率即多维列联表中的频率。颜色和/或阴影可表示拟合模型的残差值。

vcd包中的mosaic()函数可以绘制马赛克图。(R基础安装中的mosaicplot()也可绘制马赛克图,但我还是推荐vcd包,因为它具有更多扩展功能。)

1.1  例子:以基础安装中的Titanic数据集为例,这是一个被充分研究过的数据集。它包含存活或者死亡的乘客数、乘客的船舱等级(一等、二等、三等和船员)、性别(男性、女性),以及年龄层(儿童、成人)。查看该数据集,以平面表的形式展示:

mosaic()函数可按如下方式调用:

mosaic(table)  

其中table是数组形式的列联表。另外,也可用:

mosaic(formula, data=)

其中formula是标准的R表达式,data设定一个数据框或者表格。添加选项shade=TRUE将根据拟合模型的皮尔逊残差值对图形上色,添加选项legend=TRUE将展示残差的图例。

library(vcd)

mosaic(~Class+Sex+Age+Survived, data=Titanic, shade=TRUE, legend=TRUE)

 

结果分析:例如:(1) 从船员Crew到头等舱1st,存活率陡然提高;(2) 大部分孩子都处在三等舱和二等舱中;(3) 在头等舱中的大部分女性都存活了下来,而三等舱中仅有一半女性存活;(4) 船员中女性很少,导致该组的Survived标签重叠(图底部的NoYes)。在本例中,蓝色阴影表明,在假定生存率与船舱等级、性别和年龄层无关的条件下,该类别下的生存率通常超过预期值。红色阴影则含义相反。图形表明,在模型的独立条件下,头等舱女性存活数和男性船员死亡数超过模型预期值。如果存活数与船舱等级、性别和年龄层独立,三等舱男性的存活数比模型预期值低。

posted @ 2021-08-10 16:42  zhang-X  阅读(825)  评论(0)    收藏  举报