没有从我的条形图(和棱镜)中通过克鲁斯卡尔-沃利斯检验、邓恩检验得到明显的意义?

问题描述 投票:0回答:1

有人使用 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)) 

enter image description here

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。更改为数据。但我的问题仍然存在。期待得到 enter image description here

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

enter image description here

r
1个回答
0
投票

这并没有回答有关多重比较校正的任何问题,但编写一个采用

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)) 

enter image description here

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.