【发布时间】:2021-01-18 22:35:44
【问题描述】:
我使用嵌套的 tidyr 数据框创建了一些这样的模型:
set.seed(1)
library(tidyr)
library(dplyr)
library(sjPlot)
library(tibble)
library(purrr)
fits <- tribble(~group, ~colA, ~colB, ~colC,
sample(c("group1", "group2"), 10, replace = T), 0, sample(10, replace = T), sample(10, replace = T),
sample(c("group1", "group2"), 10, replace = T), 1, sample(10, replace = T), sample(10, replace = T)) %>%
unnest(cols = c(colB, colC)) %>%
nest(data=-group) %>%
mutate(fit= map(data, ~glm(formula = colA ~ colB + colC, data = .x, family="binomial"))) %>%
dplyr::select(group, fit) %>%
tibble::column_to_rownames("group")
我想使用这些数据创建一些带有sjPlot::plot_models 的快速边际效应图,就像这样
plot_models(as.list(fits), type = "pred", terms = c("colB", "colA", "colC"))
不幸的是,我得到了错误
Error in if (fam.info$is_linear) tf <- NULL else tf <- "exp" :
argument is of length zero
In addition: Warning message:
Could not access model information.
我对数据的嵌套进行了一些尝试,但我无法将其转换为sjPlot::plot_models 可以接受的格式。
我期望得到的是帮助文件中描述的“多个回归模型的森林图”。最终,目标是按组绘制回归模型的边际效应,我希望 plot_models 能做到这一点(如果我错了,请纠正我)。
【问题讨论】:
-
您生成
fits的示例代码给出“错误:在.data中找不到列rowname”? -
现在应该可以了,忘记指定组了。
-
@TeaTree 请尝试编辑您的问题,甚至回答您的问题,因为我想我得到了类似的东西,我很想知道答案。赞成。谢谢
-
我在代码中添加了 purrr 包,这是我之前忘记的。我不确定你的意思@MohamedRahouma。我不知道我的问题的答案,但 MWE 现在应该可以工作了。
-
想我可能会用
unnest(cols = group)代替column_to_rownames(group)- 后者使用列表元素作为行名,而先前的未列出向量。还从后续的mutate(models = map(fit, plot_models))中得到一些东西——我在文档中看不到你的其他论点。那是在做某事,但绝对不是它应该做的。