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