如何使用混合效应模型对交互项进行事后比较?

机器算法验证 混合模式 相互作用 事后 lme4-nlme
2022-02-28 08:46:19

我正在研究一个数据集,以评估干燥对沉积物微生物活动的影响。目的是确定干燥的影响是否因沉积物类型和/或沉积物内的深度而异。

实验设计如下:

  • 第一个因素Sediment对应于三种类型的沉积物(编码 Sed1、Sed2、Sed3)。对于每种类型的沉积物,在三个地点(Sed1 的 3 个地点,Sed2 的 3 个地点,Sed3 的 3 个地点)进行采样。
  • 站点编码:Site1、Site2、...、Site9。
  • 下一个因素是水文:在每个站点内,采样在干区和湿区(编码为干/湿)中进行。

在前面的每一个图中,在两个深度(D1、D2)处进行采样,一式三份。

总共有 n = 108 个样本 = 3 个沉积物 * 3 个地点 * 2 个水文 * 2 个深度 * 3 个重复。

我使用lme()R (nlme包)中的函数如下:

Sediment <- as.factor(rep(c("Sed1","Sed2","Sed3"),each=36))
Site <- as.factor(rep(c("Site1","Site2","Site3","Site4","Site5",            
                        "Site6","Site7","Site8","Site9"),each=12))
Hydrology <- as.factor(rep(rep(c("Dry","Wet"),each=6),9))
Depth <- as.factor(rep(rep(c("D1","D2"),each=3),18))
Variable <- rnorm(108)

mydata <- data.frame(Sediment,Site,Hydrology,Depth,Variable)

mod1 <- lme(Variable ~ Sediment*Hydrology*Depth, data=mydata, 
             random=~1|Site/Hydrology/Depth)
anova(mod1)

我想进行事后比较来测试一个术语是否重要。

我能够为一个简单的主要效果(例如,Sediment)做到这一点:

summary(glht(mod1,linfct=mcp(Sediment="Tukey")))

但该glht()功能不适用于交互项。

我发现以下方法适用于 2-way anova :

mod1 <- lme(Variable~Sediment*Hydrology, data=mydata, 
            random=~1|Site/Hydrology)
mydata$SH <- interaction(mydata$Sediment, mydata$Hydrology)
mod2 <- lme(Variable ~ -1 + SH, data=mydata, random=~1|Site/Hydrology)
summary(glht(mod2, linfct=mcp(SH="Tukey")))

在三向方差分析的情况下是否可以使用相同的方法?在这种情况下,对交互条款进行事后比较的任何帮助将不胜感激。

2个回答

我发现包“lsmeans”非常有用,尤其是当有 ax*z*v 交互时。但是,该软件包仅适用于较新版本的 R。

http://cran.r-project.org/web/packages/lsmeans/vignettes/using-lsmeans.pdf

你的意思是你想对三个因素进行所有成对比较?

mod1<-lme(Variable~Sediment*Hydrology*Depth, data=mydata, random=~1|Site/Hydrology/Depth)
mydata$SHD<-interaction(mydata$Sediment,mydata$Hydrology,mydata$Depth)
mod2<-lme(Variable~-1+SHD, data=mydata, random=~1|Site/Hydrology/Depth)
summary(glht(mod2,linfct=mcp(SHD="Tukey")))