r - 如何使用 ggcoefstats 在 R 中呈现多个 BTERGM 的结果?

标签 r

我正在使用 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 不允许将模型列表作为输入。因此,如果您想显示两个单独模型的估计值,您有两个选择:

  1. 使用 ggcoefstats 将它们绘制在单独的图中
  2. 使用不同的包将它们绘制在同一个图中
# 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/

相关文章:

r - 在 R 中为多个因子列创建频率表

r - ggplot 中的条隐藏负标签 : geom_bar

r - 如何保存 data.frame-to-model.matrix 的映射并应用于新的观察?

r - wget 选项将输出直接输出到 R

R table() 进入 data.frame 更改行名

r - ShinyProxy Euler App 未运行 - 无法启动容器

r - 检测 H2O 实例是否已经在 R 中运行

r - R 中数字排序不正确

r - 使用 call() 赋值

facebook - 使用 R 更新 Facebook 状态?