1

Continuing from this question: Is it possible to use lqmm with a mira object?

I have tried to get the random effects for the mixed models (lmm and lqmm), and it has been hard.

library(lqmm)
library(mice)
library(lme4)
library(mitml)

summary(airquality)
imputed<-mice(airquality,m=5)
summary(imputed)
fit1<-lqmm(Ozone~Solar.R+Wind+Temp+Day,random=~1,
           tau=0.5, group= Month, data=airquality,na.action=na.omit)
fit1
summary(fit1)

fit2<-with(imputed, lqmm(Ozone~Solar.R+Wind+Temp+Day,random=~1,
                         tau=0.5, group= Month, na.action=na.omit)) 
#did not work because it does not recognize a data frame

fit2 <- with(imputed, 
             lqmm(Ozone ~ Solar.R + Wind + Temp + Day,
                  data = data.frame(mget(ls())),
                  random = ~1, tau = 0.5, group = Month, na.action = na.omit))

tidy.lqmm <- function(x, conf.int = FALSE, conf.level = 0.95, ...) {
  broom:::as_tidy_tibble(data.frame(
    estimate = coef(x),
    std.error = sqrt(
      diag(summary(x, covariance = TRUE, 
                   R = 50)$Cov[names(coef(x)),
                               names(coef(x))]))))
}
glance.lqmm <- function(x, ...) {
  broom:::as_glance_tibble(
    logLik = as.numeric(stats::logLik(x)),
    df.residual = summary(x)$rdf,
    nobs = stats::nobs(x),
    na_types = "rii")
}

pool(fit2)
summary(pool(fit2))

So far so good, but I want to build a table that resembles the sJPlot::tab_model function on lmer objects. For this, I need to extract the random effects from the pooled estimates. This is where I am lost. I have not been able to do it with the linear mixed model, much less with the linear quantile mixed model.

Extract the Random-effects from an LMM and LQMM.
##LMM
fit3 <- with(imputed, 
             lmer(Ozone ~ Solar.R + Wind + Temp + Day+ (1|Month))) 
library(broom.mixed)
summary(pool(fit3))

library(sjPlot)
tab_model(fit3$analyses) #this will give me the results for each of the 5 lmer, but I need the pooled ones
pool(fit3)$glanced # also this will five me the random effects for each of the 5 lmer

stargazer(fit3$analyses,type="text")#this would give the AIC, LL, and BYC

#something like
tab_model(pool(fit3$analyses))

"Error ....
  Could not access model information."

#or
tab_model(pool(fit3)) #A data frame is not a valid object for this function.


##LQMM
tab_model(fit2$analyses)#gives me less information
pool(fit2)$glanced #gives the 5 models logLik, df.residual and nobs individually 

UPDATE: I could find a formula to extract the random effects of the LMM thanks to Can I pool imputed random effect model estimates using the mi package?. However, does not work for LQMM

testEstimates(as.mitml.result(fit3), extra.pars = T)$extra.pars
testEstimates(as.mitml.result(fit2), extra.pars = T)$extra.pars

Error in UseMethod("vcov") : no applicable method for 'vcov' applied to an object of class "lqmm"

The Pooled Random Effects information I need for both lmer and lqmm with sjPlot::tab_model and stargazer:

  • sigma^2: Pooled Residual Variance.
  • tau_00Month: Pooled Variance explained by the month (between month differences).
  • ICC: Pooled sigma^2/ (sigma^2+tau_00Month).
  • N_Month: n. Months used in the regression.
  • Marginal R2/ Conditional R2: The marginal R-squared considers only the variance of the fixed effects, while the conditional R-squared takes both the fixed and random effects into account.
  • Residual Scale Parameter: also would appreciate it if somebody clarifies what this is calculating.
  • Log-Likelihood:
  • Akaike Inf. Crit.:
De La Cruz
  • 33
  • 4

0 Answers0