Hay dos formas de interpretar su primera pregunta, que se reflejan en las dos formas en que la hizo: "¿Las especies están asociadas con las plantas hospederas?" y, "¿Son las especies independientes de las plantas hospederas, dado el efecto de la lluvia?"
La primera interpretación corresponde a un modelo de independencia conjunta , que establece que las especies y los huéspedes son dependientes, pero conjuntamente independientes de si llovió:
pshr=pshpr
pshr(s,h,r)shrpsh(s,h,⋅)pr
La segunda interpretación corresponde a un modelo de independencia condicional , que establece que las especies y los huéspedes son independientes dado que llovió:
psh|r=ps|rph|rpshr=psrphr/pr
psh|r(s,h,r)r
Puede probar estos modelos en R ( loglin
también funcionaría bien, pero estoy más familiarizado con esto glm
):
count <- c(12,15,10,13,11,12,12,7)
species <- rep(c("a", "b"), 4)
host <- rep(c("c","c", "d", "d"), 2)
rain <- c(rep(0,4), rep(1,4))
my.table <- xtabs(count ~ host + species + rain)
my.data <- as.data.frame.table(my.table)
mod0 <- glm(Freq ~ species + host + rain, data=my.data, family=poisson())
mod1 <- glm(Freq ~ species * host + rain, data=my.data, family=poisson())
mod2 <- glm(Freq ~ (species + host) * rain, data=my.data, family=poisson())
anova(mod0, mod1, test="Chi") #Test of joint independence
anova(mod0, mod2, test="Chi") #Test of conditional independence
mod1
mod2
mod0
pshr=psphprsummary(mod2)
Una forma diferente de abordar su primera pregunta sería realizar la prueba exacta de Fischer ( fisher.test(xtabs(count ~ host + species))
) en la tabla colapsada 2x2 (primera interpretación) o la prueba Mantel-Haenszel ( mantelhaen.test(xtabs(count ~ host + species + rain))
) para tablas 2x2 estratificadas 2 o escribir una prueba de permutación que respete la estratificación (segunda interpretación).
Parafraseando su segunda pregunta, ¿la relación entre las especies y el huésped depende de si llovió?
mod3 <- glm(Freq ~ species*host*rain - species:host:rain, data=my.data, family=poisson())
mod4 <- glm(Freq ~ species*host*rain, data=my.data, family=poisson())
anova(mod3, mod4, test=”Chi”)
pchisq(deviance(mod3), df.residual(mod3), lower=F)
El modelo completo mod4
está saturado, pero puede probar el efecto en cuestión observando la desviación de mod3
lo que he hecho anteriormente.