R语言 在ggplot中由sjplot重建三因素交互作用图

mwg9r5ms  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(379)

我使用sjPlot绘制了使用Gamma分布的glm模型中的显著三因素交互作用。DV是连续的,两个IV是连续的,一个是分类变量。我希望该图由分类变量分面,每个变量上的线显示均值+/- 1 sd(如下所示)。我得到了一个非常漂亮的小平面包裹图,并且能够修改轴限制、标题等。但是,我不知道如何改变某些美学,例如删除轴线/网格,使背景颜色为白色,更改面顶部条带的颜色等。我可以在ggplot中执行此操作,但我真的希望使用模型中的特定预测值,因为除了IV、DV和调节因子外,它还包含协变量。
下面是一个使用虹膜数据集的示例:

iris.glm<-glm(Sepal.Length ~ Sepal.Width*Petal.Width*Species + Petal.Length, 
              family = Gamma(link="inverse"), data=iris)
summary(iris.glm)
plot_model(iris.glm, type="int", mdrt.values="meansd", axis.lim=c(4,10), 
           title="", axis.title=c("Sepal Width", "Sepal Length"), 
           legend.title="Petal Width", colors=c("#66c2a5","#fc8d62", "#8da0cb"))

然而,我想在美学上做更多的改进。当我试图在ggplot中重新创建这个情节时,我做得很糟糕!特别是我不知道如何从本质上将连续调节器转换为三级分类(-1 SD,平均值,1 SD)。我是否需要使用模型的预测值创建单独的数据框,并根据该数据框创建图?如果需要,有没有人能帮上忙?提前道歉,还是ggplot的新手。

iris %>% 
  ggplot(aes(x=Sepal.Width, y=Sepal.Length, color=Petal.Width, group=Petal.Width)) + 
  facet_grid(~Species) +    
  stat_smooth(method = "glm", se=T) + 
  xlab("Sepal Width") + 
  ylab("Sepal Length") + 
  coord_cartesian(xlim =c(2, 4.5), ylim = c(4, 10))

m2xkgtsf

m2xkgtsf1#

sjPlot作者很有帮助,他不时地潜伏在这里,所以你可能要有点耐心,等待一个直接的答案。
同时,您也可以尝试marginaleffects中的plot_cap()函数(免责声明:我是作者).好的方面是这个函数返回“普通”的ggplot2对象,所以你可以使用所有普通的美学和函数来定制,比如theme_classic()ylim()

library(ggplot2)
library(marginaleffects)

iris.glm <- glm(
    Sepal.Length ~ Sepal.Width * Petal.Width * Species + Petal.Length,
    family = Gamma(link = "inverse"), data = iris)

plot_cap(
    iris.glm,
    condition = list(
        "Sepal.Width",
        "Petal.Width" = "threenum",
        "Species")) +
    ylim(c(4, 10)) +
    theme_classic()

此外,还可以通过设置draw=FALSE返回底层数据,然后如果需要更多定制,可以自己绘图:

p <- plot_cap(
    iris.glm,
    draw = FALSE,
    condition = list(
        "Sepal.Width",
        "Petal.Width" = "threenum",
        "Species"))

head(p)
#>   rowid     type estimate std.error statistic      p.value  conf.low conf.high
#> 1     1 response 5.534242 0.4372848 12.655920 1.037525e-36  6.548356  4.792110
#> 2     2 response 5.122283 0.3618975 14.153961 1.765283e-45  5.945597  4.499251
#> 3     3 response 4.466816 0.4016798 11.120340 9.989003e-29  5.422541  3.797504
#> 4     4 response 6.827409 2.8194809  2.421513 1.545605e-02 35.819951  3.773308
#> 5     5 response 5.282150 0.1117132 47.283120 0.000000e+00  5.510572  5.071911
#> 6     6 response 4.739130 0.2387601 19.848918 1.125985e-87  5.258362  4.313224
#>   Sepal.Length Petal.Length condition1 condition2 condition3
#> 1     5.843333        3.758          2        -SD     setosa
#> 2     5.843333        3.758          2        -SD versicolor
#> 3     5.843333        3.758          2        -SD  virginica
#> 4     5.843333        3.758          2       Mean     setosa
#> 5     5.843333        3.758          2       Mean versicolor
#> 6     5.843333        3.758          2       Mean  virginica

相关问题