R新包:快速分组进行多重比较
学习R两年半,我们的小伙伴终于发布了人生第一个R语言包(MultiCom)。
library(rio)
library(tidyverse)
library(MultiCom)
set.seed(123)
# 生成演示数据
dat <- expand.grid(
Year = 2018:2021,
Site = c("Beijing", "Shanghai", "Guangzhou", "Chengdu"),
Hybrid = paste0("H", 1:4),
Organ = c("Leaf", "Stem")) %>%
mutate(Value = runif(n(), 10, 50) %>% round(1)) %>%
slice(rep(1:n(), 4)) %>%
mutate(Value = Value + rnorm(n(), 0, 5) %>% round(1),
Value = pmax(Value, 0.1)) %>%
sample_n(n()) %>%
tibble::rownames_to_column("ID") %>%
select(-ID)
# 分组多重比较
result <- multi_group_com(
data = dat,
var_names = c("Hybrid", "Value"),
group_vars = c("Site", "Year", "Organ"),
method = c("LSD", 0.05))
head(result)
# 堆积柱状图数据格式转换
result_plot <- result %>%
mutate(Organ = factor(Organ, levels = c("Stem","Leaf"))) %>%
arrange(Hybrid, Year, Site, desc(Organ)) %>%
group_by(Hybrid, Year, Site) %>%
mutate(ymin = cumsum(Value),
ymax = cumsum(Value) + sd)
# 堆积柱状图(添加标准差,多重比较结果)
ggplot(result_plot, aes(x = Hybrid, y = Value, fill = Organ)) +
facet_grid(Year ~ Site) +
geom_bar(stat = "identity", width = 0.8, aes(group = Organ)) +
geom_errorbar(aes(ymin = ymin, ymax = ymax, color = Organ), width = 0.2) +
geom_text(aes(y = ymax + 10,
x = Hybrid, group = Organ, label = groups)) +
scale_y_continuous(expand = c(0,0)) +
labs(x = NULL, y = quote(Biomass~(Mg~ha^'-1')),
fill = "Organ") +
theme_test() +
theme(axis.text = element_text(color = 'black'),
legend.position = "bottom")
代码中演示数据的result结果
代码中演示数据可视化结果
注意: warning_normal和warning_levene为FALSE表示通过 正态性检验和方差齐性检验, 为TRUE则需要注意,在这种情况下,多重比较依旧采用了指定的方法进行,统计结果需要推敲。另外对于两组变量的比较应该选择T检验,但依旧使用的多重比较(因变量为2组时等同于T检验)。