Correcting for multiple linear mixed models I am currently planning an experiment where participants are rating pictures with two questions:

*

*How likeable is this person?

*How trustworthy is this person?

The pictures differ in two variables, one is categorical (colour) and one is continuous (age). I want to analyse my data with two linear mixed models:
m.like  = lmer(like  ~ colour * age + (1|stim) + (1|subject), data = df)
m.trust = lmer(trust ~ colour * age + (1|stim) + (1|subject), data = df)

Is there a way to correct for multiple comparisons due to me using two lmms?

In case anyone else has the same question as me: I have now written a short R function that pulls all p-values from a list of models and uses p.adjust() to correct all of them, either per predictor or over all predictors.
# This function performs multiple comparison correction on p-values of multiple
# linear mixed models (lmms) created with lmerTest(). The inputs are: 
#     * lmms (list)          : a list of all the lmms to be corrected
#     * method (string)      : which correction method should be applied, see 
#                              ?p.adjust. Default is "fdr"
#     * ignore (list)        : list of strings with the names of regressors of 
#                              no interest for which no correction should be 
#                              performed. Default is empty list.
#     * ignore_pattern (list): list of strings patterns where regressors which 
#                              contain these should not be corrected for. 
#                              Default is empty list.
#     * sep (logical)        : logical determining if multiple comparison 
#                              correction should be confirmed per predictor or 
#                              for all predictors together. Default is FALSE.
#
# The function has one output: 
#     * lmms.cor (list)      : a list containing all settings and a data frame
#                              df.cor with the columns outcome, predictor, 
#                              pvalues, p.sig, pvalues.adjusted and pad.sig
#
# (c) 10maxgold@gmail.com
#

p.adjust_lmm = function(lmms,method="fdr",ignore=list(),sep=T,ignore_pattern=list()) {
  
  library(stringr) # str_sub
  
  namedList <- function(...) {
    L <- list(...)
    snm <- sapply(substitute(list(...)),deparse)[-1]
    if (is.null(nm <- names(L))) nm <- snm
    if (any(nonames <- nm=="")) nm[nonames] <- snm[nonames]
    setNames(L,nm)
  }

  lmms.cor = namedList(method,ignore,sep)
  
  df.cor = data.frame(outcome=c(),predictor=c(),pvalue=c())
  
  for (i in 1:length(lmms)) {
    outcome = str_split(toString(formula(lmms[[i]])),pattern=", ")[[1]][2]
    predictor = names(coef(summary(lmms[[i]]))[2:length(coef(summary(lmms[[i]]))[, 5]), 5])
    pvalue = unname(coef(summary(lmms[[i]]))[2:length(coef(summary(lmms[[i]]))[, 5]), 5])
    dat = data.frame(outcome,predictor,pvalue)
    df.cor = rbind(df.cor,dat)
  }
  
  if (length(ignore_pattern) != 0) {
    for (x in ignore_pattern) {
      df.cor = df.cor[!grepl(x, df.cor$predictor),]
    }
  }
  
  if (length(ignore) != 0) {
    for (x in ignore) {
      df.cor = df.cor[df.cor$predictor != x,]
    }
  }
  
  df.cor$p.sig = " "
  df.cor$p.sig[df.cor$pvalue < 0.1]   = "."
  df.cor$p.sig[df.cor$pvalue < 0.05]  = "*"
  df.cor$p.sig[df.cor$pvalue < 0.01]  = "**"
  df.cor$p.sig[df.cor$pvalue < 0.001] = "***"
  
  if (sep) {
    df.cor$pvalue.adjusted = NaN
    preds = unique(df.cor$predictor)
    for (p in preds) {
      df.cor$pvalue.adjusted[df.cor$predictor == p] = p.adjust(df.cor$pvalue[df.cor$predictor == p],method=method)
    }
  } else {
    df.cor$pvalue.adjusted = p.adjust(df.cor$pvalue,method=method)
  }
  
  df.cor$p.ad.sig = " "
  df.cor$p.ad.sig[df.cor$pvalue.adjusted < 0.1]   = "."
  df.cor$p.ad.sig[df.cor$pvalue.adjusted < 0.05]  = "*"
  df.cor$p.ad.sig[df.cor$pvalue.adjusted < 0.01]  = "**"
  df.cor$p.ad.sig[df.cor$pvalue.adjusted < 0.001] = "***"
  
  df.cor = df.cor[order(df.cor$predictor),]
  
  lmms.cor$df.cor = df.cor
  
  return(lmms.cor)
  
}

