如何在agricolae软件包中执行事后测试,Tukey?
我是和你一起做的如何在agricolae软件包中执行事后测试,Tukey?,r,graph,anova,posthoc,tukey,R,Graph,Anova,Posthoc,Tukey,我是和你一起做的 library(lsmeans) 及 但我感兴趣的是,在agricolaepackage中,如何在R中进行TW方差分析后进行事后测试 structure( list(Treatment = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Con
library(lsmeans)
及
但我感兴趣的是,在agricolae
package中,如何在R中进行TW方差分析后进行事后测试
structure( list(Treatment = structure(c(3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = c("Control", "Nitrogen", "Salt"
), class = "factor"), Stage = 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), .Label = c("Green", "Pink", "Red"), class = "factor"),
Chlorophyll = c(0.2, 0.3, 0.4, 0.5, 0.3, 0.2, 0.5, 0.6, 0.7,
0.4, 0.6, 0.9, 0.2, 0.3, 0.5, 0.4, 0.2, 0.3, 0.5, 0.6, 0.8,
0.5, 0.4, 0.6, 0.2, 0.3, 0.1)), .Names = c("Treatment", "Stage",
"Chlorophyll"), class = "data.frame", row.names = c(NA, -27L)
)
平均值分离后,我们如何用组号/字母绘制每个阶段的图表
我假设您希望根据
治疗
、阶段
和交互作用治疗*阶段
对数据进行分组
Treatment
和Stage
各有3个级别,因此我们分别有choose(length(levels)(levels(df$Treatment)),2)=3
和choose(length(levels(df$Stage)),2)
比较;对于相互作用项,我们必须考虑<代码>处理< <代码>和<代码>阶段< /代码> 之间的所有可能组合。
combn_interact <- apply(
expand.grid(levels(df$Treatment), levels(df$Stage)),
1,
paste, collapse = ":");
combn_interact;
#[1] "Control:Green" "Nitrogen:Green" "Salt:Green" "Control:Pink"
#[5] "Nitrogen:Pink" "Salt:Pink" "Control:Red" "Nitrogen:Red"
#[9] "Salt:Red"
DescTools
库中的PostHocTest
执行事后检验,以解释多个假设检验。存在不同的方法来纠正p值,这里我们使用测试
治疗
、3个阶段
和36个治疗*阶段
比较的每个相关组进行观察。例如,对于3治疗
比较,您可以
df %>%
ggplot(aes(x = Treatment, y = Chlorophyll)) +
geom_boxplot() +
geom_jitter(width = 0.2)
与事后检验的结果一致,三种分布之间的平均值没有统计学上的显著变化
其他的情节也一样简单,我会让你决定样本数据
df我很高兴向您展示一个如何执行事后测试的示例;但是现在我对你的问题不是很清楚。(1) 您使用的是线性模型lm
,但在进行方差分析后,请参考事后测试。这是两件不同的事情。假设您希望执行多个方差分析(然后使用事后检验纠正多个假设检验):数据在哪里(即值和组标签)?(2) 显示一个箱线图,但给出的数据完全不相关。这个阴谋是从哪里来的?[…][续](3)agricolae
软件包与它有什么关系?这就是数据的来源吗?数据集的名称是什么?(4) lsmeans
和multcomp
在哪里起作用?这些包裹是做什么的?谢谢毛里塔尼亚·埃弗斯。au:)也许我没有很好地解释这一点,在R中运行2向方差分析后,我需要帮助对我的组数据(治疗、阶段和if交互)进行平均值比较(事后测试)。我不确定如何执行Tukey HSD。在事后测试之后,我想绘制上面这样的BP图,用字母或星星表示不同的显著性。这只是一个示例数据。我有一个很大的df,正在考虑如何进行分析。如果可能的话,我会很感激你的帮助。嗨@Kynda。请看下面我的答案;对于事后测试,我推荐DescTools
库中的PostHocTest
;我还添加了一个示例绘图作为起点。谢谢Evers博士,此绘图代码不适用于我的数据框,为什么在这里使用管道%>%。。。我尝试了下面的代码,它可以用ggplot(df,aes(x=generic,y=k))+geom_bar()+geom_jitter(width=0.2)很好,我现在对方块图不感兴趣。如何将其更改为带有标准错误的条形图。我不确定在哪一步我必须平均结果。如果可能的话,我将非常感谢你的帮助。谢谢。@Kynda因为您是在比较分布的平均值,所以箱线图比条形图是更明智的可视化选择。关于一般的绘图,您需要查看许多可用的R绘图教程中的一些。我通常推荐ggplot
,但你也可以使用base R。我建议在答案旁边设置复选标记来结束这个问题;如果你在绘图方面遇到问题,你应该问一个新问题。通常的策略是每个帖子一个问题。这使得其他人更容易找到解决方案并提供帮助。
model <- aov(Chlorophyll ~ Treatment + Stage + Treatment*Stage, data = df);
library(DescTools);
PostHocTest(model, method = "hsd")
# Posthoc multiple comparisons of means : Tukey HSD
# 95% family-wise confidence level
#
#$Treatment
# diff lwr.ci upr.ci pval
#Nitrogen-Control -0.02222222 -0.1939346 0.1494902 0.9418
#Salt-Control -0.03333333 -0.2050457 0.1383791 0.8744
#Salt-Nitrogen -0.01111111 -0.1828235 0.1606013 0.9851
#
#$Stage
# diff lwr.ci upr.ci pval
#Pink-Green -0.13333333 -0.3050457 0.03837906 0.1455
#Red-Green -0.15555556 -0.3272679 0.01615684 0.0797 .
#Red-Pink -0.02222222 -0.1939346 0.14949017 0.9418
#
#$`Treatment:Stage`
# diff lwr.ci upr.ci pval
#Nitrogen:Green-Control:Green 0.000000e+00 -0.40832017 0.40832017 1.0000
#Salt:Green-Control:Green -3.333333e-01 -0.74165350 0.07498684 0.1643
#Control:Pink-Control:Green -1.333333e-01 -0.54165350 0.27498684 0.9586
#Nitrogen:Pink-Control:Green -3.000000e-01 -0.70832017 0.10832017 0.2624
#Salt:Pink-Control:Green -3.000000e-01 -0.70832017 0.10832017 0.2624
#Control:Red-Control:Green -4.333333e-01 -0.84165350 -0.02501316 0.0327 *
#Nitrogen:Red-Control:Green -3.333333e-01 -0.74165350 0.07498684 0.1643
#Salt:Red-Control:Green -3.333333e-02 -0.44165350 0.37498684 1.0000
#Salt:Green-Nitrogen:Green -3.333333e-01 -0.74165350 0.07498684 0.1643
#Control:Pink-Nitrogen:Green -1.333333e-01 -0.54165350 0.27498684 0.9586
#Nitrogen:Pink-Nitrogen:Green -3.000000e-01 -0.70832017 0.10832017 0.2624
#Salt:Pink-Nitrogen:Green -3.000000e-01 -0.70832017 0.10832017 0.2624
#Control:Red-Nitrogen:Green -4.333333e-01 -0.84165350 -0.02501316 0.0327 *
#Nitrogen:Red-Nitrogen:Green -3.333333e-01 -0.74165350 0.07498684 0.1643
#Salt:Red-Nitrogen:Green -3.333333e-02 -0.44165350 0.37498684 1.0000
#Control:Pink-Salt:Green 2.000000e-01 -0.20832017 0.60832017 0.7303
#Nitrogen:Pink-Salt:Green 3.333333e-02 -0.37498684 0.44165350 1.0000
#Salt:Pink-Salt:Green 3.333333e-02 -0.37498684 0.44165350 1.0000
#Control:Red-Salt:Green -1.000000e-01 -0.50832017 0.30832017 0.9927
#Nitrogen:Red-Salt:Green 3.885781e-16 -0.40832017 0.40832017 1.0000
#Salt:Red-Salt:Green 3.000000e-01 -0.10832017 0.70832017 0.2624
#Nitrogen:Pink-Control:Pink -1.666667e-01 -0.57498684 0.24165350 0.8718
#Salt:Pink-Control:Pink -1.666667e-01 -0.57498684 0.24165350 0.8718
#Control:Red-Control:Pink -3.000000e-01 -0.70832017 0.10832017 0.2624
#Nitrogen:Red-Control:Pink -2.000000e-01 -0.60832017 0.20832017 0.7303
#Salt:Red-Control:Pink 1.000000e-01 -0.30832017 0.50832017 0.9927
#Salt:Pink-Nitrogen:Pink -5.551115e-17 -0.40832017 0.40832017 1.0000
#Control:Red-Nitrogen:Pink -1.333333e-01 -0.54165350 0.27498684 0.9586
#Nitrogen:Red-Nitrogen:Pink -3.333333e-02 -0.44165350 0.37498684 1.0000
#Salt:Red-Nitrogen:Pink 2.666667e-01 -0.14165350 0.67498684 0.3967
#Control:Red-Salt:Pink -1.333333e-01 -0.54165350 0.27498684 0.9586
#Nitrogen:Red-Salt:Pink -3.333333e-02 -0.44165350 0.37498684 1.0000
#Salt:Red-Salt:Pink 2.666667e-01 -0.14165350 0.67498684 0.3967
#Nitrogen:Red-Control:Red 1.000000e-01 -0.30832017 0.50832017 0.9927
#Salt:Red-Control:Red 4.000000e-01 -0.00832017 0.80832017 0.0574 .
#Salt:Red-Nitrogen:Red 3.000000e-01 -0.10832017 0.70832017 0.2624
#
#---
#Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
df %>%
ggplot(aes(x = Treatment, y = Chlorophyll)) +
geom_boxplot() +
geom_jitter(width = 0.2)
df <- structure( list(Treatment = structure(c(3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = c("Control", "Nitrogen", "Salt"
), class = "factor"), Stage = 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), .Label = c("Green", "Pink", "Red"), class = "factor"),
Chlorophyll = c(0.2, 0.3, 0.4, 0.5, 0.3, 0.2, 0.5, 0.6, 0.7,
0.4, 0.6, 0.9, 0.2, 0.3, 0.5, 0.4, 0.2, 0.3, 0.5, 0.6, 0.8,
0.5, 0.4, 0.6, 0.2, 0.3, 0.1)), .Names = c("Treatment", "Stage",
"Chlorophyll"), class = "data.frame", row.names = c(NA, -27L)
)