固定效应矩阵秩亏时,robustLMM模型用emmeans做对比的报错问题
我有一组包含3个固定效应因子的数据集:
- G:两个水平(g1、g2)
- V:两个水平(v1、v2)
- C:七个水平(c1至c7)
同时包含随机效应ID。
我需要拟合包含固定效应3-way交互项和随机截距(1|ID)的线性混合模型或稳健线性混合模型(robust LMM),但模型返回警告:
fixed-effect model matrix is rank deficient so dropping 6 columns / coefficients.
我已确认问题原因:v2c5、v2c6、v2c7这三个组合没有观测数据,导致无法检验对应的6个固定效应。我的目标是检验不涉及这些无观测组合的对比,比如v1c5中g1与g2的差异,或v2c2中的差异。但使用以下代码时返回错误:
emmeans(model, ~G|V*C)
错误信息:
Error in (function (object, at, cov.reduce = mean, cov.keep = get_emm_option("cov.keep"),: Something went wrong:
Non-conformable elements in reference grid.
更新内容
感谢@LTyrone和@qdread的建议,以下是模拟数据及示例代码:
set.seed(123) G_levels <- c("g1", "g2") # Two levels for G V_levels <- c("v1", "v2") # Two levels for V C_levels <- c("c1", "c2", "c3", "c4", "c5", "c6", "c7") ID_levels <- paste0("ID", 1:12) df <- as_tibble(expand.grid(G = G_levels, V = V_levels, C = C_levels, ID = ID_levels)) df$response <- rnorm(nrow(df), mean = 50, sd = 10) df <- df[!(df$V == "v2" & df$C %in% c("c5", "c6", "c7")), ] df$G <- factor(df$G, levels = G_levels) %>% relevel(ref = "g1") df$V <- factor(df$V, levels = V_levels) %>% relevel(ref = "v1") df$C <- factor(df$C, levels = C_levels) %>% relevel(ref = "c1") df$ID <- factor(df$ID, levels = ID_levels) %>% relevel(ref = "ID1") library(lmerTest) library(robustlmm) library(emmeans) mymodel1<-lmer(response~ G*V*C+(1|ID),data=df) mymodel2<-rlmer(response~ G*V*C+(1|ID),data=df)
借助@qdread的方法,我可以对lmer()模型用emmeans()完成对比检验:
emm <- emmeans(mymodel1, ~ G | V*C, at = list(V =c('v1','v2'), C =c('c1','c2','c5'))) pairs(emm,by = c("V", "C"))
但对稳健模型执行相同代码时,仍返回错误:
emm <- emmeans(mymodel2, ~ G | V*C, at = list(V =c('v1','v2'), C =c('c1','c2','c5'))) pairs(emm,by = c("V", "C"))
错误信息:
Error in (function (object, at, cov.reduce = mean, cov.keep = get_emm_option("cov.keep"), :
Something went wrong:
Non-conformable elements in reference grid.
恳请提供解决方案。
内容的提问来源于stack exchange,提问作者ksing

