我有以下数据和代码:

> mat <- matrix(c(120,230,84,70,130,83,13,26,18),3)
> dimnames(mat) <- list(c("good","fair","poor"),c("a","b","c"))
> mat

> mat
       a   b  c
good 120  70 13
fair 230 130 26
poor  84  83 18
>
> chisq.test(mat)

        Pearson's Chi-squared test

data:  mat
X-squared = 11.411, df = 4, p-value = 0.02231

> library(vcd)
> mosaic(mat, shade=T)

卡方检验显示出显着差异,但由于残差很小,因此看不到颜色。残差较高时,可以看到颜色:

?mosaic 显示此信息:
highlighting_fill: color vector or palette function used for a highlighted variable, if any.

如何更改上述绘图的填充颜色?

最佳答案

默认情况下,vcd 中马赛克图的阴影使用临界值 2 和 4 作为与每个单元格关联的残差的绝对值,如 Friendly (1994, Journal of the American Statistical Association, 89 , 190-200) )。这背后的想法是,如果模型拟合良好(由于残差的近似正态性),这些截止值应该与大约 5% 和 0.01% 交叉。然而,这些临界值对应于细胞的个体显着性,而卡方检验评估整体显着性。

有两种策略可以解决这个问题:(1) 由于 Friendly (1994) 阴影旨在显示偏差模式而不是直接对应于显着性,因此可以简单地将截止值修改为较低的值对于给定的表(例如,此处为 1 和 1.8)。 (2) 切换到最大绝对残差(而不是它们的平方和)的测试,以便可以对在某些显着性水平(例如 10% 和 1%)上显着的所有单元格进行着色。这两种策略都在 vcd 中实现,并在 ?shading_hcl 的示例中进行了说明(使用与 mat 属性非常相似的示例)。 Zeileis, Meyer, Hornik (2007) 解释了基本思想。 “用于可视化(条件)独立性的基于残差的阴影”,计算和图形统计杂志, 16 (3),507-525。 doi:10.1198/106186007X237856

策略 (1) 可以通过以下方式应用于您的数据:

mosaic(mat, gp = shading_hcl, gp_args = list(interpolate = c(1, 1.8)))

策略 (2) 实现为:
set.seed(403)
mosaic(mat, gp = shading_max)

关于r - 如何更改马赛克图的调色板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29837257/

10-12 17:10