R软件的马赛克图适用于对多个分类变量进行可视化分析。R基础安装包的函数mosaicplot和vcd包中的函数mosaic都可以实现该功能。
工具/原料
R
分类数据
方法/步骤
1、查看数据,以R自带的数据集HairEyeColor为例。ftable(HairEyeColor),表示把分类数据按列联表的形式显示。从数据中可以看到该数据集有三个分类变量,即:Hair、Eye、Sex。
2、利用mosaicpl艺皱麾酪ot绘制图形。mosaicplot的主要公式为:mosaicplot(x,main,color=NUL讣嘬铮篌L,shade=FALSE,margin=NULL,...)或mosaicplot(formula,data=NULL,...)。本例代码:mosaicplot(~Hair+Eye+Sex,data=HairEyeColor,shade=TRUE,color=TRUE)
3、同样,利用vcd包中的函数mosaic绘制马赛克图。添加选项shade=TRUE将根据拟合模型的皮尔逊残差值对图形上色。添加选项legend=TRUE将展示残差的图例。代码如下:library(vcd)mosaic(HairEyeColor,shade=TRUE,legend=TRUE,color=TRUE)
4、结果表明:在各变量相互独立的情况下,有更多蓝眼睛的金发女性,而棕色眼睛的金发女性很少。对应的模型如下:fm<-loglin(HairEyeColor,list(1,2,3))pchisq(fm$pearson,fm$df,lower.tail=FALSE)从P值可以看到,独立检验结果是显著的。
5、检验性别与头发和眼睛颜色联合作用的独立性。结果表明:男性在棕色头发和眼睛的人群中很少,在棕色头发和蓝色眼睛的人群中占了过多的比例。fm<-loglin(HairEyeColor,list(1:2,3))pchisq(fm$pearson,fm$df,lower.tail=FALSE)
6、也可以自己编写程序完成的mosaic图。以数据mtcars为例,可以做卡方检验。myChisqT娣定撰钠est&l墉掠载牿t;-function(x){t1<-table(mtcars[,x],mtcars$carb)plot(t1,main=x,las=1)print(x)print(chisq.test(t1))}myChisqTest("gear")运行程序,可以得到检验结果。