簡體   English   中英

如何更改馬賽克圖的調色板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM