1

我有以下对数线性模型。

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)

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

pbible回答后更新#1:

只是为了说明另一个例子。我有模型

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

这导致了马赛克图在此处输入图像描述。在该图中,变量、PremaritalSex和分别位于边 1、2、3 和 4。MaritalStatusExtramaritalSexGender

我的问题是:如何绘制相同的对数线性模型(不要更改分析)但在结果图的第Gender2 侧和MaritalStatus第 4 侧有?

更新#2: mosaic尊重变量的输入顺序(第一个变量在第 2 面、第 2 面->第 3 面、第 3 面->第 4 面、第 4 面->第 1 面)

例如这两个地块:

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, 

但是plot.loglm不尊重输入变量的顺序。无论变量(加法模型)的顺序如何,它都会产生相同的图。例如,获得的 2 个地块是相同的

plot(loglm(~ Gender + MaritalStatus +ExtramaritalSex + PremaritalSex   , data = PreSex))
plot(loglm(~ MaritalStatus+Gender + ExtramaritalSex + PremaritalSex   , data = PreSex))
4

1 回答 1

1

更新 玩了一段时间后,似乎您可以通过使用aperm.

这似乎给了你你想要的东西:

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

这是图像:

在此处输入图像描述

看起来马赛克强制执行数组的结构。使用数组排列可以修改这个结构。

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

我认为您可能正在寻找的是condvars情节mosaic。您正在loglm使用vcd库绘制 a 。它使用plot.loglmwhich 反过来可以使用mosaicor assoc(在 vcd 手册中解释)。

玩了一会儿,发现可以condvars用来指定条件变量。然后mosaic将使用这些线索重新排列情节。

使用上述命令:

plot(fm, split_vertical = TRUE)

使用上述命令

改变条件变量:

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

我们得到:

在此处输入图像描述

查看mosaicvcd 手册中的文档。这篇文章也很有帮助。如果你玩它,你可以得到你需要的东西。还可以尝试使用多个条件,例如c(2,3)或某事。

于 2014-08-18T21:38:56.833 回答