有人使用 KW 和 Dunn 的方法在 prism 中为我绘制了这些数据,我想在 R 中进行绘制,但我得到了不同的 R 结果。例如,在棱镜中,对照组和处理组在所有三个方面都存在显着差异。我还收到以下错误:
警告信息: 1:
stat_signif()
计算失败。
由kruskal.test.default()
中的错误引起:
!所有观察结果都在同一组中
2:stat_signif()
计算失败。
由kruskal.test.default()
中的错误引起:
!所有观察结果都在同一组中
library(tidyverse)
library(ggpubr)
library(FSA)
library(rcompanion)
DTData <- read.csv("C:/Users/Coral HD/R/Amox/LiquidInhibition/LiquidInhib_ZeroAmox.csv")
data$Day <- as.factor(data$Day)
data$Treatment <- as.factor(data$Treatment)
# Create a faceted bar plot
p <- ggplot(data, aes(x=Treatment, y=CFUs, fill=Treatment)) +
geom_bar(stat="summary", fun=mean) +
facet_wrap(~ Day, scales="fixed") +
labs(title="CFUs by Treatment across Different Days", y="Mean CFUs", x="Treatment") +
theme_bw()
print(p)
# Perform Kruskal-Wallis Test by Day
kw_results <- data %>%
group_by(Day) %>%
summarise(Kruskal_Wallis = kruskal.test(CFUs ~ Treatment)$p.value)
# Print Kruskal-Wallis results
print(kw_results)
# Perform Dunn's Test for multiple comparisons
dunn_results <- list()
for (day in unique(data$Day)) {
subset_data <- data[data$Day == day,]
dunn_test <- dunnTest(CFUs ~ Treatment, data = subset_data, method = "bonferroni")
dunn_results[[as.character(day)]] <- dunn_test
}
# Print Dunn's Test results
print(dunn_results)
# Adding significance brackets
# Please note: Adjusting manually as per p-values might be necessary
p + stat_compare_means(label = "p.signif", method = "kruskal.test",
comparisons = list(c("0", "100"), c("0", "400"), c("100", "400")),
label.y = c(300, 400, 500))
structure(list(Day = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), levels = c("1", "14", "28"), class = "factor"),
Treatment = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L,
1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L,
3L, 3L, 3L), levels = c("0", "100", "400"), class = "factor"),
CFUs = c(138L, 148L, 141L, 0L, 0L, 0L, 0L, 0L, 0L, 348L,
290L, 321L, 0L, 0L, 0L, 0L, 0L, 0L, 250L, 215L, 218L, 28L,
45L, 34L, 35L, 41L, 28L)), row.names = c(NA, -27L), class = "data.frame")
更新了代码以修复 DTData。更改为数据。但我的问题仍然存在。期待得到
library(tidyverse)
library(ggpubr)
library(FSA)
library(rcompanion)
data <- read.csv("C:/Users/Coral HD/R/Amox/LiquidInhibition/LiquidInhib_ZeroAmox.csv")
data$Day <- as.factor(data$Day)
data$Treatment <- as.factor(data$Treatment)
# Create a faceted bar plot
p <- ggplot(data, aes(x=Treatment, y=CFUs, fill=Treatment)) +
geom_bar(stat="summary", fun=mean) +
facet_wrap(~ Day, scales="fixed") +
labs(title="CFUs by Treatment across Different Days", y="Mean CFUs", x="Treatment") +
theme_bw()
print(p)
# Perform Kruskal-Wallis Test by Day
kw_results <- data %>%
group_by(Day) %>%
summarise(Kruskal_Wallis = kruskal.test(CFUs ~ Treatment)$p.value)
# Print Kruskal-Wallis results
print(kw_results)
# Perform Dunn's Test for multiple comparisons
dunn_results <- list()
for (day in unique(data$Day)) {
subset_data <- data[data$Day == day,]
dunn_test <- dunnTest(CFUs ~ Treatment, data = subset_data, method = "bonferroni")
dunn_results[[as.character(day)]] <- dunn_test
}
# Print Dunn's Test results
print(dunn_results)
# Adding significance brackets
# Please note: Adjusting manually as per p-values might be necessary
p + stat_compare_means(label = "p.signif", method = "kruskal.test",
comparisons = list(c("0", "100"), c("0", "400"), c("100", "400")),
label.y = c(300, 400, 500)) # Adjust these y values as needed based on your plot scale
这并没有回答有关多重比较校正的任何问题,但编写一个采用
kruskal.test()
和 x
而不是 y
和 x
的 g
并将其传递给基 R kruskal.test
似乎做你想做的事...
kruskal.test <- function(x, y, paired = FALSE) {
stats:::kruskal.test.default(x = c(x,y), g = rep(1:2, c(length(x), length(y))))
}
p + stat_compare_means(label = "p.signif", method = "kruskal.test",
comparisons = list(c("0", "100"), c("0", "400"), c("100", "400")),
label.y = c(300, 400, 500))