[英]How to change color palette of mosaic plot
我有以下數據和代碼:
> 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.
如何更改上述繪圖的填充顏色?
沒有真正優雅的解決方案,但您可以使用 gpar 手動定義顏色
mosaic(mat, shade=T, colorize = T, gp = gpar(fill=matrix(c("red","blue","light green", "green", "black","red","brown","white","blue"), 3, 3)))
下一步是用合理的顏色填充 gpar 中的矩陣。 這里有一篇關於如何根據值分配色帶的很好的帖子。 https://stackoverflow.com/a/6320940/1502898
默認情況下, vcd
中馬賽克圖的陰影使用截止值 2 和 4 作為與每個單元格關聯的殘差的絕對值,如 Friendly (1994, Journal of the American Statistical Association , 89 , 190-200) 所建議的。 這背后的想法是,如果模型擬合良好(由於殘差的近似正態性),這些截止值應該與大約 5% 和 0.01% 交叉。 然而,這些臨界值對應於細胞的個體顯着性,而卡方檢驗評估整體顯着性。
有兩種策略可以解決這個問題:(1) 由於 Friendly (1994) shading 旨在顯示偏差模式而不是直接對應顯着性,因此可以簡單地將截止值修改為較低的值對於給定的表(例如,此處為 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.