rcompanion包cldList()生成紧凑字母显示时部分分组无字母问题
问题描述
我此前在相关平台提问过类似问题,目前遇到了新的问题:运行rcompanion包的cldList()函数生成分组紧凑字母显示表时,部分分组明明和其他组不存在显著性差异,但未返回对应字母。
我的原始数据量较大,已上传至公共存储位置。
请问这是函数bug还是我操作有误?我使用的代码如下:
library(FSA) library(multcompView) library(rcompanion) library(ggplot2) library(ggpubr) library(tidyr) raw_df <- read.csv("raw_data.csv") # 完成Kruskal-Wallis H检验得到组间显著的结果后,我用以下代码执行Dunn事后检验 bells <- dunnTest(Group ~ as.factor(Color_Score), method = "bh", data = raw_df) # 提取校正后的P值存储为单独变量 piano <- bells$`res` # Dunn检验完成后,生成紧凑字母显示表 flute <- cldList(P.adj ~ Comparison, data = piano, threshold = 0.05) # 问题出现在这一步:我总共有40个需要比较的分组,但函数只返回了38个组的字母结果 # 我尝试用以下代码绘制箱线图并添加显著性字母 ggboxplot(raw_df, x = "Group", y = "Color_Score", combine = FALSE, x.text.angle = 360, orientation = "vertical", ylab = "Measurement (cm)", xlab = "Group", color = "Group", fill = "Group", notch = FALSE, ggtheme = theme_gray()) + font("xy.text", size = 7, color = "black") + theme(legend.position = "None", axis.text.x =element_text(color = "black")) + color of the y-axis (Measurement) tick labels geom_text(data = flute, aes(x = Group, y = 12, angle = 90, label = Letter), position = position_nudge(x = 0.1), hjust = 0, color = "red")
我总计有40个待对比分组,但函数仅返回了38组的字母结果,搜索相关资料未找到解决方案,请问有没有人遇到过类似问题?
解决方案
这不是函数bug,是代码操作错误导致的,按以下步骤修正即可:
- 修正Dunn检验的公式写法
Dunn检验的公式规范为响应变量 ~ 分组变量,你当前的代码把两个变量写反了,原本的需求是比较不同Group的Color_Score取值差异,所以需要把dunnTest的调用代码改为:
bells <- dunnTest(Color_Score ~ Group, method = "bh", data = raw_df)
原来的写法是用Color_Score作为分组维度比较Group的取值,完全背离分析目标,自然会出现分组数量不匹配的问题。
- 匹配因子水平避免分组遗漏
如果公式修正后仍有分组缺失,说明存在分组未被识别到比较列表中,可以先将Group转为因子指定所有水平,同时调整cldList的参数:
# 显式指定Group的所有因子水平,避免遗漏 raw_df$Group <- factor(raw_df$Group) # 调用cldList时增加参数匹配分组名 flute <- cldList(P.adj ~ Comparison, data = piano, threshold = 0.05, remove.space = TRUE, remove.zero = FALSE)
- 修正ggplot部分的语法错误
你现有ggplot代码中存在一行无效文本color of the y-axis (Measurement) tick labels,直接删除该行即可避免运行报错。
内容的提问来源于stack exchange,提问作者Tyler Ruddenfort
相关产品推荐
相关产品推荐

