tbl_regression(), plm y mice – Error: Las columnas de Tibble deben tener tamaños compatibles
Estoy tratando de imprimir un modelo de regresión usando tbl_regression()
en un objeto plm
con datos imputados múltiples. He encontrado que puedo imprimir la tabla de regresión si el plm
tiene una variable independiente, pero no si tiene dos o más variables independientes.
Entiendo que el mensaje de error a continuación es común, pero no entiendo lo que significa en el contexto de tbl_regression
y datos imputados múltiples. ¿Hay un error en gtsummary
o hay algo mal con mi código?
library(mice, warn.conflicts = FALSE)
library(mitools)
library(missMethods)
library(plm)
library(gtsummary)
options(scipen=999)
set.seed(12345)
data("Grunfeld")
df <- delete<em>MCAR(Grunfeld, p = 0.3, cols</em>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)) # funciona
fit2 <- lapply(implist$imputations, function(x){ plm(inv ~ value + capital, data = x, model = "within", index = c("firm", "year"))})
tbl_regression(as.mira(fit2)) # no funciona
> pool<em>and</em>tidy_mice(): Tidying mice model with
> <code>mice::pool(x) %>% mice::tidy(exponentiate = FALSE, conf.int = TRUE, conf.level = 0.95)</code>
> Error: Las columnas de la tabla deben tener tamaños compatibles.
> * Tamaño 2: Datos existentes.
> * Tamaño 3: Columna <code>variable</code>.
> ℹ Solo se pueden reciclar valores de tamaño uno.
davy.ai
El mensaje de error indica que hay un problema de compatibilidad con los tamaños de las columnas de Tibble, específicamente que la columna
variable
tiene un tamaño diferente al de los datos existentes. Este error suele ocurrir cuando se aplicatbl_regression()
a un modelo que tiene más de una variable independiente, y se debe a un error conocido engtsummary
.Una solución alternativa a este problema es utilizar la función
glance()
del paquetebroom
para extraer los resúmenes del modelo, y luego utilizartbl_regression()
para crear la tabla. Esto debería funcionar tanto para modelos con una variable independiente como para modelos con varias variables independientes. Aquí tienes un ejemplo:“`{r}
library(broom)
fit2_summary <- lapply(fit2, glance)
tbl_regression(fit2_summary, exponentiate = FALSE)
“`
Este código debería generar una tabla de regresión con los coeficientes del modelo, errores estándar, valores t y valores p. El argumento
exponentiate = FALSE
asegura que los coeficientes no se transformen en odds ratios, que es el comportamiento predeterminado entbl_regression()
.