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

如何基于TukeyHSD检验输出生成CLD并整合到ggplot中

基于TukeyHSD输出直接生成CLD的实现方案

该方案完全基于你已生成的TukeyHSD结果计算CLD,和你已报告的p值完全匹配,无需调整原有分析结果。

实现步骤

  1. 加载依赖包
    使用multcompView包完成CLD计算,首次使用需先安装:
install.packages("multcompView")
library(multcompView)
  1. 提取TukeyHSD的两两比较p值
    从你的tk_arbuscular结果中提取农药和施肥交互项的校正p值:
# 提取pesticide:fertilizer交互项的检验结果
tk_interact_res <- tk_arbuscular[["pesticide:fertilizer"]]
# 提取校正后p值,保留两两组合的名称
adj_p <- tk_interact_res[, "p adj"]
names(adj_p) <- rownames(tk_interact_res)
  1. 生成CLD分组字母
    以0.05为显著性阈值生成分组字母:
# 生成CLD结果
cld_output <- multcompLetters(adj_p, threshold = 0.05)
# 转换为数据框方便后续合并
cld_df <- data.frame(
  group = names(cld_output$Letters),
  cld = as.character(cld_output$Letters),
  stringsAsFactors = FALSE
)
  1. 合并均值数据用于ggplot绘图
    先计算各处理组的均值,再和CLD结果合并:
# 计算各交互组的均值
group_mean_df <- aggregate(arbuscular_count ~ pesticide + fertilizer,
                           data = main_trial, FUN = mean)
# 生成和CLD结果匹配的组名列
group_mean_df$group <- paste(group_mean_df$pesticide, group_mean_df$fertilizer, sep = ":")
# 合并均值与CLD字母
plot_df <- merge(group_mean_df, cld_df, by = "group")
  1. ggplot整合CLD示例
library(ggplot2)
ggplot(plot_df, aes(x = interaction(pesticide, fertilizer), y = arbuscular_count)) +
  geom_col(fill = "#80b1d3", width = 0.7) +
  geom_text(aes(label = cld), vjust = -0.3, size = 3.5) +
  labs(x = "农药×施肥处理", y = "丛枝结构计数") +
  theme_bw()

补充说明

你之前观察到的emmeans和TukeyHSD结果的微小差异,通常来自两者默认的自由度计算、边缘均值估计规则的细微区别,本方案完全基于你已输出的TukeyHSD校正p值计算,和你已撰写的结果部分完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:27:02