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