如何在plot.loglm图中指定每个变量位置(图形侧)

时间:2014-08-14 18:16:45

标签: r plot data-visualization graph-visualization categorical-data

我有以下对数线性模型。

library(MASS)
library(vcd)
## mosaic display for PreSex model
data("PreSex")
fm <- loglm(~ PremaritalSex * ExtramaritalSex * (Gender + MaritalStatus), 
            data = PreSex)

## visualize Pearson statistic
plot(fm, split_vertical = TRUE)

在绘图命令中,如何指定哪些变量将绘制在哪个绘图边1到4? plot.loglm命令如何选择在哪一侧绘制哪个变量?

在pbible的回答后更新#1

只是为了清楚地说明另一个例子。我有模特

data("PreSex")
fm <- loglm(~ PremaritalSex + ExtramaritalSex +Gender + MaritalStatus,data = PreSex)
plot(fm, split_vertical = TRUE)

导致马赛克图enter image description here。在此图中,变量PremaritalSexMaritalStatusExtramaritalSexGender分别位于1,2,3和4侧。

我的问题是:如何绘制相同的对数线性模型(不要更改分析),但在第2面和{{1}上有Gender在结果图的第4面?

更新#2: MaritalStatus尊重输入变量的顺序(第一个变量位于第2侧,第2个,第3个,第3个,第3个,第4个,第4个,第4个,第1个,第1个)

例如这两个图:

mosaic

但是mosaic(~Gender+MaritalStatus +ExtramaritalSex + PremaritalSex , data = PreSex, shade = T) # Gender is 1st variable in the model plotted in side 2, mosaic(~MaritalStatus + Gender+ExtramaritalSex + PremaritalSex , data = PreSex, shade = T) # Gender is 2nd variable in the model plotted in side 3, 不尊重输入的变量的顺序。无论变量的顺序(加法模型),它都会产生相同的图。例如,获得的2个图是相同的

plot.loglm

1 个答案:

答案 0 :(得分:1)

<强>更新 玩了一段时间后,似乎可以通过用aperm置换数组来实现目标。

这似乎可以满足您的需求:

fm <- loglm(~ PremaritalSex + ExtramaritalSex +Gender + MaritalStatus,data = aperm(PreSex,c(2,4,3,1)))
plot(fm, split_vertical = TRUE)

这是图片:

enter image description here

看起来马赛克强制执行数组的结构。使用数组置换允许您修改此结构。

下方:旧答案的一部分,可能会有所帮助。

我认为你可能正在寻找的是来自condvars情节的mosaic。您正在使用vcd库绘制loglm。它使用plot.loglm,而mosaic可以使用assoccondvars(在vcd手册中有解释)。

使用它一段时间后,我发现你可以使用mosaic来指定条件变量。然后plot(fm, split_vertical = TRUE) 将使用这些线索重新排序图。

使用以上命令:

plot(fm, split_vertical = TRUE, condvars=c(2))

Using the above commands

使用:

更改条件变量
mosaic

我们得到:

enter image description here

查看vcd手册中的c(2,3)文档。这post也很有帮助。如果你玩它,你可以得到你需要的。还可以尝试使用多个条件,例如{{1}}或其他。