Jak przeprowadzić porównanie post hoc dla terminu interakcji z modelem efektów mieszanych?

11

Pracuję nad zestawem danych w celu oceny wpływu suszenia na aktywność mikrobiologiczną osadów. Celem jest ustalenie, czy wpływ suszenia różni się w zależności od rodzaju osadu i / lub głębokości osadu.

Projekt eksperymentalny jest następujący:

  • Pierwszy czynnik Osad odpowiada trzem rodzajom osadu (kodowany Sed1, Sed2, Sed3). Dla każdego rodzaju osadu próbkowanie przeprowadzono w trzech miejscach (3 miejsca dla Sed1, 3 miejsca dla Sed2, 3 miejsca dla Sed3).
  • Strona jest kodowana: Site1, Site2, ..., Site9.
  • Kolejnym czynnikiem jest hydrologia : w każdym miejscu pobieranie próbek odbywa się na suchym poletku i na mokrym poletku (kodowany na sucho / mokro).

W ramach każdego poprzedniego wykresu próbkowanie przeprowadza się w dwóch głębokościach (D1, D2) w trzech powtórzeniach.

Istnieje łącznie n = 108 próbek = 3 Osady * 3 Miejsca * 2 Hydrologia * 2 Głębokości * 3 powtórzenia.

Korzystam z lme()funkcji w pakiecie R ( pakiet nlme ) w następujący sposób:

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)

Chciałbym przeprowadzić porównanie post-hoc, aby sprawdzić, czy dany termin jest znaczący, czy nie.

Jestem w stanie to zrobić dla prostego efektu głównego (np. Osadu ):

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

Ale glht()funkcja nie działa dla warunków interakcji.

Odkryłem, że następujące elementy mogą działać w przypadku dwukierunkowej 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")))

Czy można zastosować to samo podejście w przypadku trójdrożnej anova? Jakakolwiek pomoc na drodze do porównania post hoc warunków interakcji w tym przypadku byłaby mile widziana.

John Smith
źródło

Odpowiedzi:

3

Czy masz na myśli, że chcesz wykonać wszystkie porównania parami dla tych trzech czynników?

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")))
zablokowane
źródło
Chcę wykonać porównania parami dla dwustronnych warunków interakcji, na przykład „ Hydrologia osadów ”. Jeśli tabela anova wskazuje, że interakcja Hydrologia osadów jest znacząca dla pełnego modelu mod1<-lme(Variable~Sediment*Hydrology*Depth, data=mydata, random=~1|Site/Hydrology/Depth), nie sądzę, że poprawne jest dokonywanie porównań post hoc (w przypadku interakcji Sedyment * Hydrologia) w następujący sposób:mydata$SH<-interaction(mydata$Sediment,mydata$Hydrology) mod2<-lme(Variable~-1+SH, data=mydata, random=~1|Site/Hydrology/Depth) summary(glht(mod2,linfct=mcp(SH="Tukey")))
John Smith