I can run the rlmer
model with the object that results from mice
, but when I try to pool the results a get the message Error: No tidy method for objects of class rlmerMod
. Is there an alternative?
Below there is a reproducible example of my data and models:
set.seed(1)
library(data.table)
library(robustlmm)
library(mice)
library(miceadds)
dt <- data.table(id = rep(1:10, each=3),
group = rep(1:2, each=15),
time = rep(1:3, 10),
sex = rep(sample(c("F","M"),10,replace=T), each=3),
x = rnorm(30),
y = rnorm(30))
setDT(dt)[id %in% sample(1:10,4) & time == 2, `:=` (x = NA, y = NA)][
id %in% sample(1:10,4) & time == 3, `:=` (x = NA, y = NA)]
# Multiple imputation -------------------------------------------------------------------
pm <- make.predictorMatrix(dt)
pm[,c('x','y')] <- 0
pm[c('x','y'), 'id'] <- -2
imp <- mice(dt, pred = pm, meth = "2l.pmm", seed = 1, m = 2, print = FALSE, maxit = 20)
# Modelling -----------------------------------------------------------------------------
m <- with(imp, rlmer(y ~ 1 + time * group + sex + (1 | id), REML=F))
pool.fit <- pool(m)
> pool.fit <- pool(m)
Error: No tidy method for objects of class rlmerMod
In addition: Warning message:
In get.dfcom(object, dfcom) : Infinite sample size assumed. # I don't get this warning using my real data
Thank you!
EDIT:
As commented by @BenBolker, library(broom.mixed)
gets pool.fit
to run without errors. Hovever, summary(pool.fit,conf.int = TRUE)
returns the estimates, but NaN
for degrees of freedom, p values and confidence intervals.
library(broom.mixed)
pool.fit <- pool(m)
summary(pool.fit,conf.int = TRUE)
term estimate std.error statistic df p.value 2.5 % 97.5 %
1 (Intercept) -1.31638288 1.2221584 -1.07709683 NaN NaN NaN NaN
2 time 0.02819273 0.4734632 0.05954578 NaN NaN NaN NaN
3 group 1.49581955 0.8776475 1.70435124 NaN NaN NaN NaN
4 sexM -0.61383469 0.7137998 -0.85995356 NaN NaN NaN NaN
5 time:group -0.25690287 0.3005254 -0.85484573 NaN NaN NaN NaN
I don't know if another parameter is needed (eg., for defining the df method).
For now, I tried tbl_regression(m)
but it didn't work either:
> tbl_regression(m)
pool_and_tidy_mice(): Tidying mice model with
`mice::pool(x) %>% mice::tidy(exponentiate = FALSE, conf.int = TRUE, conf.level = 0.95)`
Error in match.call() : ... used in a situation where it does not exist # how to correct this?
In addition: Warning message:
In get.dfcom(object, dfcom) : Infinite sample size assumed. # again, this warning don't occur with my original data
Any tip?