You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从lmer模型Tukey事后检验提取p值生成紧凑字母显示

从multcomp的glht结果生成紧凑字母显示(CLD)

我明白你遇到的麻烦了——从multcomp::glht的结果里提取p值确实不像pairwise.t.test那么直接,不过别担心,下面两种方法都能帮你顺利生成紧凑字母显示(CLD):

方法1:手动提取glht的p值并转换格式

如果你坚持要用multcomp+multcompView的组合,可以按照以下步骤操作:

步骤1:准备模型和glht结果

先确保你已经拟合好线性混合效应模型,并得到glht的事后检验结果(用你自己的模型替换示例中的model):

library(lme4)
library(multcomp)

# 拟合线性混合效应模型(示例)
model <- lmer(fit ~ treatment + (1|subject), data = df)
# 进行Tukey事后检验,使用holm校正
mult <- summary(glht(model, linfct = mcp(treatment = "Tukey")), test = adjusted("holm"))

步骤2:提取并整理p值矩阵

glht的p值存储在mult$test$pvalues中,但格式是一维的配对比较(比如A - B),我们需要把它转换成对称矩阵:

# 提取配对比较的标签和对应的p值
comp_pvals <- data.frame(
  comparison = rownames(mult$test$pvalues),
  p.value = mult$test$pvalues,
  stringsAsFactors = FALSE
)

# 将比较标签拆分为两个组别
comp_pvals$group1 <- gsub(" - .*", "", comp_pvals$comparison)
comp_pvals$group2 <- gsub(".* - ", "", comp_pvals$comparison)

# 创建空的对称p值矩阵
groups <- unique(c(comp_pvals$group1, comp_pvals$group2))
p_matrix <- matrix(NA, nrow = length(groups), ncol = length(groups), dimnames = list(groups, groups))

# 填充矩阵(对称填充)
for(i in 1:nrow(comp_pvals)){
  g1 <- comp_pvals$group1[i]
  g2 <- comp_pvals$group2[i]
  p_matrix[g1, g2] <- comp_pvals$p.value[i]
  p_matrix[g2, g1] <- comp_pvals$p.value[i]
}
# 对角线填充为1(同一组比较无意义,p值设为1)
diag(p_matrix) <- 1

步骤3:生成紧凑字母显示

现在就可以用你熟悉的rcompanion和multcompView包生成CLD了:

library(rcompanion)
library(multcompView)

# 生成完整的p值表格
pt_full <- fullPTable(p_matrix)

# 生成紧凑字母显示
cld_result <- multcompLetters(pt_full, compare="<", threshold=0.05, Letters=letters, reversed=FALSE)
print(cld_result)

方法2:用emmeans包直接生成CLD(更简洁)

其实有个更省心的方法——用emmeans包,它可以直接对混合效应模型的边际均值进行事后检验,并且一键生成CLD,完全不用手动处理p值:

library(emmeans)

# 计算处理组的边际均值
emm <- emmeans(model, ~ treatment)
# 进行Tukey检验并生成CLD(指定holm校正)
cld(emm, adjust = "holm", Letters = letters)

这个方法不仅代码更短,结果也会直接显示每个处理组的均值和对应的字母标记,非常直观。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:07:44