繁体   English   中英

生物测定的统计分析

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM