jrcalabrese
jrcalabrese

Reputation: 2321

tbl_regression(), plm, and mice - Error: Tibble columns must have compatible sizes

I am trying to print a regression model using tbl_regression() on a plm object with multiply imputed data. I've found that I can print the regression table if the plm has one independent variable, but not if it has two or more independent variables.

I understand that the below error message is common, but I don't understand what it means in the context of tbl_regression and multiply imputed data. Is there a bug in gtsummary, or is something wrong with my code?

library(mice, warn.conflicts = FALSE)
library(mitools)
library(missMethods)
library(plm)
library(gtsummary)
options(scipen=999)
set.seed(12345)

data("Grunfeld")
df <- delete_MCAR(Grunfeld, p = 0.3, cols_mis = c(3:5)) 
imp <- mice::mice(df, m = 5, print = FALSE)

implist <- imputationList(
  lapply(1:imp$m, function(n) mice::complete(imp, action = n)))

fit1 <- lapply(implist$imputations, function(x){ plm(inv ~ value, data = x, model = "within", index = c("firm", "year"))})
#tbl_regression(as.mira(fit1)) # works

fit2 <- lapply(implist$imputations, function(x){ plm(inv ~ value + capital, data = x, model = "within", index = c("firm", "year"))})
tbl_regression(as.mira(fit2)) # does not work
#> pool_and_tidy_mice(): Tidying mice model with
#> `mice::pool(x) %>% mice::tidy(exponentiate = FALSE, conf.int = TRUE, conf.level = 0.95)`
#> Error: Tibble columns must have compatible sizes.
#> * Size 2: Existing data.
#> * Size 3: Column `variable`.
#> ℹ Only values of size one are recycled.

Upvotes: 0

Views: 310

Answers (1)

jrcalabrese
jrcalabrese

Reputation: 2321

Thank you! This code now works under the current version of gtsummary.

library(mice, warn.conflicts = FALSE)
library(mitools)
library(missMethods)
library(plm)
library(gtsummary)
options(scipen=999)
set.seed(12345)

mice::version(pkg = "gtsummary")
#> [1] "gtsummary 1.5.1.9001  /Library/Frameworks/R.framework/Versions/4.1/Resources/library"

data("Grunfeld")
df <- delete_MCAR(Grunfeld, p = 0.3, cols_mis = c(3:5)) 
imp <- mice::mice(df, m = 5, print = FALSE)

implist <- imputationList(
  lapply(1:imp$m, function(n) mice::complete(imp, action = n)))

fit2 <- lapply(implist$imputations, function(x){ plm(inv ~ value + capital, data = x, model = "within", index = c("firm", "year"))})
tbl_regression(as.mira(fit2))
#> pool_and_tidy_mice(): Tidying mice model with
#> `mice::pool(x) %>% mice::tidy(exponentiate = FALSE, conf.int = TRUE, conf.level = 0.95)`

Upvotes: 0

Related Questions