Esistono due modi per interpretare la tua prima domanda, che si riflettono nei due modi in cui l'hai posta: "Le specie sono associate alle piante ospiti?" e "Le specie sono indipendenti dalle piante ospiti, dato l'effetto della pioggia?"
La prima interpretazione corrisponde a un modello di indipendenza comune , che afferma che specie e ospiti sono dipendenti, ma congiuntamente indipendenti dal fatto che abbia piovuto:
ps h r= ps hpr
dove è la probabilità che un'osservazione cada nella cella dove indica specie, tipo di host e valore della pioggia , è la probabilità marginale di dove collassiamo sulla variabile rain e è la probabilità marginale di pioggia.ps h r( s , h , r )Shrps h( s , h , ⋅ )pr
La seconda interpretazione corrisponde a un modello di indipendenza condizionale , in cui si afferma che specie e ospiti sono indipendenti, indipendentemente dal fatto che abbia piovuto:
ps h | r= ps | rph | r ops h r= ps rph r/ pr
dove è la probabilità condizionale della cella , dato un valore di . ( s , h , r ) rps h | r( s , h , r )r
Puoi testare questi modelli in R ( loglin
funzionerebbe anche bene ma ho più familiarità 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
Sopra, mod1
corrisponde all'indipendenza congiunta e mod2
corrisponde all'indipendenza condizionale, mentre mod0
corrisponde a un modello di indipendenza reciproca . È possibile visualizzare le stime dei parametri utilizzando , ecc. Come al solito, è necessario verificare se i presupposti del modello sono soddisfatti. Nei dati forniti, il modello null si adatta in modo adeguato.ps h r= pSphprsummary(mod2)
Un modo diverso di affrontare la tua prima domanda sarebbe quello di eseguire il test esatto di Fischer ( fisher.test(xtabs(count ~ host + species))
) sulla tabella compressa 2x2 (prima interpretazione) o il test di Mantel-Haenszel ( mantelhaen.test(xtabs(count ~ host + species + rain))
) per le tabelle 2x2 a 2 strati o di scrivere un test di permutazione che rispetti la stratificazione (seconda interpretazione).
Per parafrasare la tua seconda domanda, il rapporto tra specie e ospite dipende dal fatto che abbia piovuto?
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)
Il modello completo mod4
è saturo, ma puoi testare l'effetto in questione osservando la devianza di mod3
come ho fatto sopra.