簡體   English   中英

帶有塊設計和重復測量的方差分析

[英]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水平UIU測量;在NW ,對Treatment水平ANUIU

我不確定如何處理這種增加的復雜性。 我很想將其分析為2個單獨的站點(每個站點的N_app周期都不相同的事實可能會鼓勵這種方法)。 我可以在這里使用iii型平方和方差分析嗎?

有人向我建議,線性混合建模方法可能是前進的方法,但我對使用它們並不熟悉。

我歡迎您對以上任何想法。 謝謝你的時間。

羅里

要回答關於測試假設的最佳方法的第一個問題。 雖然您嘗試使用在R中實現的另一種統計檢驗的嘗試是合理的,但實際上我只是可視化分布並查看數據是否符合ANOVA假設。 這種方法似乎有些主觀,但在大多數情況下確實有效。

  • 獨立地,均布的(iid)數據:這是一個問題,您可能已經基於對數據的了解程度得出了答案。 可以使用卡方檢驗來確定(或不可以)獨立性。
  • 正態分布數據:使用直方圖/ QQ圖進行檢查。 基於分布,我認為盡管存在雙峰分布,但使用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函數應該沒有問題。

關於是否嵌套兩個變量的第三個問題很棘手。 如果您是我,我將從SiteBlock開始,就像它們是獨立因素一樣。 但是,如果您知道它們不是獨立的,則應該嵌套它們。

我認為您的問題和疑慮是無限的。 我的建議是,只要您有合理的理由,請繼續進行。

我同意@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM