[英]ANOVA with block design and repeated measures
我正在尝试对一个田间试验进行一些统计分析,该田间试验是在同一生长季节内在两个地点进行的。
在两个站点( Site
,级别:HF | NW)的实验设计是具有4(N = 4)块RCBD( Block
,级别:1 | 2 | 3 |每个内4 Site
)。 有4种处理方式-3种不同形式的氮肥和一种对照(无氮肥)( Treatment
,水平:AN,U,IU,C)。 在田间试验中,有3个不同的时期,从添加肥料开始到收获草结束。 在因子N_app
下,已将这些时间段的级别N_app
1 | 2 | 3。
我想测试以下一系列零假设H0:
Treatment
(H0)对测量没有影响
我特别感兴趣的两个度量是:草产量和氨排放量。
从如下所示的草产量( Dry_tonnes_ha
) 开始,一个很好的平衡数据集
可以使用以下代码将数据下载到R中:
library(tidyverse)
download.file('https://www.dropbox.com/s/w5ramntwdgpn0e3/HF_NW_grass_yield_data.csv?raw=1', destfile = "HF_NW_grass_yield_data.csv", method = "auto")
raw_data <- read.csv("HF_NW_grass_yield_data.csv", stringsAsFactors = FALSE)
HF_NW_grass <- raw_data %>% mutate_at(vars(Site, N_app, Block, Plot, Treatment), as.factor) %>%
mutate(Date = as.Date(Date, format = "%d/%m/%Y"),
Treatment = factor(Treatment, levels = c("AN", "U", "IU", "C")))
我可以使用以下方法来对此进行方差分析:
model_1 <- aov(formula = Dry_tonnes_ha ~ Treatment * N_app + Site/Block, data = HF_NW_grass, projections = TRUE)
我对此有一些担忧。
首先,检验假设的最佳方法是什么? 对于简单的单向方差分析,我将对因变量( Dry_tonnes_ha
)使用shapiro.test()
和bartlett.test()
)来评估方差的正态性和异质性。 我可以在这里使用相同的方法吗?
其次,我担心N_app
是重复测量,因为在3个不同时期从同一地块获取了相同的测量-将这种重复测量构建到模型中的最佳方法是什么?
第三,我不确定在Site
嵌套Block
的最佳方法。 在两个站点上, Block
的级别均为1:4。 每个站点都需要具有唯一的Block
级别吗?
在这里,我还有另一个关于NH3排放的数据集 。 R代码下载:
download.file('https://www.dropbox.com/s/0ax16x95m2z3fb5/HF_NW_NH3_emissions.csv?raw=1', destfile = "HF_NW_NH3_emissions.csv", method = "auto")
raw_data_1 <- read.csv("HF_NW_NH3_emissions.csv", stringsAsFactors = FALSE)
HF_NW_NH3 <- raw_data_1 %>% mutate_at(vars(Site, N_app, Block, Plot, Treatment), as.factor) %>%
mutate(Treatment = factor(Treatment, levels = c("AN", "U", "IU", "C")))
为此,除了数据集不平衡之外,我还有上述所有问题。 在HF
对于N_app
1,n = 3,但对于N_app
2和3,n = 4在NW
对于所有N_app
级别,n = 4。 在NF
,仅在Treatment
水平U
和IU
测量;在NW
,对Treatment
水平AN
, U
和IU
我不确定如何处理这种增加的复杂性。 我很想将其分析为2个单独的站点(每个站点的N_app
周期都不相同的事实可能会鼓励这种方法)。 我可以在这里使用iii型平方和方差分析吗?
有人向我建议,线性混合建模方法可能是前进的方法,但我对使用它们并不熟悉。
我欢迎您对以上任何想法。 谢谢你的时间。
罗里
要回答关于测试假设的最佳方法的第一个问题。 虽然您尝试使用在R中实现的另一种统计检验的尝试是合理的,但实际上我只是可视化分布并查看数据是否符合ANOVA假设。 这种方法似乎有些主观,但在大多数情况下确实有效。
aov
是合理的。 (看来,对数转换有助于进一步满足正态性假设。您可能会考虑这一点,尤其是对于下游分析而言。)
par(mfrow=c(2,2))
plot(density(HF_NW_grass$Dry_tonnes_ha), col="red", main="Density")
qqnorm(HF_NW_grass$Dry_tonnes_ha, col="red", main="qqplot")
qqline(HF_NW_grass$Dry_tonnes_ha)
DTH_trans <- log10(HF_NW_grass$Dry_tonnes_ha)
plot(density(DTH_trans), col="blue", main="transformed density")
qqnorm(DTH_trans, col="blue", main="transformed density")
qqline(DTH_trans)
关于在模型中构建重复度量的最佳方法的第二个问题是:不幸的是,很难确定这种“最佳”模型,但是基于我的知识(主要是通过基因组学大数据),您可能想要使用线性混合效应模型。 例如,这可以通过lme4
R包实现。 由于您似乎已经知道如何在R中构造线性模型,因此应用lme4
函数应该没有问题。
关于是否嵌套两个变量的第三个问题很棘手。 如果您是我,我将从Site
和Block
开始,就像它们是独立因素一样。 但是,如果您知道它们不是独立的,则应该嵌套它们。
我认为您的问题和疑虑是无限的。 我的建议是,只要您有合理的理由,请继续进行。
我同意@David C关于视觉诊断的使用。 简单的QQ图应该有效
# dependent variable.
par(mfrow=c(1,2))
qqnorm(dt[,dry_tonnes_ha]); qqline(dt[,dry_tonnes_ha], probs= c(0.15, 0.85))
qqnorm(log(dt[,dry_tonnes_ha])); qqline(log(dt[,dry_tonnes_ha]), probs= c(0.15, 0.85))
对我来说,日志转换看起来很合理。 您还可以从密度图上看到这一点,它是长尾的并且有点双峰
par(mfrow=c(1,1))
plot(density(dt[,dry_tonnes_ha]))
如果愿意,您也可以使用阵容图(Buja等,2009)。 在这种情况下,我不确定是否需要它们。 提供小插图
library(nullabor)
# this may not be the best X variable. I'm not familiar with your data
dt_l <- lineup(null_permute("dry_tonnes_ha"), dt)
qplot(dry_tonnes_ha, treatment, data = dt_l) + facet_wrap(~ .sample)
对于其他假设,您可以只使用lm
的标准诊断图
lm2 <- lm(log(dry_tonnes_ha) ~ treatment * n_app + site/block, data = dt)
plot(lm2)
在这些情节中,我认为没有什么太麻烦的事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.