我正在使用 R 中 ggstatsplot 包中的 ggcoefstats 函数,通过自举伪似然 (BTERGM) 来呈现时间指数随机图模型的结果。这是我从 https://indrajeetpatil.github.io/ggstatsplot/articles/web_only/ggcoefstats.html 获得的示例代码:
# setup
library(ggstatsplot)
library(network)
library(btergm)
set.seed(123)
# create 10 random networks with 10 actors
networks <- list()
for (i in 1:10) {
mat <- matrix(rbinom(100, 1, .25), nrow = 10, ncol = 10)
diag(mat) <- 0 # loops are excluded
nw <- network(mat) # create network object
networks[[i]] <- nw # add network to the list
}
# create 10 matrices as covariate
covariates <- list()
for (i in 1:10) {
mat <- matrix(rnorm(100), nrow = 10, ncol = 10)
covariates[[i]] <- mat # add matrix to the list
}
# model
fit_btergm <-
btergm::btergm(
formula = networks ~ edges + istar(2) + edgecov(covariates),
parallel = "multicore",
ncpus = 4,
R = 100,
verbose = FALSE
)
# plot
ggcoefstats(
x = fit_btergm,
title = "Terms used in Exponential Family Random Graph Models",
subtitle = "by bootstrapped pseudolikelihood or MCMC MLE"
)
但是,我有多个 BTERGM,我想在一张图表中展示它们的结果:
fit_btergm1 <-
btergm::btergm(
formula = networks ~ edges + istar(2),
parallel = "multicore",
ncpus = 4,
R = 100,
verbose = FALSE
)
fit_btergm2 <-
btergm::btergm(
formula = networks ~ edges + istar(2) + edgecov(covariates),
parallel = "multicore",
ncpus = 4,
R = 100,
verbose = FALSE
)
我尝试了以下方法,但不起作用:
# plot
ggcoefstats(
x = list(fit_btergm1, fit_btergm2),
title = "Terms used in Exponential Family Random Graph Models",
subtitle = "by bootstrapped pseudolikelihood or MCMC MLE"
)
关于如何做到这一点有什么想法吗?非常感谢你:)
最佳答案
ggcoefstats
不允许将模型列表作为输入。因此,如果您想显示两个单独模型的估计值,您有两个选择:
- 使用 ggcoefstats 将它们绘制在单独的图中
- 使用不同的包将它们绘制在同一个图中
# setup
library(ggstatsplot)
library(network)
set.seed(123)
# create 10 random networks with 10 actors
networks <- list()
for (i in 1:10) {
mat <- matrix(rbinom(100, 1, .25), nrow = 10, ncol = 10)
diag(mat) <- 0 # loops are excluded
nw <- network(mat) # create network object
networks[[i]] <- nw # add network to the list
}
# create 10 matrices as covariate
covariates <- list()
for (i in 1:10) {
mat <- matrix(rnorm(100), nrow = 10, ncol = 10)
covariates[[i]] <- mat # add matrix to the list
}
# models
fit_btergm1 <-
btergm::btergm(
formula = networks ~ edges + istar(2),
parallel = "multicore",
ncpus = 4,
R = 100,
verbose = FALSE
)
fit_btergm2 <-
btergm::btergm(
formula = networks ~ edges + istar(2) + edgecov(covariates),
parallel = "multicore",
ncpus = 4,
R = 100,
verbose = FALSE
)
library(patchwork)
wrap_plots(ggcoefstats(fit_btergm1), ggcoefstats(fit_btergm2))
library(modelsummary)
modelplot(list(fit_btergm1, fit_btergm2))
由 reprex package 于 2021 年 4 月 20 日创建(v2.0.0)
关于r - 如何使用 ggcoefstats 在 R 中呈现多个 BTERGM 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67115046/