[英]Repeated measures anova without homogeneous variance in R?
我有一個動物物種多樣性的數據集,在2年中(每月略有超過3年)每月觀察一次。 我的問題是找出這些樣帶是否具有明顯不同的動物多樣性。 對於這樣一個簡單的問題,ANOVA幾乎是解決問題的一種方法,但是,我認為為了控制相當大的季節性波動,可能有必要采取重復措施ANOVA來納入動物每月變化的變化。
我的數據集在下面,並且還繪制了隨時間變化的動物多樣性圖。
transect<-c(rep("transA",26),rep("transB",25),rep("transC",25))
months<-as.numeric(c(1:26,1:11,13:26,0,2,4:26))
animal_species<-c(2,2,2,4,5,1,5,6,14,8,7,5,5,3,1,2,5,9,8,9,10,10,9,9,7,3,1,3,2,2,3,3,3,7,5,6,5,4,2,2,4,4,5,7,4,5,2,4,2,4,1,1,1,1,3,2,2,3,2,2,1,3,5,3,2,4,2,4,3,6,3,2,2,1,2,1)
animal_df<-data.frame(transect,months,animal_species)
library(ggplot2)
ggplot(animal_df,aes(months,animal_species))+geom_bar(stat='identity')+theme_bw()+facet_grid(transect~.)
但是還有兩個問題違反了ANOVA的假設!
首先是我的數據在樣帶之間的物種數量差異很大,根據Levene的(中位數)檢驗,差異並不相同。
animal_AOV<-aov(animal_species~transect, data=animal_df)
leveneTest(animal_AOV)
# Levene's Test for Homogeneity of Variance (center = median)
# Df F value Pr(>F)
# group 2 10.783 7.889e-05 ***
# 73
第二個原因是數據似乎遵循不同的分布,這很容易從每個樣例的多樣性直方圖中看出,TransA的偏度似乎小於其他兩個。
par(mfrow=c(3,1))
hist(TransA$animal_species,breaks=14,xlim=c(0,14))
hist(TransB$animal_species,breaks=10,xlim=c(0,14))
hist(TransC$animal_species,breaks=10,xlim=c(0,14))
我對社區的問題是:
我是否認為重復測量方法是最明智的分析途徑是正確的?
是否離不開方差分析的假設? 看到有20多個觀測值,並且觀測值的數量相對平衡?
如何對這種分析進行編碼以得出可行的答案(可能考慮到違規情況),在線信息重復測量方差分析的信息似乎與如何組合這種分析達成共識有點矛盾?
我本質上有一個簡單的問題,我的直覺是,當三個樣面彼此顯着不同(至少trackA
具有比其他兩個trackA
更高的多樣性)時,它應該消失。 有人對如何解決這個問題有任何建議嗎?
偏斜可以通過使用計數數據這一事實來解釋。 計數數據大部分時間遵循泊松分布而不是正態分布。 因此,理想情況下,您應將某種泊松回歸與隨機效應結合起來用於重復測量。
有關更廣泛的信息,我建議您與統計學家或Google進行“混合效應泊松回歸模型”
兩個一般性問題:
個人喜好折線圖-然后您可以疊加數據並更有效地比較它們:
ggplot(animal_df,aes(months,animal_species,colour=transect))+
geom_line()+theme_bw()+scale_y_log10()
ggsave("animal1.png")
自從我們在對數刻度上進行繪制以來,零計數數據已經消失了,但這確實使樣條在該刻度上的方差差異不大。
使用lme4
軟件包以適合重復測量/縱向泊松GLMM:
library(lme4)
m1 <- glmer(animal_species~transect+(1|months),
family=poisson,data=animal_df)
檢查是否存在過度分散(<1,所以沒有問題)
deviance(m1)/df.residual(m1) ## 0.65
結果:
# Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [
# glmerMod]
# Family: poisson ( log )
# Formula: animal_species ~ transect + (1 | months)
# Data: animal_df
# AIC BIC logLik deviance df.resid
# 319.3219 328.6449 -155.6610 311.3219 72
# Random effects:
# Groups Name Std.Dev.
# months (Intercept) 0.3003
# Number of obs: 76, groups: months, 27
# Fixed Effects:
# (Intercept) transecttransB transecttransC
# 1.7110 -0.4792 -0.8847
檢查位置比例圖:
png("animal2.png")
plot(m1,sqrt(abs(resid(.)))~fitted(.),
type=c("p","smooth"),col=animal_df$transect)
dev.off()
各組/計數數量之間的方差無明顯變化...
將結果覆蓋到數據上(這次是原始比例):
pp <- animal_df
pp$animal_species <- predict(m1,type="response")
ggplot(animal_df,aes(months,animal_species,colour=transect))+
geom_point()+
geom_line(data=pp)+theme_bw()
ggsave("animal3.png")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.