[英]Statistical analysis of a bioassay
我正在分析一些生物测定的数据,我需要关于使用哪种统计分析以及如何使用 ggplot2 R package 来更好地可视化结果的建议。
正如您在上图中所见,我已经用一种病原体(一种假单胞菌属细菌)感染了豆类植物,然后用同时或接种前 1 小时应用的噬菌体进行了测试。 在右侧的散点图 plot 中,您可以看到我所拥有的四个的两个重复。 在y轴上的每个plot中都有植物的疾病指数(从0设计的健康植物到死亡植物,5)。 我想测试四种情况(阳性和阴性对照以及两种噬菌体应用)之间以及所有可能的配对之间是否存在显着差异。 我尝试了 Kruskal-Wallis 检验和 Wilcoxon 配对检验,我发现只有四个重复中的两个(代表两个)存在显着差异。
现在我有疑问:1)我可以进行更适合的统计测试吗? 2) 有一种更好的方法来可视化 dthe 数据(我用 power point 直接在图像上应用了字母,但我更愿意通过 R 脚本来完成所有操作)
我在这里添加了我用来分析数据的脚本。
# load libraries
library(tidyverse)
library(patchwork)
library(broom)
library(agricolae)
library(ggplot2)
library (reshape2)
#Clear the Worskspace
rm(list=ls())
# Read data
DF<- read_csv2("R_summary_bioassay_4.csv")
#Looks at data as structure , first rows or whole dataset
str(DF)
head(DF)
View(DF)
DF1 <- DF %>%
filter(date=="23/11/2020")
DF2 <- DF %>%
filter(date=="18/02/2022")
DF3 <- DF %>%
filter(date=="22/03/2022")
DF4 <- DF %>%
filter(date=="29/04/2022")
class(DF$treatment)
plot1 <- DF1 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_col(fill = "grey") +
geom_jitter(data = DF,
aes(x = treatment,
y = index),
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
labs(title = "23/11/2020",
x = "Treatment",
y = "Disease index")
plot1
plot2 <- DF2 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_col(fill = "grey") +
geom_jitter(data = DF,
aes(x = treatment,
y = index),
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
labs(title = "18/02/2022",
# caption = paste0("ANOVA value: ", unique(x$ANOVA)),
x = "Treatment",
y = "Disease index")
plot2
plot3 <- DF3 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_col(fill = "grey") +
geom_jitter(data = DF,
aes(x = treatment,
y = index),
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
labs(title = "23/03/2022",
# caption = paste0("ANOVA value: ", unique(x$ANOVA)),
x = "Treatment",
y = "Disease index")
plot3
plot4<- DF4 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_col(fill = "grey") +
geom_jitter(data = DF,
aes(x = treatment,
y = index),
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
labs(title = "23/03/2022",
# caption = paste0("ANOVA value: ", unique(x$ANOVA)),
x = "Treatment",
y = "Disease index")
plot4
scatterplot1 <- DF1 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_jitter(data = DF1,
aes(x = treatment,
y = index, colour = treatment),
show.legend = F,
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
theme(axis.text.x = element_text(angle = -15, vjust = 0.5, hjust=0)) +
labs(title = "23/11/2020",
# caption = paste0("ANOVA value: ", unique(x$ANOVA)),
x = "Treatment",
y = "Disease index")
scatterplot1
scatterplot2 <- DF2 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_jitter(data = DF2,
aes(x = treatment,
y = index, colour = treatment),
show.legend = F,
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
theme(axis.text.x = element_text(angle = -15, vjust = 0.5, hjust=0)) +
labs(title = "18/02/202",
# caption = paste0("ANOVA value: ", unique(x$ANOVA)),
x = "Treatment",
y = "Disease index")
scatterplot2
scatterplot3 <- DF3 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_jitter(data = DF3,
aes(x = treatment,
y = index, colour = treatment),
show.legend = F,
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
theme(axis.text.x = element_text(angle = -15, vjust = 0.5, hjust=0)) +
labs(title = "22/03/2022",
# caption = paste0("ANOVA value: ", unique(x$ANOVA)),
x = "Treatment",
y = "Disease index")
scatterplot3
scatterplot4 <- DF4 %>%
ggplot(aes(x = treatment,
y = index)) +
geom_jitter(data = DF4,
aes(x = treatment,
y = index, colour = treatment),
show.legend = F,
width = 0.1, height = 0) +
theme_classic() +
theme(text = element_text(size = 20 )) +
theme(axis.title.y = element_text(size = 14)) +
theme(axis.text.x = element_text(angle = -15, vjust = 0.5, hjust=0)) +
labs(title = "29/04/2022",
# caption = paste0("ANOVA value: ", unique(x$ANOVA)),
x = "Treatment",
y = "Disease index")
scatterplot4
kruskal.test(index ~ treatment, data = DF1)
kruskal.test(index ~ treatment, data = DF2)
kruskal.test(index ~ treatment, data = DF3)
kruskal.test(index ~ treatment, data = DF4)
pairwise.wilcox.test(DF1$index, DF1$treatment,
p.adjust.method = "BH")
pairwise.wilcox.test(DF2$index, DF2$treatment,
p.adjust.method = "BH")
pairwise.wilcox.test(DF3$index, DF3$treatment,
p.adjust.method = "BH")
pairwise.wilcox.test(DF4$index, DF4$treatment,
p.adjust.method = "BH")
也许 Tukey 结束计数可能有助于您的评估和可视化。 您有多个治疗比较,因此 95% 置信度的典型最小结束计数 7 应增加到 9。如果您需要,我在某处有一个公式。
Tukey 在他的原始论文中将平局处理为 0.5,不计算平局会更加保守。
Andy Sleeper 在“Pocket Stats”中有一个简短的概述: https://www.processexcellencenetwork.com/lean-six-sigma-business-performance/columns/pocket-stats-quick-significance-tests-you-can-rem
Tukey End Count 测试(又名 Tukey 的快速测试)是 John Tukey 在 Duckworth(工程师)询问是否可以开发比 t 检验更简单的东西后开发的非参数(无分布)测试。 Tukey 在第一版 Technometrics (1959) “A Quick, Compact, Two-Sample Test to Duckworth's Specifications”中发表了它。
也许 Tukey End Count 可能有助于您的评估和可视化。 您有多个治疗比较,因此 95% 置信度的典型最小结束计数 7 应增加到 9。如果您需要,我在某处有一个公式。
由于响应是有界的并且是有序响应,因此序数逻辑回归是一个可能的候选者。 这是一个类似的问题,其中包含一些很好的信息: 我应该使用哪个 model 来拟合我的数据? 序数和非序数,非正态和非均方差
Tukey 在他的原始论文中将平局处理为 0.5,不计算平局会更加保守。
有关 Tukey End Count 的更多信息:Andy Sleeper 在“Pocket Stats”中有简要概述: https://www.processexcellencenetwork.com/lean-six-sigma-business-performance/columns/pocket-stats-quick-significance -tests-you-can-rem
Tukey End Count 测试(又名 Tukey 的快速测试)是 John Tukey 在 Duckworth(工程师)询问是否可以开发比 t 检验更简单的东西后开发的非参数(无分布)测试。 Tukey 在第一版 Technometrics (1959) “A Quick, Compact, Two-Sample Test to Duckworth's Specifications”中发表了它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.